NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4846 most downloaded on npm
Most modern mobile touch slider and framework with hardware accelerated transitions
Last release 6 days ago
28 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
366 releases · first in 2014
a11y: let Tab leave the carousel in loop mode ( 944ba56 ), closes #8181
error in delegated loader (eb02f3c), closes #8223One column per quarter.
cards: prevent invalid calc() transform with low perSlideOffset ( d8ff235 ), closes #8211
core: keep module defaults when params come from another realm
zoom: zoom to the tapped point on the first double-tap
loop: stop false "not enough slides" warning with auto + centeredSlides (ec9a170), closes #7586
virtual: render first slide on initial update ( ebdb054 ), closes #8202
build: spawn npx via shell on Windows in emit-types ( 494f7b1 ), closes #8197
Patch release fixing two web-component (and Vue wrapper) regressions introduced by the v14 rewrite.
Patch release fixing two web-component (and Vue wrapper) regressions introduced by the v14 rewrite.
<swiper-container> element initialized with zero slides because slidesEl was resolved to the shadow root instead of the host element (b3b822f), closes #8196<swiper-container navigation>, Vue :navigation="true") stopped rendering the built-in controls (253fa39), closes #8196The only differences you may notice are tighter TypeScript types and a narrower set of supported browsers — see Breaking Changes below.
Swiper v14 is a ground-up TypeScript rewrite of the entire codebase, focused on smaller bundles, more accurate types, and a modern browser baseline. (We skipped v13.)
Upgrading from v12 requires no code changes. Every option, default, event, payload, method signature, and module import (swiper/modules, swiper/react, swiper/vue, swiper/element, …) behaves exactly as before. The only differences you may notice are tighter TypeScript types and a narrower set of supported browsers — see Breaking Changes below.
src/ is now .ts/.tsx. The hand-maintained .d.ts tree (src/types/, the per-module .d.ts files) is gone — declarations are emitted directly from the runtime source with tsc, so the shipped types can no longer drift from the implementation. Several signatures that used to be any are now correctly typed (e.g. getTranslate(): number).Swiper / SwiperOptions / SwiperEvents interfaces. Importing a module (e.g. import { Navigation } from 'swiper/modules') brings its option, method, and event types along with it — mirroring how the runtime already requires registration.node, node16/nodenext, and bundler module resolution, and swiper/bundle exposes every module's options out of the box. Verified by a consumer-simulation test suite.ssr-window dependency was removed and replaced with inline environment guards. Swiper now installs with no transitive runtime deps.swiper.min.js −4.1%, swiper-element.min.js −2.9%, swiper-bundle.min.js −2.3%).@babel/preset-env is a no-op at the v14 baseline. Runtime output is byte-identical (React output is marginally smaller).smoothScroll support flag, the Safari < 16.2 perspective workaround, and the legacy DocumentTouch touch check). iOS/Android-specific quirk handling is kept but simplified. If you need to support older browsers, stay on v12.engines was >= 4.7.0). This does not affect the browser runtime.any-typed access to Swiper internals. These are compile-time only — there are no runtime behavior changes.ssr-window's mock window/document were replaced with inline typeof guards. Server rendering with the React / Vue / Element wrappers is unaffected — they only instantiate Swiper in client-side mount effects. Imperatively calling new Swiper(...) in a pure Node (non-DOM) environment once again no-ops gracefully, matching v12 behavior, and is now locked down by a dedicated SSR runtime test.
Nothing published for this version
Nothing published for this version
avoid duplicate css type resolutions
remove redundant aria-disabled=false from swiper nav button
core: use virtual slides count in onResize when virtual mode is enabled
Nothing published for this version
a11y: fix focus in virtual mode enabled (3055008), closes #8147
autoplay: broken custom delay percentages with pause/resume
data-swiper-slide-index for realIndex when virtual module is enabled (#8142) (bd957f8)autoScroll to thumbs.update type signature (#8146) (5d91e6e)element: fixed reference to nav arrows SVG (0b17ecf), closes #8115
navigation: add styles for when buttons set before slider (4588c57), closes #8085
navigation: tweak nav styles when adjacent
core: fixes issues when slidesOffsetBefore & slidesOffsetAfter are combinated with centeredSlides, slidesPerView & loop (#8038) (74cc297), closes #729
core: fix clickedIndex with grid
core: clear blank slides within loopCreate()
virtual: fix error in Virtual slides (7a53208), closes #7997
core: fix for slideResetTransition events
effect param type (#7945) (42eec07)cards/loop: improve loop behavior with cards effect (9a258d4), closes #7917
docs: correct structure of pagination render functions (b259723), closes #7897 #7896
restore compatibility with ES2019 #7891
cards: fix slides swap issue in loop mode (e012e34), closes #7823
core: add check for HTMLSlotElement support
core: Fixed elementIsChildOf returning false for nested web components (#7762) (8136607), closes #7761
react: react strict mode double initialization errors for thumbs
core: fix mobile input blur on touchstart on different input (66c5dd1), closes #7728
cards: fix cards effect styles leak (0be4c6a), closes #7712
centeredSlides with centeredSlidesBounds don't work correct when slidesPerView: 'auto' and width of the swiper-container bigger then width of slides
pagination: fixed swiper Infinite loop scroll jumping
core: fix loop missing slides with centeredSlides (4847fcb), closes #7584
core: fixed typo in utils/elementIsChildOf
core: fix element child detection (7ec975c), closes #7636
controller: fix 2 way control in element (6eec16b), closes #7628
update navigation.scss to remove SASS Deprecation Warning
a11y: fix slide on focus when loop mode is enabled (fc8ed1a), closes #7540
fix types import (57923db), closes #7529
autoplay: keep 0 transition on touchmove with 0 timeout delay (8ccb08e), closes #7515
zoom: fix zoom pan not preventing slide changes using touch (f73cc2a), closes #7308
a11y: fixed issue with not working "enter" navigation on arrows (aac2dcf), closes #7423
core: fix initial slide index shift with centeredSlides and slidesPerView auto
add optional swiperElementNodeName param to allow more flexible web component usage
effectx: fix Safari issue with rotates even to 90deg (e005b69), closes #7167
core: fixed legacy condition preventing touch move when zoom enabled (2f64043), closes #7137
core: correctly handle loopAdditionalSlides parameter
### Bug Fixes - types: fix eventsPrefix type
autoplay: fix negative autoplay values after stop/start, fix autoplay with free mode (8bef84d), closes #7084
loopAddBlankSlides parameter (b5db223)loopedSlides parameter, add loopAdditionalSlides parameter (d647985)eventPrefix parameter default to swiper (88d463a)hidden (88941a8)Nothing published for this version
Nothing published for this version
Nothing published for this version
core: correctly destroyor create loop on breakpoints (12a44fb), closes #6967
realIndexChange on initialIndex if runCallbacksOnInit is disalbed (48c4e0a), closes #6976slideToClickedSlide when using Element slide slots (af0519c), closes #6958hashchange event (106a3d7), closes #6943Your coding agent can read these notes before it upgrades. Set up the MCP server →