Skip to content

v7.0.0 - Faster React engine & unified core

Latest

Choose a tag to compare

@geosigno geosigno released this 22 Jun 13:49
· 6 commits to master since this release

⚠️ Breaking changes

  • Default scale is now 1.5 (was 1.3 vanilla / 1.4 React). Pass scale={1.3} to keep the previous look.
  • Default delay is now 0.4s in the vanilla build (was 0). Pass delay: 0 to disable the transition.
  • maxTransition semantics are unified across both builds — double-check the motion if you use it.
  • ESM-first packaging. The package targets ESM and bundlers. require() from Node CommonJS is no longer supported (use a dynamic import()); browser <script> (UMD) and bundlers are unaffected.

✨ Improvements & fixes

  • Shared core. The vanilla and React builds are now powered by the same framework-agnostic core (pure parallax math) and shared (browser helpers) modules — a single source of truth. The two builds behave identically and can no
    longer drift apart.
  • SSR-safe. No browser API is touched at import time anymore — works in Next.js / SSR out of the box.
  • Much smoother React performance. No more re-render on every scroll frame: the transform is computed in the animation frame and written directly to the element. This also re-enables the transition on Safari.
  • Fixed: unmounting one parallax image no longer breaks the others (IntersectionObserver lifecycle bug).
  • Fixed (vanilla): passing a CSS selector string now works (it used to throw).
  • TypeScript types resolve under both bundler and node16/nodenext, and the vanilla entry now ships types (simple-parallax-js/vanilla).
  • Tree-shakeable (sideEffects: false); the npm package now ships only the build output.

🔧 Under the hood

  • Upgraded to React 19, TypeScript 6 and Vite 8 (peer dependency stays react >= 17).
  • Tooling moved to Bun + Ultracite (Biome); added CI, package validation (publint + arethetypeswrong) and an OIDC publish workflow.