| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 4.25.0 source code.tar.gz | 2026-05-11 | 9.2 MB | |
| 4.25.0 source code.zip | 2026-05-11 | 10.0 MB | |
| README.md | 2026-05-11 | 22.6 kB | |
| Totals: 3 Items | 19.2 MB | 0 | |
What's Changed
Minor release, bringing golden version of Tabs API. Unless we get your negative feedback, we plan to stabilise Tabs API in next minor.
[!important] 4.25.0 no longer supports the legacy architecture. Most likely, the library will simply fail to build.
This release brings important Tabs API changes in JS and native layer, required for stabilisation of the API. Downstream libraries are already in advanced stage of adaptation to these changes. Please track the releases of your navigation solution for compatibility remarks.
Improvements
- feat(Tabs): remove
freezeContents&placeholderprops by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3673 - feat(Android, Tabs): Add support for selectedIcon on Android by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3633
- chore: define min. required
react-nativeversion inpeerDependenciesby @kkafar in https://github.com/software-mansion/react-native-screens/pull/3691 - chore(readme): update supported RN versions in readme (drop legacy arch) by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3692
- feat: add
ScrollViewMarkerexperimental component by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3674 - chore: rename
TabsAccessorytoTabsBottomAccessoryby @kligarski in https://github.com/software-mansion/react-native-screens/pull/3712 - chore(iOS, Split): align naming for native components by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3695
- feat(Android, Tabs): State-driven appearance on Android by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3714
- feat(iOS, Tabs): handle
colorScheme(dark mode) by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3716 - feat(Tabs): add native RTL support for bottom tabs on iOS & Android by @ahmedawaad1804 in https://github.com/software-mansion/react-native-screens/pull/3613
- feat(Android): configure
RNSLogutility by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3718 - feat(iOS): configure
RNSLogutility by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3727 - chore(Android): disable default RNSLog activation in debug mode by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3730
- feat(iOS, Stack v4): Use new invalidation callback on Fabric by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3728
- feat(JS) -
RNSLogutility by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3733 - feat(iOS, Tabs): Migrate tabs to new invalidate callback on Fabric by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3729
- feat(Tabs, Android): handle
colorScheme(dark mode) by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3723 - refactor(Tabs): Rename
tabKeytoscreenKeyby @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3750 - refactor(JS, Tabs): Cleanup API following design doc by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3748
- feat(Android, Tabs): add prop to configure whether tab bar respects IME insets by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3740
- refactor(example): rename leftover symbols mentioning "bottom tabs" by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3756
- refactor(Tabs, Android): Split
TabsHostintoTabsHostandTabsContainerby @kkafar in https://github.com/software-mansion/react-native-screens/pull/3766 - fix(iOS, StackV5): Fix default props type by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3800
- feat(Android, Tabs): partially implement RFC-1028 for Tabs on Android by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3776
- feat(iOS, Tabs): partially implement RFC-1028 for Tabs on iOS by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3781
- chore: make all exports from v5 component modules explicit by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3808
- feat(iOS, Tabs): Add proper support for
moreNavigationControlleron iOS by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3785 - refactor(tabs): rename
onTabChangeevent toonTabSelectedby @kkafar in https://github.com/software-mansion/react-native-screens/pull/3789 - feat(Tabs): update operation model, add
TabSelectionRejectedEventand support rejecting stale state updates by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3794 - feat(Tabs): add preventNativeSelection support by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3838
- feat(Android, Stack v5): add basic support for header by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3753
- chore(Tabs): remove isFocused prop from TabsScreen codegen spec by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3863
- refactor(Tabs, iOS): decouple moreNavigationController from navigation state by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3875
- feat(iOS, Stack v4): allow background color customization by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3833
- chore: bump RN to 0.85.0 by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3865
- feat(Android, Stack v4): Add prop for manual opt-out from applying inset to header by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3835
- feat(iOS, Stack v5): Align Stack implementation with RFC 753 by @kmichalikk in https://github.com/software-mansion/react-native-screens/pull/3774
- refactor(iOS, Tabs): Migrate scrollEdgeEffects from TabsScreen to ScrollViewMarker by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3895
- chore(types): enable
exactOptionalPropertyTypessupport by @YevheniiKotyrlo in https://github.com/software-mansion/react-native-screens/pull/3719 - feat(Android, Stack v5): handle header configuration and custom subviews by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3796
- feat(Android, Stack v5): add back button to header with customization by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3883
Bug fixes
- fix(iOS, Modal): Filter-out obsolete state updates from JS by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3760
- fix(iOS, Stack v4): Fix
usePreventRemovecallback not called when tapping formSheet backdrop by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3771 - fix(iOS, Stack v4): hide back button when root screen is replaced with
popanimation by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3770 - fix(iOS, Tabs): fix diverging behavior of JS updates requesting
moreNavigationControlleron various Apple platforms by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3813 - fix(iOS): forward scrollEdgeEffects to inner screen in modals (#3816) by @maxencehenneron in https://github.com/software-mansion/react-native-screens/pull/3825
- fix(Android, Tabs): fix issue with badges being assigned to wrong menu items by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3799
- fix(Android, Stack v4): Add heuristic for applying inset only on top-level header by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3793
- fix(android): Fix Activity memory leak in ScreenDummyLayoutHelper due to unreleased view references and missing lifecycle cleanup by @l2hyunwoo in https://github.com/software-mansion/react-native-screens/pull/3638
- fix(Android, Stack v4): Clear supportActionBar on fragment removal to prevent ScreenStackFragment leak by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3867
- fix(Tabs, iOS): reconcile navigation state on implicit UIKit selection changes by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3877
- fix(ios): guard +load with #ifdef RCT_DYNAMIC_FRAMEWORKS by @DavidDuarte22 in https://github.com/software-mansion/react-native-screens/pull/3828
- fix: use path-based menuId to prevent collisions in nested submenus by @chrism in https://github.com/software-mansion/react-native-screens/pull/3762
- fix(Android, Stack): dispatch lifecycle events when parent is not a ScreenFragment by @collectioneur in https://github.com/software-mansion/react-native-screens/pull/3854
- fix(iOS, Stack v4): Fix reattaching screens which have preventNativeDismiss set by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3886
- fix(iOS, Tabs): prevent double event on more tab navigation by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3906
Misc
- chore(Android, Tabs): move tabs files to separate packages by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3661
- chore(CI): remove workflows related to the legacy architecture by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3686
- chore(deps): bump tar from 7.5.7 to 7.5.9 in /FabricExample by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3687
- chore(deps): bump basic-ftp from 5.0.5 to 5.2.0 by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3688
- chore: Update lockfiles after 4.24 release by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3699
- chore: Update workflows after labels sync by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3701
- docs: add banner rotator by @p-malecki in https://github.com/software-mansion/react-native-screens/pull/3696
- docs: add analytics to banner by @p-malecki in https://github.com/software-mansion/react-native-screens/pull/3703
- chore: Move iOS runners to macos-26-xlarge instances by @kmichalikk in https://github.com/software-mansion/react-native-screens/pull/3671
- chore(deps): bump fast-xml-parser from 4.5.0 to 4.5.4 in /TVOSExample by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3705
- chore(deps): bump fast-xml-parser from 4.5.1 to 4.5.4 in /Example by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3706
- chore(deps): bump fast-xml-parser from 4.5.2 to 4.5.4 by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3707
- chore(deps): bump minimatch from 3.1.2 to 3.1.5 in /FabricExample by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3693
- chore: Remove Paper Example by @kmichalikk in https://github.com/software-mansion/react-native-screens/pull/3710
- chore: Update TVOSExample to RN 0.84 by @kmichalikk in https://github.com/software-mansion/react-native-screens/pull/3713
- refactor(Android): logNotAvailable refactor on Android by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3697
- chore(deps): bump fast-xml-parser from 4.5.2 to 4.5.4 in /FabricExample by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3715
- chore(deps): bump minimatch from 3.1.2 to 3.1.5 in /TVOSExample by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3717
- chore: Simplify single test import in App.tsx by @kmichalikk in https://github.com/software-mansion/react-native-screens/pull/3678
- fix(examples): Convert object to array for props.scenarioGroup and props.scenario by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3720
- chore(deps): aggregate dependabot updates by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3737
- refactor(Tabs): Split JS components and specs internally by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3722
- chore(deps): bump tar from 7.5.9 to 7.5.11 in /FabricExample by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3738
- fix(Examples): Fix default icon provider by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3742
- chore(Android): Remove android/src/paper directory and related code by @kmichalikk in https://github.com/software-mansion/react-native-screens/pull/3743
- chore(JS, Tabs): Refactor file structure for components in Tabs by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3745
- chore: Remove Paper related code & annotation from Tabs by @kmichalikk in https://github.com/software-mansion/react-native-screens/pull/3746
- chore: format SplitView conversions by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3749
- chore(JS, Tabs): Remove dead code around
onLifecycleStateChangeevent by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3752 - chore(Android): Remove BottomSheet-related Paper-specific code by @kmichalikk in https://github.com/software-mansion/react-native-screens/pull/3751
- chore(JS):
RNSLogremove from public API by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3744 - chore(deps): bump tar from 7.5.10 to 7.5.11 by @dependabot[bot] in https://github.com/software-mansion/react-native-screens/pull/3754
- fix(Examples): Fix TestBottomTabsOrientation by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3757
- test(e2e, Fabric): add e2e tests for issue/PR examples 748..758, remove Test713 by @kligarski in https://github.com/software-mansion/react-native-screens/pull/2932
- docs: remove paradise banner by @p-malecki in https://github.com/software-mansion/react-native-screens/pull/3787
- refactor(example): align TabsContainer structure with StackContainer by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3759
- refactor(example): align TabsContainer with StackContainer & retire TabsConfigProvider by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3764
- refactor(example): remove TabsConfigProvider/TabsAutoconfig infrastructure by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3765
- chore(readme): fix link to example usage in FullWindowOverlay section by @retyui in https://github.com/software-mansion/react-native-screens/pull/3779
- chore(Android, Stack): remove legacy architecture related code by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3775
- chore(Android, SafeArea): remove legacy architecture related code by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3778
- chore: review suggestions for [#3759] by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3790
- chore(deps): aggregate dependabot updates by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3810
- chore: exclude AI agent config files from repo by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3820
- fix(Example): fix Test3492 after changes to TabsContainer by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3823
- chore: remove local changelog requirement from PR template by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3829
- fix(example): correct TabsHostConfig type to exclude navState by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3830
- refactor(example): use path aliases for imports in example apps by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3821
- refactor(tabs): extract TabsContainerItem and memoize tab screens by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3827
- chore: Bump RN to 0.85.0-rc.7 by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3822
- chore(Android): remove legacy architecture related code by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3836
- chore(iOS, SafeArea): legacy architecture related code removal by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3837
- chore(iOS, Stack): remove legacy architecture related code by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3788
- chore(tests): Tab-bar-hidden test refactor with new manual scenario by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3840
- refactor(tests): reorganizing test-tabs-color-scheme and adding scenario by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3844
- refactor(tests): test-tabs-tab-bar-hidden scenario update by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3846
- chore(deps): Aggregate dependabot updates by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3853
- chore(test): new test-tabs-minimize-behavior-ios with scenario by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3852
- refactor(tests): reorganizing test-tabs-layout-direction plus scenario by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3845
- refactor(tests): test-tabs-color-scheme test rename to test-tabs-tab-bar-color-scheme by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3857
- chore(test): new test-tabs-controller-mode-ios with scenario by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3848
- refactor(test): defining testID for ScenarioButton an assign scenario key property value to it by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3866
- refactor(Tabs, iOS): extract RNSTabBarControllerDelegate into a formal protocol by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3876
- fix(CI): fix nightly releases by bumping node version by @kligarski in https://github.com/software-mansion/react-native-screens/pull/3878
- chore(TVOSExample): bump RN to 0.85.0 by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3882
- refactor(test): Changed indentation spaces and updated the style using StyleSheet by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3887
- chore(test): E2E test for tabBarHidden and function to select SFT screens in e2e by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3879
- chore(deps): aggregate dependabot updates by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3890
- feat(Example): add ThemeProvider for testing by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3864
- chore(test): add scenario template in dedicated directory by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3891
- fix(Example): fix Colors imports by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3892
- chore: Run formatters by @t0maboro in https://github.com/software-mansion/react-native-screens/pull/3893
- refactor(Tabs): remove controlledBottomTabs / controlNavigationStateInJS option by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3888
- chore(Tabs): add usesStableTabsApi compatibility flag by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3889
- ci: add publish workflow using npm-package-publish action by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3898
- refactor(test): tabBarHidden scenario refactored, e2e test title updated by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3900
- refactor(test): Existing test scenario updates - unify with scenario template by @LKuchno in https://github.com/software-mansion/react-native-screens/pull/3902
- fix(Example): prevent unwanted full reload by @sgaczol in https://github.com/software-mansion/react-native-screens/pull/3894
- chore(CI): disable dry-run enforcement for nightly workflow by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3903
- chore(tests): allow forcing tab-select action when already selected by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3907
- chore(CI): remove old nightly publish workflow by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3913
- chore(CI): move dry-run input to top of publish workflow by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3915
- chore(release): bump version to 4.25.0-beta.1 by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3916
- chore: cherry-pick changes to 4.25.0-beta.2 by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3979
- chore: cherry-pick changes to 4.25.0-beta.2 by @kkafar in https://github.com/software-mansion/react-native-screens/pull/3983
- chore: cherry-pick changes to 4.25.0 stable by @kkafar in https://github.com/software-mansion/react-native-screens/pull/4006
New Contributors
- @ahmedawaad1804 made their first contribution in https://github.com/software-mansion/react-native-screens/pull/3613
- @l2hyunwoo made their first contribution in https://github.com/software-mansion/react-native-screens/pull/3638
- @DavidDuarte22 made their first contribution in https://github.com/software-mansion/react-native-screens/pull/3828
- @chrism made their first contribution in https://github.com/software-mansion/react-native-screens/pull/3762
- @collectioneur made their first contribution in https://github.com/software-mansion/react-native-screens/pull/3854
- @YevheniiKotyrlo made their first contribution in https://github.com/software-mansion/react-native-screens/pull/3719
Full Changelog: https://github.com/software-mansion/react-native-screens/compare/4.24.0...4.25.0