What's new
Changelog
v1.1.2Latest2026-06-02
Fixed
- Reflection jank on Safari desktop — reflection container is now promoted to a GPU compositing layer via
translateZ(0)andwill-change: transform, eliminating per-frame rasterization of the gradient mask - SVG reflection filter (
feTurbulence) auto-disabled on Safari to avoid GPU stall - Cards overflow on mobile — the component now measures its container via
ResizeObserverand auto-scalesitemWidth,itemHeight,stackSpacing, andcenterGapproportionally so the carousel fits within the available width. Desktop layout is unchanged (scaleis capped at 1). - Division-by-zero guard added to the scale calculation when
itemWidth={0}is passed.
v1.1.12026-05-29
Fixed
- Major mobile lag on iOS Safari/Brave caused by the SVG
feTurbulencereflection filter — now auto-disabled on touch/narrow screens - Mobile still renders a CSS-only mirrored reflection (gradient mask, no SVG filter, no blend mode) when
enableReflectionis on
v1.1.02026-05-28
Added
enableAudioprop — procedural click sound with stereo panning and velocity sensitivityreduceMotionprop — passtrueto disable all 3D transforms and animations,falseto always enable them, or omit to let the OS accessibility setting decide- SSR-safe
AudioContextwith webkit fallback
Improved
- Smoother drag tracking during fast swipes
- Debounced wheel scroll to prevent multi-step skipping
- Drag handlers now use
scrollX.get()instead ofspringX.get()for more accurate position tracking during fast drags onIndexChangeno longer fires on initial mount
v1.0.02026-05-25
Added
renderImageprop for custom image rendering in the registry component- AI assistant dropdown for component documentation
Improved
- Performance optimizations:
React.memo, flatteneduseTransformchains,useCallback/useMemoon handlers, lazy image loading on non-active cards AnimatePresencereplaces key-based title remount for smoother transitions- Fixed
initialIndexstale closure via ref - Docs page restructured from
/get-startedinto a dedicated/docsroute
Chore
- Added
sync:npmscript to keep npm package in sync
v0.3.02026-02-15
Changed
- Renamed
scrollSensitivitytoscrollThresholdfor clarity. scrollThresholdnow clearly represents the wheel delta required before snapping.
v0.2.02026-02-15
Added
enableScrollprop (enabled by default) for horizontal wheel-based snappingscrollSensitivityprop (default100) to control wheel delta threshold before snapping
Improved
/get-startedusage examples now includeenableScrollandscrollSensitivity/get-startedprops table now documents the new scroll props and defaults- Interactive playground now includes
enableScrolltoggle andscrollSensitivityslider controls
Fixed
- Stable wheel effect dependency handling to avoid changing
useEffectdependency array size between renders
v0.1.42026-02-09
Added
enableClickToSnapprop (enabled by default)- Click-to-snap interaction support
Notes
- Users can disable click snapping by setting
enableClickToSnap={false}
v0.1.32026-02-03
Improved
- Performance optimizations
- Smoother motion handling
v0.1.22026-02-02
Fixed
- Minor bugs
Improved
- README documentation clarity
v0.1.12026-02-02
Initial Release
- Spring-based motion system
- Keyboard, touch, and drag support
- Hardware-accelerated 3D transforms
- Zero layout shift architecture
- Tailwind CSS styling
- Dark mode compatibility
- shadcn CLI and npm install support