The 3.4 Direction
If you are cleaning up an older setup, these are the migrations that matter:
- prefer
Transition.Boundary.*for new bounds flows - return layered interpolator output with
content,backdrop, andsurface - prefer scoped interpolator state like
current.layoutsandcurrent.snapIndex - rename
maskEnabledtonavigationMaskEnabled - rename
expandViaScrollViewtosheetScrollGestureBehavior - move new embedded flows to blank stack instead of component stack
If you are already on v3.4 or v3.5 and want the current release changes, read Updating to 3.6 after this page.
Move New Bounds Flows To Transition.Boundary.*
Use explicit boundary ownership:
TSX
Add Transition.Boundary.Target when the measured element is nested inside the owner:
TSX
Return Layered Interpolator Output
3.4 treats the screen container as a layer system. Return slot objects instead of the old flat style keys:
TSX
The older flat keys are legacy compatibility input. New typed code should use layer slots instead:
contentStylebackdropStyleoverlayStyle
If you used older background or backgroundComponent naming from earlier docs, move to surface and surfaceComponent.
Prefer Scoped Interpolator State
In 3.4, the interpolator gives you the full screen states directly:
previouscurrentnextactiveinactive
Prefer reading screen-specific data from those objects:
TSX
New code should prefer:
current.layoutscurrent.snapIndex
In current v3.6 code, use current.animatedSnapIndex when the visual state should follow a live gesture between detents. Use current.snapIndex for the selected target detent.
Rename Old Option Names
Use the 3.4 names:
TSX
Instead of:
TSX
3.4 also adds the current snap-sheet surface:
snapPoints: ["auto", 1]gestureReleaseVelocityScalegestureSnapLocked
Prefer Blank Stack For Embedded Flows
createComponentStackNavigator() is now the legacy path.
If you previously used component stack for embedded or independent flows, move that work to blank stack:
TSX
Blank stack now covers that use case directly and is the preferred path going forward.
For the v3 blank-stack model, including when to use independent and enableNativeScreens={false}, see Independent Stacks.
Hooks Now Target Ancestors Only
useScreenAnimation() and useScreenGesture() accept a target only:
TSX
useScreenGesture() returns a gesture ref for coordination with Gesture Handler. It does not configure gestureEnabled, gestureDirection, or other screen options.
Migration Checklist
- move new bounds work to
Transition.Boundary.Trigger,Transition.Boundary.View, andTransition.Boundary.Target - replace flat interpolator keys with
content,backdrop, andsurface - move
layoutsandsnapIndexreads tocurrent.layoutsandcurrent.snapIndex - rename
maskEnabledtonavigationMaskEnabled - rename
expandViaScrollViewtosheetScrollGestureBehavior - move new embedded flows from component stack to blank stack