Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: software-mansion/react-native-screens
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 4.17.1
Choose a base ref
...
head repository: software-mansion/react-native-screens
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 4.18.0
Choose a head ref
  • 13 commits
  • 25 files changed
  • 6 contributors

Commits on Oct 15, 2025

  1. release: 4.17.1 (#3301)

    ## Description
    
    Release 4.17.1 with fix for failing iOS build in release mode.
    
    ## Checklist
    
    - [ ] Ensured that CI passes
    kkafar authored Oct 15, 2025
    Configuration menu
    Copy the full SHA
    6fc0183 View commit details
    Browse the repository at this point in the history

Commits on Oct 17, 2025

  1. 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>
    t0maboro and kligarski authored Oct 17, 2025
    Configuration menu
    Copy the full SHA
    3a588b1 View commit details
    Browse the repository at this point in the history

Commits on Oct 20, 2025

  1. 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
    satya164 authored Oct 20, 2025
    Configuration menu
    Copy the full SHA
    7349c59 View commit details
    Browse the repository at this point in the history

Commits on Oct 21, 2025

  1. 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
    johankasperi authored Oct 21, 2025
    Configuration menu
    Copy the full SHA
    c56d64b View commit details
    Browse the repository at this point in the history
  2. 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.
    kmichalikk authored Oct 21, 2025
    Configuration menu
    Copy the full SHA
    253d781 View commit details
    Browse the repository at this point in the history
  3. 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
    kligarski authored Oct 21, 2025
    Configuration menu
    Copy the full SHA
    eed4e11 View commit details
    Browse the repository at this point in the history
  4. fix(iOS, Tabs): tabBarTintColor on 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
    kligarski authored Oct 21, 2025
    Configuration menu
    Copy the full SHA
    4eeae14 View commit details
    Browse the repository at this point in the history
  5. refactor(iOS): rename label -> title in 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
    kkafar authored Oct 21, 2025
    Configuration menu
    Copy the full SHA
    1443bd9 View commit details
    Browse the repository at this point in the history

Commits on Oct 22, 2025

  1. 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
    kkafar authored Oct 22, 2025
    Configuration menu
    Copy the full SHA
    dab5b21 View commit details
    Browse the repository at this point in the history
  2. 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"
    />
    johankasperi authored Oct 22, 2025
    Configuration menu
    Copy the full SHA
    9bb2409 View commit details
    Browse the repository at this point in the history
  3. chore: use label instead of title in 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
    kkafar authored Oct 22, 2025
    Configuration menu
    Copy the full SHA
    ca62b83 View commit details
    Browse the repository at this point in the history
  4. refactor!(iOS): move changesSelectionAsPrimaryAction to 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
    kkafar authored Oct 22, 2025
    Configuration menu
    Copy the full SHA
    bccbca0 View commit details
    Browse the repository at this point in the history
  5. release: 4.18.0 (#3332)

    ## 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
    kkafar authored Oct 22, 2025
    Configuration menu
    Copy the full SHA
    f6be5f3 View commit details
    Browse the repository at this point in the history
Loading