Skip to content

Releases: software-mansion/react-native-screens

4.16.0

04 Sep 14:04
Compare
Choose a tag to compare

This release introduces support for dark mode in Bottom Tabs on Android, new search bar placements and search bar integration with the toolbar on iOS 26.

Caution

In this release, library installation steps for Android have been modified - please refer to the "Installation" section of README and this PR for more details.

Important

In order to align our library with native iOS 26 behavior, we've decided to change default placement value in RNSSearchBar to 'automatic'. This change will make it easier for users to adopt the new integrated search bar on iOS 26.
Additionally, we've fixed the default value for hideWhenScrolling prop in new architecture to match the old architecture and native UIKit behavior.

What's Changed

🟢 Improvements

  • feat(iOS, Tabs): add shadow color to appearance by @Ubax in #3180
  • feat(iOS, Stack v4): bring back view recycling for ContentWrapper by @kligarski in #3187
  • feat(Android): Support dark mode in android BottomTabs by @kmichalikk in #3167
  • feat(iOS 26, Stack v4): support for new search bar placements, integration with toolbar by @kligarski in #3168
  • feat!(iOS, Stack v4): change search bar related prop defaults by @kligarski in #3186

🐞 Bug fixes

  • fix(Android): add custom fragment factory & modify library installation steps to prevent on-restoration crashes by @Skalakid in #3089

🔢 Misc

  • chore(FabricExample): bump react-native-safe-area-context by @kmichalikk in #3175
  • refactor: review of #3073 - rename few methods, move update logic to shadow state proxy by @kkafar in #3176
  • chore(deps): bump RN to 0.81.1 in lib & apps by @kkafar in #3185
  • chore(iOS): add RNS_IPHONE_OS_VERSION_AVAILABLE macro by @kligarski in #3171

New Contributors

Full Changelog: 4.15.4...4.16.0

4.15.4

28 Aug 07:36
Compare
Choose a tag to compare

Patch version fixing a bug on iOS with back button title disappearing when stack was used in bottom tabs.

What's Changed

  • fix(iOS, Stack v4 + Tabs): back button title disappearing when nested in tab by @kligarski in #3166

Full Changelog: 4.15.3...4.15.4

4.15.3

26 Aug 07:24
Compare
Choose a tag to compare

Patch version fixing bugs related to systemItem on iOS Bottom Tabs.

What's Changed

Full Changelog: 4.15.2...4.15.3

4.15.2

22 Aug 10:06
Compare
Choose a tag to compare

Patch version downgrading Coil library to resolve Android build issues on RN 0.79 #3157

What's Changed

  • fix(android): Fix RNScreens 4.15 build on android by @t0maboro in #3157

Full Changelog: 4.15.1...4.15.2

4.15.1

21 Aug 09:21
Compare
Choose a tag to compare

Patch version with fixing imports for backward compatibility #3153

What's Changed

  • fix(JS): Keep relative imports for backward compatibility by @t0maboro in #3153

Full Changelog: 4.15...4.15.1

4.15.0

20 Aug 13:07
4672e9c
Compare
Choose a tag to compare

This release includes enhancements to bottom tabs, such as support for loading icons from external sources on Android, a refactored tab bar appearance API, and added support for orientation and system items on iOS. It also contains some improvements related to the new experimental native components like new native stack and split view.

What's Changed

🟢 Improvements

  • feat(iOS, Tabs, ScreenStack): orientation for Tabs and ScreenStack by @kligarski in #3014
  • feat(iOS, SplitView): Add support for orientation on SplitViewHost by @t0maboro in #3106
  • feat(android, Tabs): Loading bottom tab icons from external source by @t0maboro in #3143
  • feat(iOS, Tabs): support system items on iOS by @Ubax in #3149
  • feat!(iOS, Tabs): support for appearance types, layouts and states by @kligarski in #3078

🐞 Bug fixes

  • fix(iOS, SplitView): Update the logic for syncing ShadowNode state on transition by @t0maboro in #3073
  • fix(iOS, SplitView): Align width of Stack component with SplitView column before transition by @t0maboro in #3097
  • fix(iOS 26, Stack v4): fix RNSScreen being partially obstructed by UINavigationBar on iOS 26 by @kligarski in #3111
  • fix(iOS, Stack v4): crash on modal dismiss gesture with Pressable by @kligarski in #3133
  • fix(iOS): Disable interactiveContentPopGestureRecognizer by @kmichalikk in #3141
  • fix(iOS): Disable second transition coming from gestures when one is in progress by @kmichalikk in #3142
  • fix(iOS, Tabs): Updated logic for breaking retain cycles by @t0maboro in #3099
  • fix(android, Tabs): Fix loading external resources in release mode by @t0maboro in #3148

🔢 Misc

  • chore(iOS, SplitView): Add more tests for SplitView - NativeStack integration by @t0maboro in #3112
  • chore: Update imports after 0.81 upgrade by @t0maboro in #3145
  • chore: Hide native logs by @Ubax in #3144

Full Changelog: 4.14.1...4.15.0

4.14.1

14 Aug 10:25
Compare
Choose a tag to compare

Patch version with fixing possible runtime crash on web #3132.

What's Changed

Full Changelog: 4.14...4.14.1

4.14

13 Aug 19:01
873f5b2
Compare
Choose a tag to compare

What's Changed

Minor release, bringing:

  • support for RN 0.81,
  • dropping support for RN up to 0.79 (exclusive, i.e. 0.79 is still supported),
  • tons of bug fixes & improvements for experimental bottom tabs implementation,
  • tons of bug fixes & improvements for experimental split view implementation,
  • series of bug fixes covering native-stack behaviour on upcoming iOS 26,
  • a lot more 👇🏻

🟢 Improvements

  • feat(Android, Tabs): pass material theme using context wrapper & update the layout flow by @maciekstosio in #3015
  • feat(Android,Tabs): support activity indicator by @maciekstosio in #3016
  • feat(Android, Tabs): support badge in bottom navigation by @maciekstosio in #3017
  • feat(Android, Tabs): Align styles with material design guidelines by @maciekstosio in #3026
  • feat(Android, Tabs): support ripple color in bottom navigation by @maciekstosio in #3027
  • feat(iOS, SplitView): Add API for organizing columns by @t0maboro in #3003
  • feat(iOS, SplitView): Add event emitter by @t0maboro in #3005
  • feat(iOS, SplitView) Add support for displayModeButtonVisibility prop by @t0maboro in #3010
  • feat(iOS, SplitView): Add support for setting column widths by @t0maboro in #3022
  • feat(Android, Tabs): support visiblity mode in bottom navigation by @maciekstosio in #3028
  • feat(iOS, Tabs): add support for tabBarMinimizeBehavior by @kligarski in #3011
  • feat(iOS, Paper, Tabs): add support for tabBarBlurEffect by @kligarski in #3033
  • fix(iOS, SplitView): Fix SplitViewHostController initialization by @t0maboro in #3054
  • feat(Android, Tabs): Allow to disable active indicator by @maciekstosio in #3053
  • feat(iOS, Paper, Tabs): add support for tabBarMinimizeBehavior on Paper by @kligarski in #3056
  • feat(iOS, SplitView): Add support for fraction for columns widths by @t0maboro in #3043
  • feat(iOS, Tabs): add support for default blur effect value by @kligarski in #3036
  • feat(iOS, Paper, Tabs): export overrideScrollViewContentInsetAdjustmentBehavior, add dynamic changes warning by @kligarski in #3044
  • feat(iOS, Tabs): enable scrollToTop for screens other than root when popToRoot is disabled by @kligarski in #3061
  • feat(iOS, SplitView) Add OnDisplayModeWillChange event by @t0maboro in #3064
  • chore(iOS, Tabs): add prop docs by @kligarski in #3048
  • feat(iOS, Tabs): Expose RNSTabBarController by @t0maboro in #3076
  • fix(Android,Tabs): allow for nesting tabs inside v4 stack by @kkafar in #3084
  • feat(iOS): add an option to prevent dismissal of external modals by @Ubax in #2994
  • docs(Tabs): add tabBarItemBadgeBackgroundColor prop docs for Android by @kligarski in #3094
  • feat(BottomTabs): Add freezeContents prop by @kmichalikk in #3115
  • feat: add support for react-native 0.81 by @kligarski in #3114
  • fix(iOS): Glitching back navigations on iOS 26 by @kmichalikk in #3093
  • fix(iOS, Tabs): Fix more controller handling by @Ubax in #3108

🐞 Bug fixes

  • fix(iOS): provide missing symbols when building w/o Gamma project enabled by @kkafar in #3032
  • fix(iOS, Paper, Tabs): fix badge value on iOS Paper by @kligarski in #3038
  • fix(iOS, Tabs): add temporary workaround to avoid UIScrollEdgeEffect glitch on iOS 26 by @kligarski in #3013
  • fix(iOS, Gestures): Ignore inactive preloaded screens in gestureRecognizer by @kmichalikk in #3045
  • fix(iOS, SplitView): Update showSecondaryToggleButton dynamically by @t0maboro in #3047
  • fix(Android, Tabs): add missing paper annotations by @maciekstosio in #3060
  • fix(iOS, SplitView): Add flag for invalidating preferredDisplayMode by @t0maboro in #3051
  • fix(web): Add web version stubs for native components by @kmichalikk in #3069
  • fix: Remove newly added logs from user land by @theisgroenbech in #3068
  • fix(Android): Differentiate between new and preloaded screens in ScreenStack by @kmichalikk in #3062
  • fix(web): Move BottomTabs.web to bottom-tabs directory by @kmichalikk in #3075
  • fix(iOS, Tabs): fix condition for applying text attributes in Appearance Coordinator by @kligarski in #3081
  • fix(iOS, SplitView): Break the retain cycle between component and controller for SplitViewScreen by @t0maboro in #3083
  • fix(iOS, Tabs): Break retain cycle for bottom tabs screen by @t0maboro in #3085
  • fix(iOS, Stack v4): fix missing search bar on root screen on iOS 26 by @kligarski in #3098
  • fix(Android, Tabs): JS focus change fix by @Ubax in #3091
  • fix(Android,Paper): fix codegened interface for RNSSearchBarManagerDelegate by @kkafar in #3126

🔢 Misc

Read more

4.13.1

17 Jul 22:47
7c68ced
Compare
Choose a tag to compare

Patch version with #3032 fixing possible runtime crash on iOS.

4.13.0

17 Jul 14:39
ca2bf1a
Compare
Choose a tag to compare

This release publishes our alpha versions of implementation of native bottom tabs, native split view (iOS only), and refactor of existing components.

Caution

Please note that these published APIs are experimental, and are mostly meant for downstream navigation library authors, so that they can start working on adoption. These can be used as standalone components however, but keep in mind, that the APIs are not yet stable, and bugs are expected.

Example usage can be found e.g. here.

We're counting on you, as early adopters, to start testing these APIs & give us feedback / ideas how to shape them.

All APIs except bottom tabs, require the library being build with RNS_GAMMA_ENABLED=1 env var set. APIs behind that flag are meant for next major version.

@kkafar: Huge thanks to the whole Screens team @kligarski @t0ms0n00 @maciekstosio @kmichalikk @WoLewicki @kmagiera for the initial work here. Let's keep going 💪🏻

Enjoy!

What's Changed

  • release: 4.13.0 (ca2bf1a)
  • chore: mark all gamma APIs as experimental (d2b9f3b)
  • fix(iOS, Tabs+native-stack): allow for bottom, left, right extended layout edges with native stack header non-translucent (7fc48aa)
  • feat(iOS, Tabs): add support for custom images and templates for tab bar item icons (900fa48)
  • chore(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /docs (4835039)
  • feat(iOS, SplitView): Add support for showsSecondaryOnlyButton (0119cbc)
  • feat(iOS, SplitView): Add support for presentsWithGesture prop (260b3fd)
  • feat(iOS, SplitView): Add support for preferredDisplayMode prop (346d86d)
  • chore: update react-native-is-edge-to-edge to 1.2.1 (089885d)
  • chore(CI): disable e2e workflows temporarily (fee8faf)
  • fix(iOS): Replace calls to UIOffset ctors with calls to UIOffsetMake (cdfd149)
  • chore(CI): add RNS_GAMMA_ENABLED env var for TVOS CI (f9f330d)
  • chore(example): update TVOSExample podfile lock after release & rebase of labs change (1f4493f)
  • fix(iOS): Disable DEFINES_MODULE for stable app version (w/o gamma project enabled) (125be18)
  • Bump lockfiles after rebase on main (b2f40f3)
  • feat(legacy-arch): basic support for legacy architecture for bottom tabs (29dc088)
  • feat(iOS, SplitView): Add support for preferredSplitBehavior prop (24d88f7)
  • chore(CI): add Paper CI for main-labs, use RNS_GAMMA_ENABLED=0 (80f6d26)
  • fix(iOS, Tabs): bring back badgeValue prop (55d8cb8)
  • feat(iOS, Tabs): revert contentInsetAdjustmentBehavior to automatic for ScrollViews (1b6e5c2)
  • feat(iOS, SplitView): Adapt SplitView layout integration to iOS 26 requirements (29ae3bd)
  • feat(Android, Tabs): check the android scope and package scope for android drawable resources (09f98b3)
  • feat(Android,Tabs): Allow fontFamily, fontWeight and fontStyle on android tabs (86279b7)
  • feat(Android, Tabs): Handle font size active/inactive (7e6e07e)
  • feat(Android,Tabs): add prop for android system drawable (339b0d8)
  • fix(Android): add missing setters in view manager interfaces for legacy arch (dd242eb)
  • chore(Android): make the library build with legacy architecture (1edf757)
  • docs: update contributing guide with instructions for Gamma project (f11364e)
  • feat(Android,Tabs): add icon color props (83cf15e)
  • feat(Android,Tabs): add item tittle color props (0435c92)
  • feat(iOS, SplitView) Setup basic logic for custom ShadowNodes (02e699b)
  • feat(iOS, Tabs): add tabBarTintColor (82ab88b)
  • feat(iOS, Tabs): add props to control micro interactions (a684d5f)
  • feat(iOS, Tabs): add support for scrolling ScrollView to top on repeated tab selection (bd98527)
  • feat(iOS, Tabs): add support for popping nested stack to root on repeated tab selection (02eb227)
  • chore(CI): add RNS_GAMMA_ENABLED=1 for new arch build tests (2363d98)
  • feat(Deploy): automatically increment minor version for nightly build (ccfac22)
  • chore(iOS): exclude gamma project files from end-user builds (02d6982)
  • chore(iOS): make the library build with legacy architecture (fc9ea1e)
  • fix(iOS, Tabs): prevent tab bar animation on initial load (08f4fab)
  • chore(iOS, SplitView) Run yarn format for SplitView files (efd9ceb)
  • fix(iOS,Stack) Fix StackContainer import error (2cbfb45)
  • style(iOS, Android): setup CI workflow for linting (835fbf6)
  • feat(Android): add basic support for nesting v4 stack in new bottom-tabs (d62b0a3)
  • refactor(Test): move BottomTabsContainer and StackContainer to shared components folder (8ca3d94)
  • feat(iOS, SplitView): Basic skeleton for SplitView (987b979)
  • feat(iOS): new three-state lifecycle for stack (9fe0a78)
  • feat(iOS, Tabs): animate changes to view controllers (33d309f)
  • feat(iOS, Tabs): add SFSymbol icons, iconColor and titlePositionAdjustment (ccfa831)
  • chore(iOS): Remove empty TARGET_OS_TV block (0af2d81)
  • refactor(example): remove alternative ways of using StackContainer in example (ecfbb76)
  • refactor(example): Use regular functions & format the code (2a7b27b)
  • refactor(iOS): simplify event emitting code in RNSStackScreenController (fe1e40d)
  • feat(Android): basic support for tab bar background color (a201560)
  • feat(iOS): add basic stack management (ed7850a)
  • feat(Android): add support for menu item title (84a6d4b)
  • fix(iOS,Tabs): fix title being errorneously assigned to tabKey (9eb7365)
  • refactor(Android): structurize updates to tab container & run them on as-needed basis (cfc23ac)
  • feat(Android): enable tab switching (14181a6)
  • feat(Android): emit onNativeFocusChange & react to JS focus change (8316c82)
  • refactor(Android): make TabScreenEventEmitter inherit from BaseEventEmitter (118d6e9)
  • chore(Android): add BaseEventEmitter abstract class (32ca419)
  • feat(Android): add lifecycle events support for bottom navigation view impl (a4af202)
  • feat(Android): PoC of tabs for Android (aa75e7c)
  • chore(CI): limit e2e runs to main branch only (e128e36)
  • chore(FabricExample): temp. remove dependency on reanimated & worklets (c1c06c0)
  • fix(iOS): prevent bridging Swift header from being included in umbrella header (e2ea87f)
  • feat(iOS, Tabs): add text styling for tab bar item labels (3891ae3)
  • feat(iOS, Tabs): set tab bar appearance via screen (33267cf)
  • chore(CI): update selected workflows to run or not on main-labs (ecc6d3f)
  • refactor(iOS): hide any C++ symbols from native-public API (cfaba29)
  • feat(example): add simple stack implementation for testing (4004887)
  • refactor(iOS): migrate RNSStackController to Swift (71bee46)
  • refactor(iOS): setup Swift & migrate RNSStackScreenController to Swift (adb6295)
  • fix: add missing components to codegen config (85eb766)
  • chore: allow for blank issues temporarily (b926d7c)
  • feat(iOS,stack): add skeleton code for new stack implementation (b6ec76f)
  • chore(example): use summary component in TabContentView (7e5d297)
  • chore(example): overhaul example to allow more comfortable feature testing (56157ff)
  • feat(bottom-tabs,iOS): change default value for controlledBottomTabs featrue flag to true (3d85d59)
  • fix(bottom-tabs,iOS): disable view recycling for the sake of quick reload (d88e555)
  • chore(example): add dynamic configuration to TestBottomTabs (901383c)
  • feat: introduce featureFlags struct & add controlledBottomTabs flag (8ce2cfa)
  • feat(bottom-tabs,iOS,experiment): implement JS-only tab change, expose experimentControlNavigationStateInJS (2928e28)
  • feat(bottom-tabs,iOS): allow for custom event handlers on BottomTabsScreen (abbb57a)
  • feat(bottom-tabs,iOS): support for placeholder while rendering main tab content (404bb0f)
  • fix(bottom-tabs,iOS): regression in JS tab change - wrong signal sent to controller (ac5fcf6)
  • refactor(bottom-tabs,iOS): prop renaming (avoid conflicts with UIKit) & workarounds for codegen issues (ebda803)
  • feat(bottom-tabs,iOS): throw error on more than single focused tab in debug mode (ea98952)
  • feat(bottom-tabs,iOS): add support for title font size (fe01c99)
  • feat(bottom-tabs,iOS): add support for title (d5e17be)
  • feat(bottom-tabs,iOS): add support for badgeColor (3c4ef70)
  • feat(bottom-tabs,iOS): add support for badgeValue (436d430)
  • refactor(bottom-tabs,iOS): improve communication architecture between native components & add comments (1870f06)
  • feat(bottom-tabs,iOS): add support for freezing tab screens on JS-tab changes (880bea9)
  • feat(iOS): PoC of JS tab changing & lifecycle events (d6b782b)
  • Add support for blurEffect (bb49e27)
  • feat(iOS): native bottom tabs PoC (896c2c6)

Full Changelog: 4.12.0...4.13.0