npm react-native-screens 4.29.0

3 hours ago

What's changed

This release migrates the Tabs implementation on iOS 26.1+ to the UITab API and extends the Tabs component with several new props: tabBarHiddenAnimationEnabled, tabBarSidebarPreferredPlacement, automaticallyActivatesSearch (backed by UISearchTab) and custom drawable/symbol tab-bar icons with per-slot coloring and per-tab sizing. Header items in Stack v4 gain a visibilityPriority prop on iOS.

It also brings a number of fixes, most notably hardening of the Android fragment lifecycle (R8-safe restoration, orphaned fragment cleanup, no crash during instance teardown) and corrections to form sheet scroll view handling on iOS.

✅ Improvements

  • feat(iOS, Tabs): add tabBarHiddenAnimationEnabled prop (#4627)
  • feat(iOS, Tabs): add tabBarSidebarPreferredPlacement prop to choose between sidebar and tab bar on iOS 27 (#4668)
  • feat(iOS, Tabs): Migrate to UITab API for iOS >= 26.1 (#4675)
  • feat(iOS, Tabs): Use UISearchTab with automaticallyActivatesSearch prop (#4679)
  • feat(Tabs): custom drawable/symbol tab-bar icons — per-slot coloring, per-tab size, indicator sizing, iOS fallback (#4209)
  • feat(iOS, Stack v4): Add visibilityPriority prop to header items (#4709)

🐞 Bugfixes

  • fix(iOS): skip form sheet scroll view frame correction once the screen is invalidated (#4652)
  • fix(iOS, Stack v4): stop form sheet from resizing a recycled scroll view (#4791)
  • fix(iOS, Stack v4): send dismiss event to js when pop animation ends (#4714)
  • fix(iOS, Tabs): prevent tab bar hidden animation on first render (#4673)
  • fix(iOS, Tabs): enforce consistent bottom accessory width (#4792)
  • fix(iOS, Tabs): Hide "Edit" button in sidebar for UITab API (#4804)
  • fix(iOS, Tabs): Reorder tab image configuration calls (#4813)
  • fix(Android): make fragment restoration R8-safe (#4540)
  • fix(Android): don't crash in setupFabric during instance teardown (#4790)
  • fix(Android): restore touch coordinates after covered screens rotate (#4760)
  • fix(Android, Stack v4): don't run header update for a screen detached from its stack (#4498)
  • fix(Android, Stack v4): remove orphaned fragments when ScreenContainer detaches (#4814)
  • fix(Android, Tabs): let touches through the strip a hidden tab bar leaves behind (#4489)

Misc

  • chore(iOS, FabricExample): use scene lifecycle by default (#4676)
  • chore(iOS, TVOSExample): use scene lifecycle by default (#4710)
  • chore(Android, Stack v4): remove dead ScreenModalFragment and helpers (#4795)
  • chore(test): move tabBarSidebarPreferredPlacement test to component integration tests (#4816)

Don't miss a new react-native-screens release

NewReleases is sending notifications on new releases.