unstale

npm / react-native-screens

react-native-screens

What changed in react-native-screens 4, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

28 breaking75 new APIs and options24 behavior and defaults1 tooling82 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

react-native-screens 4210 changes

Breaking changes 28

  • Opaque headers no longer minimize on scroll.

    4.30.0release notes

  • Prevents use of the ViewInstance type.

    4.27.0release notes

  • In Android Stack v4, consume*Inset props now default to true.

    4.26.1release notes

  • Native Stack v5 header items support menus, press handlers, and toggling items with managed flow; their label and key fields were renamed to title and id.

    4.26.0release notes

  • The minimum supported React Native version is now 0.84, so projects using older versions are no longer supported.

    4.26.0release notes

  • This version supports React Native 0.84 and later.

    4.26.0release notesrelease notesrelease notes

  • The web SafeAreaView export changes from a default export to a named export.

    4.26.0release notes

  • The controlledBottomTabs option was removed.

    4.25.0release notes

  • The controlNavigationStateInJS option was removed.

    4.25.0release notes

  • The Tabs API no longer accepts the freezeContents prop.

    4.25.0release notes

  • The library no longer supports the legacy architecture and will most likely fail to build when used with it.

    4.25.0release notes

  • The Tabs event onTabChange was renamed to onTabSelected; update event handlers to use the new name.

    4.25.0release notes

  • The Tabs API no longer accepts the placeholder prop.

    4.25.0release notes

  • A minimum required React Native version is now defined in peerDependencies, affecting which React Native versions satisfy the package dependency.

    4.25.0release notes

  • The Tabs key was renamed from tabKey to screenKey; update code using the old name.

    4.25.0release notes

  • Tabs scrollEdgeEffects moved from TabsScreen to ScrollViewMarker, and iOS now forwards the setting to the inner screen in modals.

    4.25.0release notes

  • TabsAccessory was renamed to TabsBottomAccessory; update references to the renamed component.

    4.25.0release notes

  • Stack v5 on Android can prevent native dismiss support.

    4.24.0release notes

  • The experimental name maxLifecycleState is changed to activityMode.

    4.20.0release notes

  • The experimental component is renamed to StackHost.

    4.20.0release notes

  • Experimental tabs-related components are exported under the Tabs object, dropping the Bottom* prefix.

    4.20.0release notes

  • Changes the default bottom tabs implementation to managed.

    4.19.0release notes

  • Removes the long-deprecated native-stack v5 code from the repository.

    4.19.0release notes

  • Drops support for React Native 0.79 starting with this release.

    4.19.0release notes

  • This property has moved to the menu button item.

    4.18.0release notes

  • The header items API renames label to title.

    4.18.0release notes

  • Android native code and dependencies related to props deprecated by edge-to-edge enforcement were removed.

    4.17.0release notes

  • An experimental submodule is available, and SafeAreaView has moved there from /private.

    4.17.0release notes

New APIs and options 75

  • Tabs.Host gains prominentScreenKey on iOS 27+ so a chosen tab stays visible when the tab bar minimizes.

    4.30.0release notes

  • ScreenStackItem gains unstable_safeAreaEdges, letting a screen override the insets applied on iOS 26+.

    4.30.0release notes

  • Adds a Tabs prop backed by UISearchTab.

    4.29.0release notes

  • Adds custom drawable or symbol tab-bar icons with per-slot coloring, per-tab sizing, indicator sizing, and an iOS fallback.

    4.29.0release notes

  • Adds a Tabs prop to control whether hiding the tab bar is animated.

    4.29.0release notes

  • Adds a Tabs prop to choose between a sidebar and tab bar on iOS 27.

    4.29.0release notes

  • Adds a visibilityPriority prop to Stack v4 header items on iOS.

    4.29.0release notes

  • Exposes the tab item testID as viewIdResourceName.

    4.28.0release notes

  • Adds basic view commands for the iOS Stack v5 header menu.

    4.27.0release notes

  • Android Stack v5 supports sending multiple updates via a view command.

    4.27.0release notes

  • Introduces the experimental iOS ScrollToTopGuard component.

    4.27.0release notes

  • Adds subtitle support to UIMenu header button submenus in Stack v4 on iOS.

    4.27.0release notes

  • The Tabs actionOrigin type adds the programmatic-native variant.

    4.26.0release notes

  • iOS Tabs adds the bottomAccessoryHidden prop.

    4.26.0release notes

  • Nested container integration introduces Container and ContainerItem across Android and iOS Stack and Tabs.

    4.26.0release notes

  • Android Stack v4 adds disable*InsetApplication props.

    4.26.0release notes

  • The standalone FormSheet adds support for fitToContents on iOS and Android.

    4.26.0release notes

  • An experimental standalone FormSheet native component is available on Android and iOS.

    4.26.0release notes

  • The standalone iOS FormSheet adds lifecycle events.

    4.26.0release notes

  • The standalone Android FormSheet adds support for fractional detents.

    4.26.0release notes

  • The Android Native Stack v5 adds support for header scroll flags.

    4.26.0release notes

  • The standalone iOS FormSheet can be configured with an initial detent index.

    4.26.0release notes

  • Native Stack v5 menuItems add keepsMenuPresented.

    4.26.0release notes

  • The standalone iOS FormSheet adds support for largestUndimmedDetentIndex.

    4.26.0release notes

  • Android Native Stack v5 supports menuTitle (headerTitle) in submenus.

    4.26.0release notes

  • The standalone iOS FormSheet adds support for nativeContainerStyle.

    4.26.0release notes

  • The standalone iOS FormSheet emits an event when its detent changes.

    4.26.0release notes

  • The standalone iOS FormSheet adds an event for prevented native dismissal.

    4.26.0release notes

  • The standalone iOS FormSheet adds the preferredCornerRadius prop.

    4.26.0release notes

  • The standalone FormSheet adds support for controlling grabber visibility.

    4.26.0release notes

  • The standalone iOS FormSheet adds support for expanding when scrolled to the edge.

    4.26.0release notes

  • The standalone iOS FormSheet adds support for preventing native dismissal.

    4.26.0release notes

  • Android Native Stack v5 exposes showAsAction for toolbar menu items.

    4.26.0release notes

  • Split adds a colorScheme prop.

    4.26.0release notes

  • TabSelectionPreventedEvent is re-exported from the package root.

    4.26.0release notes

  • Native Stack v5 adds toolbar menu items, including icons, tinting, text props, groups, nested menus, and disabled items.

    4.26.0release notes

  • Android Stack v5 adds basic header support, including header configuration, custom subviews, and a customizable back button.

    4.25.0release notes

  • Tabs now support preventNativeSelection.

    4.25.0release notes

  • Tabs on Android and iOS partially implement RFC-1028.

    4.25.0release notes

  • An experimental ScrollViewMarker component is available.

    4.25.0release notes

  • Tabs on Android now support selectedIcon.

    4.25.0release notes

  • iOS Stack v4 now allows customization of the header background color.

    4.25.0release notes

  • Android Stack v4 adds a prop for opting out of applying an inset to the header.

    4.25.0release notes

  • Tabs on Android now support state-driven appearance.

    4.25.0release notes

  • Tabs on Android add a prop to configure whether the tab bar respects IME insets.

    4.25.0release notes

  • The Tabs operation model adds TabSelectionRejectedEvent and supports rejecting stale state updates.

    4.25.0release notes

  • A usesStableTabsApi compatibility flag was added for the Tabs API.

    4.25.0release notes

  • Menu icons now support imageSource.

    4.24.0release notes

  • An opt-out flag is available for interactions during transitions on iOS 26.

    4.24.0release notes

  • The Split API adds a show(column) command.

    4.24.0release notes

  • Menu icons now support templateSource.

    4.24.0release notes

  • The Split API adds the topColumnForCollapsing prop.

    4.24.0release notes

  • Added a skeleton native implementation for Stack v5.

    4.21.0release notes

  • Added iOS support for xcassets.

    4.21.0release notes

  • Adds accessibilityLabel to BottomTabsScreen.

    4.20.0release notes

  • Adds testId to BottomTabsScreen for identifying it in tests.

    4.20.0release notes

  • Adds accessibilityLabel to Item.

    4.20.0release notes

  • Adds testId to Item for identifying it in tests.

    4.20.0release notes

  • Tabs now allow styling the full tabs background color.

    4.20.0release notes

  • Adds bottomAccessory support for native tabs on iOS.

    4.19.0release notes

  • Adds primaryBackgroundStyle support to iOS SplitView.

    4.19.0release notes

  • Adds the snapshotAfterUpdates property to RNSScreenView.

    4.19.0release notes

  • Adds special effects support for bottom tabs on Android.

    4.19.0release notes

  • Adds an option to change the number of SplitView columns dynamically on iOS.

    4.19.0release notes

  • Adds support for synchronous state updates on Fabric for native stack, behind a feature flag.

    4.19.0release notes

  • Adds a prop to hide the tab bar on iOS and Android.

    4.19.0release notes

  • Adds an experimental prop to override user interface style for iOS Stack and Tabs.

    4.19.0release notes

  • Header bar button items now have a type.

    4.18.0release notes

  • The systemDefault option was added to the iOS SearchBar autoCapitalize prop.

    4.17.0release notes

  • autoFocus was added to the Android Fabric SearchBar spec.

    4.17.0release notes

  • Support was added for glassy form sheets on iOS 26.

    4.17.0release notes

  • An experimental safe area component is available for iOS and Android, handling native headers, bottom tabs, and other safe area cases.

    4.17.0release notes

  • iOS headers now support UIBarButtonItem items.

    4.17.0release notes

  • Support was added for scroll edge effects.

    4.17.0release notes

  • Support was added for UITabBarController.Mode for the iPad sidebar feature.

    4.17.0release notes

Behavior and default changes 24

  • Migrates the iOS Tabs implementation to the UITab API on iOS 26.1 and later.

    4.29.0release notes

  • Changes the default value from the string 'true' to the boolean true.

    4.27.0release notes

  • Removes the explicit React Native peer dependency version from package configuration to improve dependency compatibility.

    4.26.1release notes

  • Tabs integrate with ScrollViewMarker for special effects on iOS and Android.

    4.26.0release notes

  • The Tabs API is now stable, so developers can use it without treating it as experimental.

    4.26.0release notes

  • Android FormSheet coordinates animations from different sources and prioritizes keyboard animation over content resize animation.

    4.25.1release notesrelease notes

  • Tabs on iOS and Android now handle colorScheme for dark mode.

    4.25.0release notes

  • iOS Tabs add proper support for moreNavigationController; its behavior is also decoupled from navigation state.

    4.25.0release notes

  • Bottom tabs now have native RTL support on iOS and Android.

    4.25.0release notes

  • The iOS Stack v5 implementation was aligned with RFC 753.

    4.25.0release notes

  • This iOS Stack v4 option is enabled by default.

    4.24.0release notes

  • Android Stack v5 allows nested containers to be popped via JS.

    4.23.0release notes

  • The default ScreenStackHeaderSubview type on Android is LEFT.

    4.23.0release notes

  • Nested Stack v5 uses the parent container's childFragmentManager.

    4.22.0release notes

  • Stack v5 allows native navigation in nested stacks.

    4.22.0release notes

  • Added handling for preloading screens in Stack v5 on Android.

    4.21.0release notes

  • Android formSheet now supports dynamic content size when fitToContents is selected, and fixes height changes and Y translation when overflowing the screen.

    4.20.0release notes

  • iOS SafeAreaView uses synchronous state updates.

    4.19.0release notes

  • The bottom tabs icons API was refactored, changing how developers configure tab icons.

    4.18.0release notes

  • Support was added for interactiveContentPopGesture on iOS 26.

    4.17.0release notes

  • The hideNavigationBar prop can use native behavior.

    4.17.0release notes

  • The obscureBackground prop can use native behavior.

    4.17.0release notes

  • SplitView updates are synchronous.

    4.17.0release notes

  • The approach for loading external sources for Android tab icons was updated.

    4.17.0release notes

Tooling 1

  • The package's types now support TypeScript's exactOptionalPropertyTypes option.

    4.25.0release notes

Fixes and other changes 82

  • Applies async-loaded icons to tabs that overflow into More on the UITab path.

    4.30.0release notes

  • Prevents legacy and tabs containers on Android from delaying child pressed state.

    4.30.0release notes

  • Updates header subview positions after navigation bar layout on iOS 26+.

    4.30.0release notes

  • Uses the native screen origin as the shadow tree offset.

    4.30.0release notes

  • On iOS 26+, screens are laid out under an opaque navigation bar and inset through the safe area instead of using UIKit's extended-layout frame.

    4.30.0release notes

  • Filters UIKit's didSelectTab: for programmatic selection while More is active.

    4.30.0release notes

  • Fixes broken published types for the tabs host and screen.

    4.30.0release notes

  • Prevents user selection of UISearchTab from being dropped on mount transactions.

    4.30.0release notes

  • On iOS 27+, useHeaderHeight reports the visible height of the bar while it is minimized.

    4.30.0release notes

  • Enforces consistent width for the bottom accessory.

    4.29.0release notes

  • Skips header updates for a screen detached from its stack.

    4.29.0release notes

  • Sends the dismiss event to JavaScript when the pop animation ends.

    4.29.0release notes

  • Hides the Edit button in the sidebar when using the UITab API.

    4.29.0release notes

  • Skips form sheet scroll view frame correction after a screen is invalidated and prevents resizing a recycled scroll view.

    4.29.0release notes

  • Makes Android fragment restoration R8-safe.

    4.29.0release notes

  • Allows touches to pass through the strip left behind by a hidden tab bar.

    4.29.0release notes

  • Prevents a crash in setupFabric during instance teardown.

    4.29.0release notes

  • Removes orphaned fragments when ScreenContainer detaches.

    4.29.0release notes

  • Prevents the tab bar hidden animation from running on first render.

    4.29.0release notes

  • Restores touch coordinates after covered screens rotate.

    4.29.0release notes

  • Uses ViewIdGenerator rather than sequential IDs to identify tab MenuItems.

    4.28.0release notes

  • Prevents adding preloaded and dismissed fragments when popping from an opaque to a translucent screen in Stack v4.

    4.28.0release notes

  • Fixes a use-after-free involving RNSScreenRemovalListener registered as a mounting override delegate.

    4.28.0release notes

  • Appends a transition filler for SwipeRefreshLayout in Stack v4+.

    4.28.0release notes

  • Handles forceLayout so the tab bar is properly laid out after a configuration change.

    4.28.0release notes

  • Android Stack no longer adds a top inset to measured header height when the inset is disabled.

    4.27.0release notes

  • Fixes an Android crash when a header is updated during screen removal.

    4.27.0release notes

  • Stack v4 on iOS falls back to inheriting orientation when it is not defined on the screen.

    4.27.0release notes

  • Adds support for React Native 0.87 and fixes an iOS runtime crash.

    4.27.0release notes

  • Re-layouts the tab bar after an asynchronous icon load to prevent label truncation on iOS 26.

    4.27.0release notes

  • Prevents swapping a view controller's view during a transition.

    4.27.0release notes

  • Fixes transition finalization to prevent screens from unmounting during fast navigation in Stack v5 on Android.

    4.26.2release notes

  • Fixes a potential Android crash with container state restoration in Tabs.

    4.26.2release notes

  • Fixes ShadowState inside SplitView columns after a transition on iOS.

    4.26.1release notes

  • The standalone iOS FormSheet emits onDismiss when dismissal is initiated from JavaScript.

    4.26.0release notes

  • Touch handling for Pressables in transparent iOS headers is fixed.

    4.26.0release notes

  • On Android, the shadow update includes keyboard translationY.

    4.25.2release notes

  • On Android, appearance updates are triggered when the user selects a tab.

    4.25.2release notes

  • Animations coming from different sources are synchronized.

    4.25.1release notes

  • Tabs now handle reattachment to the window.

    4.25.1release notes

  • On iOS Stack v4, tapping a formSheet backdrop now calls the usePreventRemove callback.

    4.25.0release notes

  • On iOS Stack v4, the usePreventRemove callback is now called when tapping a formSheet backdrop.

    4.25.0release notes

  • Applies a workaround for controlling insets on Android BottomSheetBehavior.

    4.24.0release notes

  • Fixes keyboard navigation focus for form sheets on Android Stack v4.

    4.24.0release notes

  • Fixes the lifecycle of the prevent native dismiss callback on Android Stack v5.

    4.24.0release notes

  • On iOS Tabs, the scroll view behavior override is deferred until props are set.

    4.24.0release notes

  • The Transition API now works with Stack v5 on Android.

    4.24.0release notes

  • On Android, the keyboard is dismissed when a FormSheet BottomSheet is presented.

    4.23.0release notes

  • iOS now respects all screen orientations on iPad.

    4.22.0release notes

  • Stack v5 updates its stack model after a native pop.

    4.22.0release notes

  • Fixes updateSelectedTab removing fragments it does not own.

    4.22.0release notes

  • Added compression resistance to iOS Stack button items.

    4.21.0release notes

  • Fixed a Fabric Android crash when sending a key event to open the dev menu.

    4.21.0release notes

  • Fixed Android FormSheet constraint calculations based on screen size.

    4.21.0release notes

  • Accounted for the initial translationY in the default Android FormSheet animation.

    4.21.0release notes

  • Fixed FullWindowOverlay not mounting when fullScreenModal is presented.

    4.21.0release notes

  • Fixed possible Mac Catalyst build issues caused by implicit conversions.

    4.21.0release notes

  • Fixed modal content flicker during the enter transition on iPad.

    4.21.0release notes

  • Removed code that disabled interaction for modals.

    4.21.0release notes

  • Fixed Screens reattaching incorrectly when swiping back quickly on iOS.

    4.21.0release notes

  • Requests a layout pass after loading an image from source in iOS Tabs.

    4.21.0release notes

  • Fixed tvOS compilation in split-view.

    4.21.0release notes

  • Fixes an iOS Stack issue where a centered header subview was not visible or was misaligned.

    4.20.0release notes

  • Fixes library typing for React 19.

    4.20.0release notes

  • Fixes an ill-formed program caused by using static_assert(false).

    4.20.0release notes

  • Restores gestureResponseDistance support on iOS 26.

    4.19.0release notes

  • ScreenStackItem now considers the default value for headerConfig.hidden.

    4.19.0release notes

  • ScreenStackItem now considers the default value for stackPresentation.

    4.19.0release notes

  • iOS menu items now accept multiple attributes.

    4.18.0release notes

  • Prevents freezing from unmounting native components.

    4.18.0release notes

  • Tab title font configuration now uses the default UITabBarItem title font as its base.

    4.18.0release notes

  • Fixes tabBarTintColor behavior on iPadOS.

    4.18.0release notes

  • Fixes handling of variable icons in header items.

    4.18.0release notes

  • Fixes a build error in release mode caused by imageLoader being undefined.

    4.17.1release notes

  • Content pop with horizontal scrolling is fixed.

    4.17.0release notes

  • iOS 26 Stack v4 content rendering under UINavigationBar is fixed.

    4.17.0release notes

  • The fullScreenSwipeEnabled prop is available again on iOS.

    4.17.0release notes

  • Defaults for obscureBackground and hideNavigationBar are now consistent in iOS Stack v4.

    4.17.0release notes

  • Defaults for obscureBackground and hideNavigationBar are now consistent in iOS Stack v4.

    4.17.0release notes

  • Custom screen swipe transitions are fixed.

    4.17.0release notes

  • Canceling search on Android is fixed.

    4.17.0release notes

  • Dismissing transparent modals no longer has a delay.

    4.17.0release notes