New Features
Auto Snap Points with Intrinsic Sizing
Sheets now supportsnapPoints: ["auto"] for automatic content sizing. No need to hardcode dimensions:
layouts.content in your interpolator.
Boundary Components for Shared Elements
Explicit boundary components replace the deprecatedsharedBoundTag prop. They’re clearer and more composable:
Transition.Boundary.Target for registering animation targets.
Boundary Component Factory
Create custom boundary components wrapping your own components:Navigation Zoom for Fullscreen Shared Transitions
Animate shared elements to/from fullscreen with the newbounds().navigation.zoom() method:
navigationMaskEnabled for Built-in Masking
Instead of manually setting upTransition.MaskedView, use the new navigationMaskEnabled option:
Ancestor Targeting in Gesture Hooks
Control which navigator level owns a gesture with ancestor targeting:useScreenAnimation().
Velocity-Based Release Behavior
Fine-tune how gestures respond to release velocity:gestureReleaseVelocityScale: Multiplier for release velocity (default: 1)gestureReleaseVelocityMax: Cap for release velocity in pixels/second
Sheet Scroll Gesture Behavior
ReplaceexpandViaScrollView boolean with explicit behavior control:
"expand-and-collapse": Both expand and collapse work at scroll boundary"collapse-only": Only collapse works; expand requires dead space at top
Surface Slot with Custom Component
Render custom surface layers withsurfaceComponent:
Deferred First Frames
Return"defer" from interpolators to delay animation until bounds snapshot is available:
Experimental Mount Animation
Opt-in animation on initial mount:Bounds Group Option
Organize bounds into groups for paged or detail flow layouts:Improvements
Slot-Based Return Format
All custom animations now use a cleaner, more modular slot-based return format:contentStyle/backdropStyle format (still supported but deprecated).
Deprecations
sharedBoundTag on Transition.View/Pressable
ThesharedBoundTag prop is deprecated. Use Transition.Boundary.View and Transition.Boundary.Pressable instead:
Transition.MaskedView
Transition.MaskedView is deprecated. Use navigationMaskEnabled for new code:
Flat Return Format (contentStyle/backdropStyle)
The flatcontentStyle/backdropStyle return format is deprecated:
expandViaScrollView Boolean
Replaced bysheetScrollGestureBehavior:
Migration Path
Coming from v3.3? See the Migrating to 3.4 guide for step-by-step instructions.Breaking Changes
None. Version 3.4 is fully backward compatible with 3.3. All deprecated APIs continue to work, but we recommend migrating to the new patterns for better code clarity and future compatibility.Performance Notes
- Auto snap points require additional layout measurements but are optimized for minimal overhead
- Navigation zoom uses GPU-accelerated transforms for smooth fullscreen animations
- Deferred frames prevent unnecessary redraws until bounds are ready
- Ancestor targeting helps optimize gesture processing in complex hierarchies
