-
-
Notifications
You must be signed in to change notification settings - Fork 616
Comparing changes
Open a pull request
base repository: software-mansion/react-native-screens
base: 4.17.1
head repository: software-mansion/react-native-screens
compare: 4.18.0
- 13 commits
- 25 files changed
- 6 contributors
Commits on Oct 15, 2025
-
## Description Release 4.17.1 with fix for failing iOS build in release mode. ## Checklist - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for 6fc0183 - Browse repository at this point
Copy the full SHA 6fc0183View commit details
Commits on Oct 17, 2025
-
refactor(Tabs): Refactor APIs for icons (#3214)
## Description This PR refactors the way icon resources are passed into components by merging platform-specific props into a single unified icon configuration structure. Previously, icons were defined using 3–4 separate props depending on the platform, which led to inconsistency and potential conflicts. Now, the icon is defined using a single object: ```js { android?: PlatformIconAndroid; ios?: PlatformIconIOS; shared?: PlatformIconShared; } ``` Platform-specific types (`PlatformIconAndroid`, `PlatformIconIOS`, `PlatformIconShared`) are used to define supported icon formats and sources per platform. Note: This PR introduces a new approach to handling SVGs on Android. In #3216, I've started migrating to the Fresco image loading library, which unfortunately does not support SVGs directly. As a result, SVG support will now be provided exclusively through the `drawableResourceAndroid` type.⚠️ This is a breaking change that may affect developers currently using SVGs via remote URLs or external icon props. Please make sure to update your code accordingly to avoid runtime issues. ## Changes - Updated types for `icon` prop. - Added logic for resolving props internally on Android and adapted the current logic for iOS. - Updated examples to use new APIs. ## Test code and steps to reproduce Verified that the updated `TestBottomTabs` example is showing icons as expected. <img width="590" height="1301" alt="Screenshot 2025-09-15 at 19 30 32" src="https://github.com/user-attachments/assets/b1a1eb8b-babd-4a55-a2fb-2964ade978b0" /> ## Checklist - [x] Included code example that can be used to test this change - [x] Ensured that CI passes --------- Co-authored-by: kligarski <63918941+kligarski@users.noreply.github.com>Configuration menu - View commit details
-
Copy full SHA for 3a588b1 - Browse repository at this point
Copy the full SHA 3a588b1View commit details
Commits on Oct 20, 2025
-
fix(iOS): accept multiple attributes for menu items (#3308)
## Description Previously, the menu items accepted a union of attributes. This made it impossible to set multiple attributes simultaneously. This updates the logic to handle multiple attributes properly. It's technically a breaking change, so lmk if you want to keep the old property as well. Tested in React Navigation repo example on iOS 18 & 26. ## Screenshots / GIFs https://github.com/user-attachments/assets/ed44388e-b4cc-46f2-9345-36cde41f2818 ## Checklist - [x] Included code example that can be used to test this change - [x] Updated TS types - [x] Updated documentation: <!-- For adding new props to native-stack --> - [x] https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md - [ ] https://github.com/software-mansion/react-native-screens/blob/main/native-stack/README.md - [x] https://github.com/software-mansion/react-native-screens/blob/main/src/types.tsx - [ ] https://github.com/software-mansion/react-native-screens/blob/main/src/native-stack/types.tsx - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for 7349c59 - Browse repository at this point
Copy the full SHA 7349c59View commit details
Commits on Oct 21, 2025
-
refactor(iOS): add type to header bar button items (#3306)
## Description Follow up PR after discussions and changes in react-navigation/react-navigation#12657 ## Changes Following this comment react-navigation/react-navigation#12657 (comment) this PR adds a `type`-property to all items in headerLeftBarButtonItems and headerRightBarButtonItems. Also updates the "Bar Button Items" to the latest API added in react-navigation/react-navigation#12657 ## Screenshots / GIFs Here you can add screenshots / GIFs documenting your change. You can add before / after section if you're changing some behavior. ### Before ### After --> ## Test code and steps to reproduce Run the "Bar Button Items" example. ## Checklist - [x] Included code example that can be used to test this change - [x] Updated TS types - [x] Updated documentation: <!-- For adding new props to native-stack --> - [x] https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md - [ ] https://github.com/software-mansion/react-native-screens/blob/main/native-stack/README.md - [x] https://github.com/software-mansion/react-native-screens/blob/main/src/types.tsx - [ ] https://github.com/software-mansion/react-native-screens/blob/main/src/native-stack/types.tsx - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for c56d64b - Browse repository at this point
Copy the full SHA c56d64bView commit details -
chore: Remove orientation settings in BottomTabsTest (#3312)
## Description The `orientation` options set on BottomTabsTest's TabScreens get annoying when testing other scenarios. Let's maybe remove them, and if they are needed in one specific case, they can be added back for testing purposes without commiting. ## Changes Removed `orientation` settings from BottomTabsTest.
Configuration menu - View commit details
-
Copy full SHA for 253d781 - Browse repository at this point
Copy the full SHA 253d781View commit details -
fix(iOS, Tabs): use default UITabBarItem's title font as a base for f…
…ont configuration (#3310) ## Description Updates tab bar item title font appearance configuration to use default `UITabBarItem`'s title font as a base. Previously, we would rely on default values in `[RCTFont updateFont:...]` method which were different than the font used in tab bar items by default. | before | after | | --- | --- | | <video src="https://github.com/user-attachments/assets/d8b1840d-ecb0-40e5-bb34-5f10e8244073" /> | <video src="https://github.com/user-attachments/assets/f7037155-3e1e-4d44-bdeb-8b6578779cc9" /> | > [!IMPORTANT] > > If someone previously relied on the default values from `[RCTFont updateFont:...]` (e.g. changed only font family and decided that the font size is correct), after this PR the title will likely look different than before - this might be considered a breaking change. Fixes software-mansion/react-native-screens-labs#504. ## Changes - pass default font to `[RCTFont updateFont:...]` ## Test code and steps to reproduce Run `TestBottomTabs`, change appearance configuration for Tab1: ```tsx scrollEdgeAppearance: { stacked: { normal: { // tabBarItemTitleFontWeight: 'bold', // tabBarItemTitleFontFamily: 'Baskerville', // tabBarItemTitleFontStyle: 'italic', }, }, }, ``` Uncomment lines one-by-one, save file, observe changes. ## Checklist - [x] Included code example that can be used to test this change - [x] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for eed4e11 - Browse repository at this point
Copy the full SHA eed4e11View commit details -
fix(iOS, Tabs):
tabBarTintColoron iPadOS (#3314)## Description Fixes setting tint color for the tab bar on iPadOS (>= 18). <img width="2064" height="2752" alt="Simulator Screenshot - iPad Pro 13-inch (M4) - 2025-10-20 at 14 09 05" src="https://github.com/user-attachments/assets/7efe321a-29c0-4eb0-b027-d87185cdcc7b" /> `tabBar.tintColor` does not work for the floating tab bar. [Apple recommends](https://developer.apple.com/forums/thread/761056?answerId=798245022#798245022) setting the tint color for the `UITabBarController`'s view - that's what we do in this PR. Unfortunately, when using the sidebar, tint color is set after a delay. This is also reproducible in a native UIKit app and has been mentioned in the same forum thread from the link above to happen [in native iPadOS apps (e.g. Numbers)](https://developer.apple.com/forums/thread/761056?answerId=798343022#798343022). https://github.com/user-attachments/assets/8e1e0d9f-91be-47ce-9712-a80030bf3b9b ## Changes - set tint color for `tabBarController.view` ## Test code and steps to reproduce Run `TestBottomTabs` on an iPad. ## Checklist - [x] Included code example that can be used to test this change - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for 4eeae14 - Browse repository at this point
Copy the full SHA 4eeae14View commit details -
refactor(iOS): rename
label->titlein context of header items A……PI (#3318) ## Description This PR intends to align back prop naming with the [platform](https://developer.apple.com/documentation/uikit/uibaritem/title?language=objc) nomenclature. The header item API is iOS specific and there is really no reason to obfuscate in any way what we expose. ## Changes Renamed `label` -> `title` & `labelStyle` -> `titleStyle`. I recognize that technically this is a breaking change, however since react-navigation has not published the API yet, and we're in coordination, API end-users won't be affected. ## Test code and steps to reproduce `BarButtonItems` example should work the same. ## Checklist - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for 1443bd9 - Browse repository at this point
Copy the full SHA 1443bd9View commit details
Commits on Oct 22, 2025
-
fix: prevent freeze from unmounting native components (#3324)
## Description ~~No idea why the freeze worked up to 0.81, maybe there was something on native side that prevented children from being unmounted and it is no longer there. Our fix did not work, however. This commit fixes it.~~ ~~Name of the filed has been changed here:~~ ~~facebook/react-native@a36dbae48657965027e63c5bf90e4982af554581~~ @kligarski: Starting from RN 0.82, our workaround that prevented unmounting frozen views has stopped working - the bug is very similar to one described [here](#2778). The details of the workaround are available [here](grahammendick/navigation#860). Due to introduction of DOM APIs, `react-native` replaced `ReactFabricHostComponent` with `ReactNativeElement`. This was hidden behind a feature flag until [this PR](facebook/react-native#53360) to RN 0.82. The default value for `enableAccessToHostTreeInFabric` flag has been switched to `true`. In the workaround, we relied on internal value of `_viewConfig` which has been renamed to `__viewConfig` in `ReactNativeElement` implementation. In this PR, we handle all names of this property. | before | after | | --- | --- | | <video src="https://github.com/user-attachments/assets/3cf7b785-a91a-4f13-beb3-b71aaabc17ca" /> | <video src="https://github.com/user-attachments/assets/a2bbdf01-d2a9-4808-9401-8ad12839a190" /> | Fixes software-mansion/react-native-screens-labs#502. ## Changes - add check for `__viewConfig` prop name in workaround ## Test code and steps to reproduce Run `Test1726`. Go to screen 3 and go back via native back button. Customization of back button on the second screen should be still visible. ## Checklist - [x] Included code example that can be used to test this change - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for dab5b21 - Browse repository at this point
Copy the full SHA dab5b21View commit details -
fix(iOS): handle variable icons in header items (#3323)
Didn't consider usage of variable icons (2x, 3x) in header items when I implemented RCTImageLoader in RNSBarButtonItem. Sorry about that! This PR fixes this. **Before** <img width="1206" height="2622" alt="Simulator Screenshot - iPhone 17 Pro - 2025-10-22 at 11 55 20" src="https://github.com/user-attachments/assets/5512c0d6-f96c-4c2a-9088-746eb5f539a6" /> **After** <img width="1206" height="2622" alt="Simulator Screenshot - iPhone 17 Pro - 2025-10-22 at 11 50 45" src="https://github.com/user-attachments/assets/20c05364-32fd-4054-b700-444e883c259c" />
Configuration menu - View commit details
-
Copy full SHA for 9bb2409 - Browse repository at this point
Copy the full SHA 9bb2409View commit details -
chore: use
labelinstead oftitlein example using react-navigati……on (#3329) ## Description react-navigation uses `label` instead of `title`. We need to keep this in sync in our example app otherwise the titles won't show up. ## Changes ## Test code and steps to reproduce Just run `BarButtonItems` example & enter `Plain button` screen. ## Checklist - [ ] Included code example that can be used to test this change - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for ca62b83 - Browse repository at this point
Copy the full SHA ca62b83View commit details -
refactor!(iOS): move
changesSelectionAsPrimaryActionto menu button…… item (#3331) ## Description This prop has no effect when used with `HeaderBarButtonItemWithAction`, as it is supposed to change selection value in context of menu button. It is possible that there are some more behaviours introduced by this prop, but not spotted yet. https://github.com/user-attachments/assets/4b4e52bd-80f6-4613-943b-4479a849e732 ## Test code and steps to reproduce `BarButtonItems` example in our app. Add this prop to a menu button item. ## Checklist - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for bccbca0 - Browse repository at this point
Copy the full SHA bccbca0View commit details -
## Description Release 4.18.0 with fixes mostly around header items API. It technically contains breaking changes, but we're in coordination with `react-navigation` and should be fine here. ## Changes - **Release 4.18.0** - **Update podfiles** ## Checklist - [ ] Ensured that CI passes
Configuration menu - View commit details
-
Copy full SHA for f6be5f3 - Browse repository at this point
Copy the full SHA f6be5f3View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 4.17.1...4.18.0