# Swiper changelog > Touch slider with hardware-accelerated transitions, for web and mobile. - Vendor: idangero.us - Category: Frameworks & Libraries - Official site: https://swiperjs.com - Tracked by: What's New (https://whatsnew.fyi/product/swiper) - Harvested from: GitHub (nolimits4web/swiper) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v14.1.0 - Date: 2026-08-06 - Version: v14.1.0 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v14.1.0 - Permalink: https://whatsnew.fyi/product/swiper/releases/v14.1.0 - **fixed** — keep module defaults when params come from another realm - **fixed** — make elementOffset viewport-relative again - **fixed** — preserve module options in breakpoints ###### Bug Fixes * **core:** keep module defaults when params come from another realm ([4bb6caf](https://github.com/nolimits4web/Swiper/commit/4bb6cafebcfdeb736695b49b6f2d94d4265a4ecf)) * **core:** make elementOffset viewport-relative again ([1115f9e](https://github.com/nolimits4web/Swiper/commit/1115f9e73b65e87c30fcc8e005929fb41c86efc0)), closes [#8209](https://github.com/nolimits4web/Swiper/issues/8209) * **types:** preserve module options in breakpoints ([d598495](https://github.com/nolimits4web/Swiper/commit/d598495ede2a0dc7aad3f44b7bf7afdbdc98a48b)), closes [#8207](https://github.com/nolimits4web/Swiper/issues/8207) ### v14.0.7 - Date: 2026-07-28 - Version: v14.0.7 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v14.0.7 - Permalink: https://whatsnew.fyi/product/swiper/releases/v14.0.7 - **fixed** — Zoom to the tapped point on the first double-tap ###### Bug Fixes * **zoom:** zoom to the tapped point on the first double-tap ([e0d4ed5](https://github.com/nolimits4web/Swiper/commit/e0d4ed5214c267f26650ff4029b3eb6131978865)) ### v14.0.5 - Date: 2026-07-09 - Version: v14.0.5 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v14.0.5 - Permalink: https://whatsnew.fyi/product/swiper/releases/v14.0.5 - **fixed** — render first slide on initial update in virtual mode ###### Bug Fixes * **virtual:** render first slide on initial update ([ebdb054](https://github.com/nolimits4web/Swiper/commit/ebdb0541374fbd2ee109aa05e87a430161692503)), closes [#8202](https://github.com/nolimits4web/Swiper/issues/8202) ### v14.0.2 - Date: 2026-07-07 - Version: v14.0.2 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v14.0.2 - Permalink: https://whatsnew.fyi/product/swiper/releases/v14.0.2 - **fixed** — Spawn npx via shell on Windows in emit-types - **fixed** — Divide fraction and progressbar pagination total by grid rows - **fixed** — Bind Thumbs tap handler when thumbs swiper is set after init in React ###### Bug Fixes * **build:** spawn npx via shell on Windows in emit-types ([494f7b1](https://github.com/nolimits4web/Swiper/commit/494f7b14547ba4c7ce3f2b758d8a5b1bc9724f9f)), closes [#8197](https://github.com/nolimits4web/Swiper/issues/8197) * **pagination:** divide fraction/progressbar total by grid rows ([edfbfa5](https://github.com/nolimits4web/Swiper/commit/edfbfa553a8d7188261efe0a57d73b3b71359904)) * **react:** bind Thumbs tap handler when thumbs swiper is set after init ([4fb72b9](https://github.com/nolimits4web/Swiper/commit/4fb72b92921da24ef11e764025bf05666c814cf3)), closes [#8198](https://github.com/nolimits4web/Swiper/issues/8198) ### v14.0.1 - Date: 2026-06-29 - Version: v14.0.1 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v14.0.1 - Permalink: https://whatsnew.fyi/product/swiper/releases/v14.0.1 - **fixed** — Restore slide detection in web component by resolving slidesEl to the host element instead of the shadow root - **fixed** — Render navigation, pagination, and scrollbar when set as boolean params in web component and Vue wrapper Patch release fixing two web-component (and Vue wrapper) regressions introduced by the v14 rewrite. ###### Bug Fixes * **core:** restore slide detection in web component — the `` element initialized with zero slides because `slidesEl` was resolved to the shadow root instead of the host element ([b3b822f](https://github.com/nolimits4web/Swiper/commit/b3b822f98edcd4ebfc9816a6b8924225bac3f5dd)), closes [#8196](https://github.com/nolimits4web/swiper/issues/8196) * **element:** render navigation/pagination/scrollbar when set as boolean params — bare boolean usage (``, Vue `:navigation="true"`) stopped rendering the built-in controls ([253fa39](https://github.com/nolimits4web/Swiper/commit/253fa399f278b0edc9f74cec37f0df5edbe28ea9)), closes [#8196](https://github.com/nolimits4web/swiper/issues/8196) ### v14.0.0 - Date: 2026-06-26 - Version: v14.0.0 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v14.0.0 - Permalink: https://whatsnew.fyi/product/swiper/releases/v14.0.0 - **changed** — Rewrote the entire codebase in TypeScript for smaller bundles and more accurate types - **changed** — Raised browser baseline to Chrome/Edge 110+, Safari 16.4+ (iOS 16.4+), and Firefox 110+ - **changed** — Removed legacy DOM-compat helpers and below-baseline feature detection, reducing shared DOM utils by approximately 28% - **changed** — Minified bundle sizes decreased by 2-4% (swiper.min.js −4.1%, swiper-element.min.js −2.9%, swiper-bundle.min.js −2.3%) - **removed** — Removed ssr-window as a runtime dependency and replaced with inline environment guards - **removed** — Removed Babel from the build process in favor of TypeScript's JSX transform - **changed** — Hand-maintained .d.ts type declarations are now emitted directly from TypeScript source - **added** — Per-module type augmentation allows importing a module to bring its option, method, and event types - **changed** — Type resolution now works correctly under classic node, node16/nodenext, and bundler module resolution modes - **changed** — Increased Node.js requirement to >= 20.19.0 for building and developing against the package - **fixed** — Several type signatures that used to be any are now correctly typed (e.g. getTranslate(): number) 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. ###### Highlights - **Single TypeScript source of truth.** `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`). - **Per-module type augmentation.** Each module augments the central `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. - **More reliable type resolution.** Types now resolve correctly under classic `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. - **Zero runtime dependencies.** The `ssr-window` dependency was removed and replaced with inline environment guards. Swiper now installs with no transitive runtime deps. - **Smaller minified bundles.** Legacy DOM-compat helpers and below-baseline feature detection were removed. The shared DOM utils shrank ~28%, and the main builds are ~2–4% smaller minified (`swiper.min.js` −4.1%, `swiper-element.min.js` −2.9%, `swiper-bundle.min.js` −2.3%). - **Babel removed from the build.** TypeScript now handles the JSX transform for the React wrapper, and `@babel/preset-env` is a no-op at the v14 baseline. Runtime output is byte-identical (React output is marginally smaller). ###### Breaking Changes - **Browser baseline raised to the last ~2 years of evergreen browsers.** Swiper v14 targets **Chrome / Edge 110+, Safari 16.4+ (iOS 16.4+), and Firefox 110+**. Code paths and feature detection for older browsers were removed (e.g. the `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. - **Node.js >= 20.19.0** is now required to build/develop against the package (`engines` was `>= 4.7.0`). This does not affect the browser runtime. - **Type-level changes.** Stricter types may surface latent issues in code that previously relied on `any`-typed access to Swiper internals. These are compile-time only — **there are no runtime behavior changes.** ###### SSR `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. ### v12.2.0 - Date: 2026-05-27 - Version: v12.2.0 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v12.2.0 - Permalink: https://whatsnew.fyi/product/swiper/releases/v12.2.0 - **fixed** — Avoid duplicate CSS type resolutions - **fixed** — Guard against stale event listeners in onTouchEnd and onTouchMove - **fixed** — Guard all event handlers against stale invocations on destroyed swiper - **fixed** — Support boolean as controller type ###### Bug Fixes * avoid duplicate css type resolutions ([aaf6014](https://github.com/nolimits4web/Swiper/commit/aaf60141d2af8a0dcfd4f06951de4e606c7a59d5)) * **core:** guard against stale event listeners in onTouchEnd and onTouchMove ([00fe610](https://github.com/nolimits4web/Swiper/commit/00fe610b034edba92ef09a3f78b521673871b5f5)) * **core:** guard all event handlers against stale invocations on destroyed swiper ([3b2b85f](https://github.com/nolimits4web/Swiper/commit/3b2b85f904789b14628f65c89edb4991c3bf5859)) * **types:** support boolean as controller type ([b10f9e0](https://github.com/nolimits4web/Swiper/commit/b10f9e0d6d62303d16d9364be93ab454f6c3d038)) ### v12.1.4 - Date: 2026-04-29 - Version: v12.1.4 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v12.1.4 - Permalink: https://whatsnew.fyi/product/swiper/releases/v12.1.4 - **fixed** — Remove redundant aria-disabled=false from swiper nav button - **added** — Add TypeScript declarations for CSS files - **added** — Expose isFullyVisible in SwiperSlide render props for React ###### Bug Fixes - remove redundant aria-disabled=false from swiper nav button ([#8176](https://github.com/nolimits4web/Swiper/issues/8176)) ([6730929](https://github.com/nolimits4web/Swiper/commit/673092978a54ee3aff82633dd50880011a2a362f)) ###### Features - **package:** add TS declarations for CSS files ([ea3081b](https://github.com/nolimits4web/Swiper/commit/ea3081b8c5863b297a240a0698804121c9e6c118)), closes [#8055](https://github.com/nolimits4web/Swiper/issues/8055) - **react:** expose isFullyVisible in SwiperSlide render props ([#8175](https://github.com/nolimits4web/Swiper/issues/8175)) ([3af0002](https://github.com/nolimits4web/Swiper/commit/3af0002acfc18a5ec450b3a2354d6187a64797e8)) ### v12.1.3 - Date: 2026-03-24 - Version: v12.1.3 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v12.1.3 - Permalink: https://whatsnew.fyi/product/swiper/releases/v12.1.3 - **fixed** — Use virtual slides count in onResize when virtual mode is enabled - **fixed** — Round down slidesPerView before calculating number of slides in grid - **added** — Add navigation button slots to element ###### Bug Fixes - **core:** use virtual slides count in onResize when virtual mode is enabled ([#8163](https://github.com/nolimits4web/Swiper/issues/8163)) ([4400083](https://github.com/nolimits4web/Swiper/commit/44000834d05ac339a9c4dfbaaa3f60c1a0631cff)) - **grid:** round down `slidesPerView` before calculating number of slides ([#8172](https://github.com/nolimits4web/Swiper/issues/8172)) ([49a55ab](https://github.com/nolimits4web/Swiper/commit/49a55ab2c89c63679cdd21d389ec7ef9d9d375f4)) ###### Features - **element:** add navigation button slots ([cc82241](https://github.com/nolimits4web/Swiper/commit/cc8224177d5f577b672e37b9386f7388d71ba3c3)) ### v12.1.2 - Date: 2026-02-18 - Version: v12.1.2 - Original notes: https://github.com/nolimits4web/swiper/releases/tag/v12.1.2 - Permalink: https://whatsnew.fyi/product/swiper/releases/v12.1.2