Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V4 branch #1

Draft
wants to merge 166 commits into
base: 3.35.0-discord-1
Choose a base branch
from
Draft

V4 branch #1

wants to merge 166 commits into from

Conversation

hannomargelo
Copy link

Don't merge, just for comparing diff & viability

kkafar and others added 30 commits August 10, 2024 21:02
## Description

This PR introduces series of features & changes:

1. possibility of specifying custom detents for form sheets on devices
with iOS 16 or newer,
2. changes existing form sheet API of `Screen` component (namely types
of values accepted),
3. Android form sheets (bottom sheets presented in current presentation
context (in iOS terms) with dimming view with configurable interaction.
The form sheet supports up to three detent levels with additional option
of `fitToContents`
4. Android Footer component that works together with `formSheet`
presentation style
5. 🚧 Android modal bottom sheet - similar to `formSheet`, however the
sheet is mounted under separate window.
6. 🚧 iOS Footer component - similar to Android
7. Usage of Material 3
8. series of new props allowing for: 
a. controlling style of the `Screen` component (necessary workaround for
issue with flickering on iOS,
b. controlling whether the screen fragment of particular screen should
be unmounted or not on Android when the screen is on JS stack but not
visible (necessary to achieve "staying form sheet" when navigating back
to a screen with presented form sheet),
c. listening for `sheetDetentChange` events, in case of Android stable &
dragging states are reported, in case of iOS only stable states
  d. todo: describe rest

## Changes


## Known issues

1. [x] ~After recent commits - iOS compilation on Fabric~
2. [ ] Android: issue with nested scrollview - invalid behaviour when
there is not enough content for scrollview to scroll (viewport is >=
content size). Solvable by patching react-native:
facebook/react-native#44099, no other workaround
found. There is one approach [suggested by
grahammendick](https://github.com/grahammendick/navigation/blob/916688d267bd3fc520e2e22328b6aa66124f52ed/NavigationReactNative/src/android/src/main/java/com/navigation/reactnative/CoordinatorLayoutView.java#L96-L148),
however yet untested.
3. [ ] Android 'modal' presentation can crash randomly (unknown reason
yet, can be deffered)

## Test code and steps to reproduce

I've used & extended `Test1649` to present all capabilities of new API.

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
This PR adds landing page for React Native Screens with the use of
@swmansion/t-rex-ui component library.

The mobile view right now is done without proper design - let me know
have some ideas on it!

It's open for testing but keep in mind mentioned to-be-fixed things.

- [x] Add favicon
- [x] Add og-image
- [x] Add hero animation
- [x] Add Multiplatform tile animation
- [ ] (optional) Waiting for proper mobile designs
- [x] Bump @swmansion/t-rex-ui to latest

Laptop:



https://github.com/software-mansion/react-native-screens/assets/59940332/486b82cd-e2c6-4e33-b72e-cfc3de44a08c



Mobile:


https://github.com/software-mansion/react-native-screens/assets/59940332/af8cd946-b814-4071-97a8-8650de139312

Animacja na hero:


https://github.com/user-attachments/assets/fe506eb7-098d-4c70-b403-1a70e4374f2b
## Description

This PR adds additional workflow to publish landing page on GitHub pages
whenever there's a change on main inside the `docs` directory.

## Changes

- Added workflow for publishing landing page
- Added .nojekyll file

## Checklist

- [x] Ensured that CI passes
## Description

Just a correction for invalid import for SVG file.

## Changes

- Changed `TV.svg` import to `tv.svg`

## Checklist

- [x] Ensured that CI passes
## Description

So previously, when there was a production build, screens from screen
sequence in hero were wrongly moving into incorrect div. I've wrapped
whole sequence into an additional div, so to disallow screens from
moving there (somehow it fixes this issue).

## Changes

- Wrapped page with additional divs

## Screenshots / GIFs

### Before

![CleanShot 2024-08-13 at 16 40
24@2x](https://github.com/user-attachments/assets/4dc505df-66e7-40a3-bde9-6d334f384c7e)

### After

![CleanShot 2024-08-13 at 16 39
23@2x](https://github.com/user-attachments/assets/6bee706c-d642-4ef1-9d0f-d70105d711d9)

## Checklist

- [ ] Ensured that CI passes
## Description

This PR aggregates dependabot PRs to update rexml from 3.2.8 to 3.3.3
version in example apps.

## Changes

- software-mansion#2296

## Checklist

- [x] Ensured that CI passes

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…t on fabric (software-mansion#2307)

## Description

This PR intents to fix the crash when navigating back from a screen with
FlatList on the new architecture. The crash was caused by miscalculated
`childCount` of the list.
Earlier on I found out that setting the
[removeClippedSubviews](https://reactnative.dev/docs/flatlist#removeclippedsubviews)
option to false (defaults to true on Android) in the FlatList fixes the
problem.

This PR is rather a quick fix with an extra condition, that adds simple
views in place of the miscalculated ones in `startTransitionRecursive`
function if there's a FlatList with `removeClippedSubviews` option set.

Fixes software-mansion#2282.

## Changes

- added `Test2282.tsx` repro
- added extra condition in `startTransitionRecursive` function

<!--

## 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

- added `Test2282.tsx` repro

## Checklist

- [x] Ensured that CI passes
…tware-mansion#2310)

## Description

This PR removes a comment related to `FabricViewStateManager` that is
unnecessary since it was replaced with `StateWrapper` by
software-mansion@536b096.

## Changes

- removed comment
PR adding load method needed for dynamic frameworks to work with the library. See facebook/react-native#37274 for more information.
…ts (software-mansion#2319)

## Description

In the newest version of screens, there's a bug where compiler can't
find RectUtil.h file from `utils/RectFile.h` during the compile phase of
RNSScreenComponentDescriptor file.
This PR fixes this by changing the path of RectUtil.h file to
<react/renderer/components/rnscreens/util/RectFile.h> file.

Fixes software-mansion#2306.

## Changes

- Changed import of RectUtil.h file in RNSScreenComponentDescriptor.h
file

## Test code and steps to reproduce

- Download reproducer from
https://github.com/jankosecki/react-native-upgrade-tester/tree/rn-0.75
- Delete patches/react-native-screens+3.34.0.patch
- Clean up node_modules in case patch already applied
- Run yarn setup (it invokes "pod-install": "(cd ./ios ;
RCT_NEW_ARCH_ENABLED=1 USE_FRAMEWORKS=static bundle exec pod install
--repo-update)" which enables new architecture)
- Open XCode to set up development team (provided repro contains None
team in Signing & Capabilities)
- Run yarn start
- Run yarn ios or trigger build from XCode (yarn ios causes a massive
error output with different "error" lines but XCode offers a clear
reason.

## Checklist

- [ ] Ensured that CI passes
…ement (software-mansion#2292)

## Description

> [!important]
This PR aims to fix only pressables on screen components. This PR does
not fix similar pressable issue with pressables in native header. That
interaction will be fixed separately.

Pressable elements work just fine until there's a gesture involved. On
sensitive physical devices even a little movement during the press is
treated as a gesture.

When the `Pressable` element detects a gesture it calls
[onResponderMove](https://github.com/facebook/react-native/blob/82795715aefba07ae9d79278ce3fd4d2e9a928f2/packages/react-native/Libraries/Pressability/Pressability.js#L484)
which then checks wether the gesture happened within the element or went
outside by comparing the touch coordinates with coordinates of the
element using `_isTouchWithinResponderRegion`.

The `responderRegion` is obtained from `_responderID` and happens to
have unexpected values when the native header is present. It tuns out
that the Y origin is slightly off. After some further investigation and
comparison of coordinates it turned out that the height of the android
status bar is not well calculated in various scenarios:

<table>
<td>

`statusBarHidden: true`

</td>
<td>

`statusBarTranslucent: true`

</td>
<td>

`statusBarTranslucent: false`

</td>
</tr>
<tr>
<td>


![Screenshot_1723212300](https://github.com/user-attachments/assets/57e2f4a3-b002-4ca3-9519-45cfece860c4)

</td>
<td>


![Screenshot_1723212331](https://github.com/user-attachments/assets/bd46c8d1-8813-4fae-a8a9-0326193371d2)

</td>
<td>


![Screenshot_1723212382](https://github.com/user-attachments/assets/c7373437-524d-4a0f-951e-ce2689a4fe5c)

</td>
</tr>
</table>

The `calculateHeaderHeight` used for calculating the header and
statusBar height seems to be the problem. Luckily, we don't have to
calculate it by ourselves anymore, because the correct `t` value is
provided in the `onLayout` function of the `Screen`. Thus we can get rid
of the custom function.

Another issue found: after navigating to another screen the offset is
off again (exactly by 2x). It's caused by changes introduced in [this
PR](software-mansion#2169),
which was supposed to prevent content jumps, but doesn't work since RN
`0.75` sadly.


![Screenshot_1723220034](https://github.com/user-attachments/assets/b0908c23-4667-4ccf-8e5e-5e7e11bca316)

I found out that `FrameOriginCorrection` is not being unset when
dimensions from JVM are received, while the `FrameHeightCorrection` is.
After adding the missing unset for `FrameOriginCorrection` I rolled back
to the commit with the mentioned PR merged and RN `0.74` and I can
confirm it works.

Fixes software-mansion#1975 

## Changes

- removed `calculateHeaderHeight` function
- added unset for `FrameOriginCorrection` when dimensions from JVM are
received
- added `Test1975.tsx` repro
- moved code responsible for determining header height during the very
first render from component descriptor's `adopt` method to shadow node
`appendChild`.


## Test code and steps to reproduce

`TestHeader`, `Test1975`

## Checklist

- [x] Included code example that can be used to test this change
- [x] Ensured that CI passes

---------

Co-authored-by: alduzy <[email protected]>
Co-authored-by: Alex Duży <[email protected]>
…sion#2314)

Bumps [rexml](https://github.com/ruby/rexml) from 3.2.9 to 3.3.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ruby/rexml/releases">rexml's
releases</a>.</em></p>
<blockquote>
<h2>REXML 3.3.6 - 2024-08-22</h2>
<h3>Improvements</h3>
<ul>
<li>
<p>Removed duplicated entity expansions for performance.</p>
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/194">GH-194</a></li>
<li>Patch by Viktor Ivarsson.</li>
</ul>
</li>
<li>
<p>Improved namespace conflicted attribute check performance. It was
too slow for deep elements.</p>
<ul>
<li>Reported by l33thaxor.</li>
</ul>
</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>
<p>Fixed a bug that default entity expansions are counted for
security check. Default entity expansions should not be counted
because they don't have a security risk.</p>
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/198">GH-198</a></li>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/199">GH-199</a></li>
<li>Patch Viktor Ivarsson</li>
</ul>
</li>
<li>
<p>Fixed a parser bug that parameter entity references in internal
subsets are expanded. It's not allowed in the XML specification.</p>
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/191">GH-191</a></li>
<li>Patch by NAITOH Jun.</li>
</ul>
</li>
<li>
<p>Fixed a stream parser bug that user-defined entity references in
text aren't expanded.</p>
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/200">GH-200</a></li>
<li>Patch by NAITOH Jun.</li>
</ul>
</li>
</ul>
<h3>Thanks</h3>
<ul>
<li>
<p>Viktor Ivarsson</p>
</li>
<li>
<p>NAITOH Jun</p>
</li>
<li>
<p>l33thaxor</p>
</li>
</ul>
<h2>REXML 3.3.5 - 2024-08-12</h2>
<h3>Fixes</h3>
<ul>
<li>Fixed a bug that
<code>REXML::Security.entity_expansion_text_limit</code>
check has wrong text size calculation in SAX and pull parsers.
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/193">GH-193</a></li>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/195">GH-195</a></li>
<li>Reported by Viktor Ivarsson.</li>
<li>Patch by NAITOH Jun.</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ruby/rexml/blob/master/NEWS.md">rexml's
changelog</a>.</em></p>
<blockquote>
<h2>3.3.6 - 2024-08-22 {#version-3-3-6}</h2>
<h3>Improvements</h3>
<ul>
<li>
<p>Removed duplicated entity expansions for performance.</p>
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/194">GH-194</a></li>
<li>Patch by Viktor Ivarsson.</li>
</ul>
</li>
<li>
<p>Improved namespace conflicted attribute check performance. It was
too slow for deep elements.</p>
<ul>
<li>Reported by l33thaxor.</li>
</ul>
</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>
<p>Fixed a bug that default entity expansions are counted for
security check. Default entity expansions should not be counted
because they don't have a security risk.</p>
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/198">GH-198</a></li>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/199">GH-199</a></li>
<li>Patch Viktor Ivarsson</li>
</ul>
</li>
<li>
<p>Fixed a parser bug that parameter entity references in internal
subsets are expanded. It's not allowed in the XML specification.</p>
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/191">GH-191</a></li>
<li>Patch by NAITOH Jun.</li>
</ul>
</li>
<li>
<p>Fixed a stream parser bug that user-defined entity references in
text aren't expanded.</p>
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/200">GH-200</a></li>
<li>Patch by NAITOH Jun.</li>
</ul>
</li>
</ul>
<h3>Thanks</h3>
<ul>
<li>
<p>Viktor Ivarsson</p>
</li>
<li>
<p>NAITOH Jun</p>
</li>
<li>
<p>l33thaxor</p>
</li>
</ul>
<h2>3.3.5 - 2024-08-12 {#version-3-3-5}</h2>
<h3>Fixes</h3>
<ul>
<li>Fixed a bug that
<code>REXML::Security.entity_expansion_text_limit</code>
check has wrong text size calculation in SAX and pull parsers.
<ul>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/193">GH-193</a></li>
<li><a
href="https://redirect.github.com/ruby/rexml/issues/195">GH-195</a></li>
<li>Reported by Viktor Ivarsson.</li>
<li>Patch by NAITOH Jun.</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ruby/rexml/commit/95871f399eda642a022b03550479b7994895c742"><code>95871f3</code></a>
Add 3.3.6 entry</li>
<li><a
href="https://github.com/ruby/rexml/commit/7cb5eaeb221c322b9912f724183294d8ce96bae3"><code>7cb5eae</code></a>
parser tree: improve namespace conflicted attribute check
performance</li>
<li><a
href="https://github.com/ruby/rexml/commit/6109e0183cecf4f8b587d76209716cb1bbcd6bd5"><code>6109e01</code></a>
Fix a bug that Stream parser doesn't expand the user-defined entity
reference...</li>
<li><a
href="https://github.com/ruby/rexml/commit/cb158582f18cebb3bf7b3f21f230e2fb17d435aa"><code>cb15858</code></a>
parser: keep the current namespaces instead of stack of Set</li>
<li><a
href="https://github.com/ruby/rexml/commit/2b47b161db19c38c5e45e36c2008c045543e976e"><code>2b47b16</code></a>
parser: move duplicated end tag check to BaseParser</li>
<li><a
href="https://github.com/ruby/rexml/commit/35e1681a179c28d5b6ec97d4ab1c110e5ac00303"><code>35e1681</code></a>
test tree-parser: move common method to base class</li>
<li><a
href="https://github.com/ruby/rexml/commit/6e00a14daf2f901df535eafe96cc94d43a957ffe"><code>6e00a14</code></a>
test: fix indent</li>
<li><a
href="https://github.com/ruby/rexml/commit/df3a0cc83013f3cde7b7c2044e3ce00bcad321cb"><code>df3a0cc</code></a>
test: fix indent</li>
<li><a
href="https://github.com/ruby/rexml/commit/fdbffe744b38811be8b1cf6a9eec3eea4d71c412"><code>fdbffe7</code></a>
Use loop instead of recursive call for Element#namespace</li>
<li><a
href="https://github.com/ruby/rexml/commit/6422fa34494fd4145d7bc68fbbe9525d42becf62"><code>6422fa3</code></a>
Use loop instead of recursive call for Element#root</li>
<li>Additional commits viewable in <a
href="https://github.com/ruby/rexml/compare/v3.2.9...v3.3.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rexml&package-manager=bundler&previous-version=3.2.9&new-version=3.3.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/software-mansion/react-native-screens/network/alerts).

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#2326)

## Description

Update path for FullWindowOverlay example

## Changes

- Updated `README.md` docs
…ecified) (software-mansion#2301)

## Description

I have next navigator structure:
- JS
   - native-stack

`native-stack` navigator customizes options as:

```ts
{
    headerShown: false,
    statusBarTranslucent: true,
    navigationBarColor: "#FFFFFF",
    navigationBarTranslucent: true,
},
```

When I go to `native-stack` - everything works well: the nav bar changes
color. However, when I go back, then I'm getting a gray space in the
bottom of my screen.

It happens because we disable mode `edge-to-edge` by calling
`WindowCompat.setDecorFitsSystemWindows(window, true)` (the gray space
appears because before we were already in edge-to-edge mode, because I
had `KeyboardProvider` mounted in `App.tsx`).

So to fix this problem I decided explicitly check for boolean value for
`navigationBarTranslucent` and set `decorFitsSystemWindows` only when we
have an actual boolean value.

If you think that it's a problem in my project, then, please, let me
know the way to fix it 😊

## Changes

- call `WindowCompat.setDecorFitsSystemWindows(window, true)` only if
`isNavigationBarTranslucent` has a boolean value;

## Screenshots / GIFs

### Before


![telegram-cloud-photo-size-2-5321328488650760881-y](https://github.com/user-attachments/assets/4c1ef654-3146-44bd-aa00-6a810c2aa0aa)

### After


![telegram-cloud-photo-size-2-5321328488650760882-y](https://github.com/user-attachments/assets/7920cf2c-e5b7-46e9-bb75-a581ce2dab2a)

## Test code and steps to reproduce

I tested in `react-native-keyboard-controller` example app, but if you
need to test it in your code - let me know, and I'll try to prepare a
reproduction code.

## 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
- [x]
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
- [x]
https://github.com/software-mansion/react-native-screens/blob/main/src/native-stack/types.tsx
- [x] Ensured that CI passes
…e-mansion#2330)

## Description
Fixes software-mansion#2329

## Changes
- Changes how we check if the child is a CircleImageView to be
minification safe


## Test code and steps to reproduce
Build
`[this](https://github.com/BenIrving/refreshcontrolrepro/tree/main)`
repro using this changeset, observe no crash when navigating between
screens.

You can also check `Test640.tsx` test by going into the second screen
(by button), then try to manually refresh list by swiping down (until
the refresh control will show). During the refresh, try to go back to
the first screen - application shouldn't crash.

## Checklist

- [x] Ensured that CI passes

Co-authored-by: Ben Irving <[email protected]>
This PR adds gathered Testimonials to Screens landing page

<img width="1169" alt="image"
src="https://github.com/user-attachments/assets/8bb35b33-4fc9-4a18-afbc-573cc532e235">
… API 29 (software-mansion#2332)

## Description

On Android API 29, while using `windowSoftInputMode` with `adjustPan`
option, requestLayout is not being called while subviews are being
added. That's because while ScreenStackHeaderConfig adds view to the
toolbar, onMeasure is being called and even if we're calling
`requestLayout` on parent, Android is returning from requesting the
layout, as there's somehow ongoing layout. This is not the case for
Android API 30 and higher.

The solution is to request another layout via ReactChoreographer (same
as in ScreenContainer) to call our own layout callback on the next
frame.

## Changes

- Request layout via ReactChoreographer on `requestLayout` call in
CustomToolbar class

## Screenshots / GIFs

<details><summary>BEFORE</summary>

![CleanShot 2024-09-03 at 17 59
13](https://github.com/user-attachments/assets/3f7952a5-6430-4b25-b587-4690fac236d3)

</details>

<details><summary>AFTER</summary>

![CleanShot 2024-09-03 at 17 51
14](https://github.com/user-attachments/assets/f2551b98-5de1-4021-8c72-0e4718aaaf45)

</details>

## Test code and steps to reproduce

Use `Test2332.tsx` test case to check whether this PR works properly.

## Checklist

- [x] Included code example that can be used to test this change
- [ ] Ensured that CI passes

---------

Co-authored-by: Kacper Kafara <[email protected]>
)

## Description

When 3 screens with a ‘modal’ presentation mode are stacked, navigating
to a screen outside of the current stack is not functioning correctly.

## Changes

Removed dismissing logic for `lastModalVc`.

## Screenshots / GIFs

### Before

https://github.com/user-attachments/assets/d4991253-52f1-4f35-8698-242d98b218d1

### After

https://github.com/user-attachments/assets/571ebd45-7319-4225-ab5b-4f68027f4f09

## Test code and steps to reproduce

`TestModalNavigation` was added to tests.

## Checklist

- [x] Included code example that can be used to test this change
- [ ] Ensured that CI passes

Co-authored-by: Kacper Kafara <[email protected]>
…nsion#2348)

Bumps [express](https://github.com/expressjs/express) from 4.19.2 to
4.21.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/releases">express's
releases</a>.</em></p>
<blockquote>
<h2>4.21.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Deprecate <code>&quot;back&quot;</code> magic string in redirects by
<a href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5935">expressjs/express#5935</a></li>
<li>[email protected] by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5954">expressjs/express#5954</a></li>
<li>fix(deps): [email protected] by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5951">expressjs/express#5951</a></li>
<li>Upgraded dependency qs to 6.13.0 to match qs in body-parser by <a
href="https://github.com/agadzinski93"><code>@​agadzinski93</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5946">expressjs/express#5946</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/agadzinski93"><code>@​agadzinski93</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5946">expressjs/express#5946</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.20.0...4.21.0">https://github.com/expressjs/express/compare/4.20.0...4.21.0</a></p>
<h2>4.20.0</h2>
<h2>What's Changed</h2>
<h3>Important</h3>
<ul>
<li>IMPORTANT: The default <code>depth</code> level for parsing
URL-encoded data is now <code>32</code> (previously was
<code>Infinity</code>)</li>
<li>Remove link renderization in html while using
<code>res.redirect</code></li>
</ul>
<h3>Other Changes</h3>
<ul>
<li>4.19.2 Staging by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5561">expressjs/express#5561</a></li>
<li>remove duplicate location test for data uri by <a
href="https://github.com/wesleytodd"><code>@​wesleytodd</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5562">expressjs/express#5562</a></li>
<li>feat: document beta releases expectations by <a
href="https://github.com/marco-ippolito"><code>@​marco-ippolito</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5565">expressjs/express#5565</a></li>
<li>Cut down on duplicated CI runs by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5564">expressjs/express#5564</a></li>
<li>Add a Threat Model by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5526">expressjs/express#5526</a></li>
<li>Assign captain of encodeurl by <a
href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5579">expressjs/express#5579</a></li>
<li>Nominate jonchurch as repo captain for <code>http-errors</code>,
<code>expressjs.com</code>, <code>morgan</code>, <code>cors</code>,
<code>body-parser</code> by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5587">expressjs/express#5587</a></li>
<li>docs: update Security.md by <a
href="https://github.com/inigomarquinez"><code>@​inigomarquinez</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5590">expressjs/express#5590</a></li>
<li>docs: update triage nomination policy by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5600">expressjs/express#5600</a></li>
<li>Add CodeQL (SAST) by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5433">expressjs/express#5433</a></li>
<li>docs: add UlisesGascon as triage initiative captain by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5605">expressjs/express#5605</a></li>
<li>deps: encodeurl@~2.0.0 by <a
href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5569">expressjs/express#5569</a></li>
<li>skip QUERY method test by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5628">expressjs/express#5628</a></li>
<li>ignore ETAG query test on 21 and 22, reuse skip util by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5639">expressjs/express#5639</a></li>
<li>add support Node.js@22 in the CI by <a
href="https://github.com/mertcanaltin"><code>@​mertcanaltin</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5627">expressjs/express#5627</a></li>
<li>doc: add table of contents, tc/triager lists to readme by <a
href="https://github.com/mertcanaltin"><code>@​mertcanaltin</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5619">expressjs/express#5619</a></li>
<li>List and sort all projects, add captains by <a
href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5653">expressjs/express#5653</a></li>
<li>docs: add <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
as captain for cookie-parser by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5666">expressjs/express#5666</a></li>
<li>✨ bring back query tests for node 21 by <a
href="https://github.com/ctcpip"><code>@​ctcpip</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5690">expressjs/express#5690</a></li>
<li>[v4] Deprecate <code>res.clearCookie</code> accepting
<code>options.maxAge</code> and <code>options.expires</code> by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5672">expressjs/express#5672</a></li>
<li>skip QUERY tests for Node 21 only, still not supported by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5695">expressjs/express#5695</a></li>
<li>📝 update people, add ctcpip to TC by <a
href="https://github.com/ctcpip"><code>@​ctcpip</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5683">expressjs/express#5683</a></li>
<li>remove minor version pinning from ci by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5722">expressjs/express#5722</a></li>
<li>Fix link variable use in attribution section of CODE OF CONDUCT by
<a href="https://github.com/IamLizu"><code>@​IamLizu</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5762">expressjs/express#5762</a></li>
<li>Replace Appveyor windows testing with GHA by <a
href="https://github.com/jonchurch"><code>@​jonchurch</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5599">expressjs/express#5599</a></li>
<li>Add OSSF Scorecard badge by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5436">expressjs/express#5436</a></li>
<li>update scorecard link by <a
href="https://github.com/bjohansebas"><code>@​bjohansebas</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5814">expressjs/express#5814</a></li>
<li>Nominate <a
href="https://github.com/IamLizu"><code>@​IamLizu</code></a> to the
triage team by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5836">expressjs/express#5836</a></li>
<li>deps: [email protected] by <a
href="https://github.com/blakeembrey"><code>@​blakeembrey</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5603">expressjs/express#5603</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/blob/4.21.0/History.md">express's
changelog</a>.</em></p>
<blockquote>
<h1>4.21.0 / 2024-09-11</h1>
<ul>
<li>Deprecate <code>res.location(&quot;back&quot;)</code> and
<code>res.redirect(&quot;back&quot;)</code> magic string</li>
<li>deps: [email protected]
<ul>
<li>includes [email protected]</li>
</ul>
</li>
<li>deps: [email protected]</li>
<li>deps: [email protected]</li>
</ul>
<h1>4.20.0 / 2024-09-10</h1>
<ul>
<li>deps: [email protected]
<ul>
<li>Remove link renderization in html while redirecting</li>
</ul>
</li>
<li>deps: [email protected]
<ul>
<li>Remove link renderization in html while redirecting</li>
</ul>
</li>
<li>deps: [email protected]
<ul>
<li>add <code>depth</code> option to customize the depth level in the
parser</li>
<li>IMPORTANT: The default <code>depth</code> level for parsing
URL-encoded data is now <code>32</code> (previously was
<code>Infinity</code>)</li>
</ul>
</li>
<li>Remove link renderization in html while using
<code>res.redirect</code></li>
<li>deps: [email protected]
<ul>
<li>Adds support for named matching groups in the routes using a
regex</li>
<li>Adds backtracking protection to parameters without regexes
defined</li>
</ul>
</li>
<li>deps: encodeurl@~2.0.0
<ul>
<li>Removes encoding of <code>\</code>, <code>|</code>, and
<code>^</code> to align better with URL spec</li>
</ul>
</li>
<li>Deprecate passing <code>options.maxAge</code> and
<code>options.expires</code> to <code>res.clearCookie</code>
<ul>
<li>Will be ignored in v5, clearCookie will set a cookie with an expires
in the past to instruct clients to delete the cookie</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/expressjs/express/commit/7e562c6d8daddff4604f8efaaf9db2cf98c6dcff"><code>7e562c6</code></a>
4.21.0</li>
<li><a
href="https://github.com/expressjs/express/commit/1bcde96bc87c4704df9a704271d1167064ab56bb"><code>1bcde96</code></a>
fix(deps): [email protected] (<a
href="https://redirect.github.com/expressjs/express/issues/5946">#5946</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/7d364775688be98aaa973302e066d0da9f438997"><code>7d36477</code></a>
fix(deps): [email protected] (<a
href="https://redirect.github.com/expressjs/express/issues/5951">#5951</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/40d2d8f2c882712a0f2e4603c38d166c79676b2b"><code>40d2d8f</code></a>
fix(deps): [email protected]</li>
<li><a
href="https://github.com/expressjs/express/commit/77ada906dba57fd6e308f0d750e01653dbeaddfc"><code>77ada90</code></a>
Deprecate <code>&quot;back&quot;</code> magic string in redirects (<a
href="https://redirect.github.com/expressjs/express/issues/5935">#5935</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/21df421ebc7a5249bb31101da666bbf22adc3f18"><code>21df421</code></a>
4.20.0</li>
<li><a
href="https://github.com/expressjs/express/commit/4c9ddc1c47bf579e55c2fe837d76a952e9fd8959"><code>4c9ddc1</code></a>
feat: upgrade to [email protected]</li>
<li><a
href="https://github.com/expressjs/express/commit/9ebe5d500d22cbb2b8aaa73446866b084c747971"><code>9ebe5d5</code></a>
feat: upgrade to [email protected] (<a
href="https://redirect.github.com/expressjs/express/issues/5928">#5928</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/ec4a01b6b8814d7b007f36a3023f4dbafdbc3d09"><code>ec4a01b</code></a>
feat: upgrade to [email protected] (<a
href="https://redirect.github.com/expressjs/express/issues/5926">#5926</a>)</li>
<li><a
href="https://github.com/expressjs/express/commit/54271f69b511fea198471e6ff3400ab805d6b553"><code>54271f6</code></a>
fix: don't render redirect values in anchor href</li>
<li>Additional commits viewable in <a
href="https://github.com/expressjs/express/compare/4.19.2...4.21.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=express&package-manager=npm_and_yarn&previous-version=4.19.2&new-version=4.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/software-mansion/react-native-screens/network/alerts).

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…tware-mansion#2343)

[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [serve-static](https://github.com/expressjs/serve-static) from
1.15.0 to 1.16.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/serve-static/releases">serve-static's
releases</a>.</em></p>
<blockquote>
<h2>1.16.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Remove link renderization in html while redirecting (<a
href="https://redirect.github.com/expressjs/serve-static/pull/173">expressjs/serve-static#173</a>)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/serve-static/pull/173">expressjs/serve-static#173</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/serve-static/compare/v1.15.0...1.16.0">https://github.com/expressjs/serve-static/compare/v1.15.0...1.16.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/serve-static/blob/v1.16.2/HISTORY.md">serve-static's
changelog</a>.</em></p>
<blockquote>
<h1>1.16.2 / 2024-09-11</h1>
<ul>
<li>deps: encodeurl@~2.0.0</li>
</ul>
<h1>1.16.1 / 2024-09-11</h1>
<ul>
<li>deps: [email protected]</li>
</ul>
<h1>1.16.0 / 2024-09-10</h1>
<ul>
<li>Remove link renderization in html while redirecting</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/expressjs/serve-static/commit/ec9c5ecfb09368519e4698ffbbe1882de00d0ef2"><code>ec9c5ec</code></a>
1.16.2</li>
<li><a
href="https://github.com/expressjs/serve-static/commit/f454d37c68fdad04b582cb9ac0cd165ab6d19114"><code>f454d37</code></a>
fix(deps): encodeurl@~2.0.0</li>
<li><a
href="https://github.com/expressjs/serve-static/commit/77a8255688cc4affc70e6dc9aa02e3ced4957e77"><code>77a8255</code></a>
1.16.1</li>
<li><a
href="https://github.com/expressjs/serve-static/commit/4263f496876980c165a3104d087c1ebaa046ad3d"><code>4263f49</code></a>
fix(deps): [email protected]</li>
<li><a
href="https://github.com/expressjs/serve-static/commit/48c73970b129b96cba448e792576ad89b1f9fbed"><code>48c7397</code></a>
1.16.0</li>
<li><a
href="https://github.com/expressjs/serve-static/commit/0c11fad159898cdc69fd9ab63269b72468ecaf6b"><code>0c11fad</code></a>
Merge commit from fork</li>
<li>See full diff in <a
href="https://github.com/expressjs/serve-static/compare/v1.15.0...v1.16.2">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~wesleytodd">wesleytodd</a>, a new releaser
for serve-static since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serve-static&package-manager=npm_and_yarn&previous-version=1.15.0&new-version=1.16.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/software-mansion/react-native-screens/network/alerts).

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…-mansion#2328)

## Description

<!--
Description and motivation for this PR.

Include Fixes #<number> if this is fixing some issue.

Fixes # .
-->

This PR is based on
software-mansion#1945 and
implements the `ios` animation in the reverse direction (slide in from
left to right, slide out from right to left)

## Changes

<!--
Please describe things you've changed here, make a **high level**
overview, if change is simple you can omit this section.

For example:

- Updated `about.md` docs

-->

<!--

## 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

<!--
Please include code that can be used to test this change and short
description how this example should work.
This snippet should be as minimal as possible and ready to be pasted
into editor (don't exclude exports or remove "not important" parts of
reproduction 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
- [x]
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
- [x]
https://github.com/software-mansion/react-native-screens/blob/main/src/native-stack/types.tsx
- [x] Ensured that CI passes
…e minSdkVersion 23 (software-mansion#2346)

## Description
This PR is a potential fix for
[software-mansion#2295](software-mansion#2295).
Following suggestions in
[PR#2251](software-mansion#2251 (comment))
and Android Gradle Plugin version 7.0.0 changes: `minSdkVersion` was
renamed to `minSdk`, `targetSdkVersion` was renamed to `targetSdk`,
`compileSdkVersion` was renamed to `compileSdk`, this PR ensures
compatibility with react native integrated with newest Android projects.

Fixes software-mansion#2295

<!--
Description and motivation for this PR.

Include Fixes #<number> if this is fixing some issue.

Fixes # .
-->

## Changes
In `adroid/build.gradle` file to get value for `minSdkVersion` in
`defaultConfig` it will look for `minSdkVersion` in rootProject then
look for `minSdk` and then fallback to default. Previously it looked for
`minSdkVersion` and fallback if not found.
Similar logic for `targetSdkVersion` and `compileSdkVersion`
<!--
Please describe things you've changed here, make a **high level**
overview, if change is simple you can omit this section.

For example:

- Updated `about.md` docs

-->

<!--

## 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

<!--
Please include code that can be used to test this change and short
description how this example should work.
This snippet should be as minimal as possible and ready to be pasted
into editor (don't exclude exports or remove "not important" parts of
reproduction example)
-->

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
## Description

Add basic support for React Server Components support.

Related PRs for more context:

- necolas/react-native-web#2678
- AppAndFlow/react-native-safe-area-context#502
- software-mansion/react-native-svg#2287

## Changes

- Added basic React Server Component support

## Test code and steps to reproduce

- It's kinda hard to test this E2E. I wrote a small jest runner in
jest-expo which executes in RSC mode, but it requires React 19 to work.
Here's where I tested this patch expo/expo#29404
- It will likely break between now and the full release, but this should
at least reduce the number of patches required to work on Expo Router
support.
- There's pretty good compilation on web:
```
2:I["../../node_modules/react-native-web/dist/exports/View/index.js",[],""]
3:I["../../node_modules/react-native-web/dist/exports/Image/index.js",[],""]
1:{"name":"ScreenStackHeaderBackButtonImage","env":"Server","owner":null}
0:D"$1"
0:["$","$L2",null,{"children":["$","$L3",null,{"resizeMode":"center","fadeDuration":0},"$1"]},"$1"]
```
- And more opaque compilation on native platforms:
```
1:I["../../node_modules/react-native-screens/src/components/ScreenStackHeaderConfig.tsx",[],"ScreenStackHeaderBackButtonImage"]
0:["$","$L1",null,{},null]
```


## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
## Description

Based on:
software-mansion#2337 by
@morganick.
Please see the original PR and its description for details.

See:
software-mansion#2337 (review)
for discussion why new PR has been created.

## Changes

- **Using node resolver to find react native package for better monorepo
support**
- **Using rootDir instead of projectDir**
- **Change the order of path lookup**

## Test code and steps to reproduce

I've tested it using our both example apps and additionally I've created
fresh RN app
and tested the Android build there.


## Checklist

- [x] Ensured that CI passes

---------

Co-authored-by: Nick Morgan <[email protected]>
## Description

Aggregating dependabot updates

* software-mansion#2321
* software-mansion#2322
* software-mansion#2323

## Checklist

- [x] Ensured that CI passes

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…n#2351)

## Description
Together with @kkafar we noticed that when switching back between
BottomTabsView (A -> B -> A) , React is calling removeScreenAt and
addScreen for tab we are leaving - in the same transaction! Because of
that and asynchronous nature of react-native-screens, error described in
software-mansion#2345 exist. We also noticed that this weir behaviour is related to
setting ZIndex in InnerScreen.

Fixes software-mansion#2345

Test 2232 was failing due to change in headerBackTitleVisible property.

> [!Caution]
@kkafar:
Note that this change might be potentially breaking since we're
effectively removing possibility of managing `Screen` components through
"z indices", breaking public API.

@kkafar:
The error mechanism is as follows:

1. `zIndex` being set causes RN diffing mechanism to include two
mutations on the same view in the same transaction - effectively
detaching and attaching it,
2. Thus when we navigate from tab B to A, react first detaches B from
screen container and in the same transaction it attaches it again -
however at the moment of reattach react expects B to be detached. This
is not case due to the fact, that we don't execute updates
synchronously, but rather we just schedule them in another block on UI
thread;
3. React asserts the invariant from point 2., and when we violate it,
its internal state gets corrupted later leading to crash.

We detected that getting rid of setting `zIndex` on screens prevents the
two consecutive operations on the same screen to appear, thus
effectively solving the problem.

Note, however, that we still won't support such cases with multiple
mount/unmount mutations related to the same component in single
transaction.

## Changes


- For every InnerScreen created we set/override ZIndex style to
undefined.
- Use headerBackButtonDisplayMode instead of headerBackTitleVisible.


## Test code and steps to reproduce


## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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

---------

Co-authored-by: Kacper Kafara <[email protected]>
## Description

This PR fixes the incorrect position of the custom header items when
updating more than one option at the same time. The proposed solution
let us remove the previous fix for a similar problem:
software-mansion#2248 which
only fixed the issue on fabric.

Fixes software-mansion#432, software-mansion#2231.

## Changes

- forced re-layout of the navigation controller when subviews are
updated
- removed previous fix
- updated `Test432` repro

<!--

## 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

- use `Test432` and `Test2231` to test this fix on both architectures.

## Checklist

- [x] Included code example that can be used to test this change
- [x] Ensured that CI passes
…oftware-mansion#2356)

## Description

This PR intends to add support for previously removed
`sheetAllowedDetents` and `sheetLargestUndimmedDetent` props values:
`medium`, `large` and `all`.

With addition of custom detents for iOS I've changed the API of
NativeScreen component to receive `number[]` as the detent list and
removed the old options. This removal was unnecessary. I've restored
these options on the `Screen` component abstraction layer, where old
options are translated to the new API w/o need for additional support in
downstream packages such as react-navigation.

Corresponding PR in `react-navigation`:

* react-navigation/react-navigation#12032

## Changes

* updated the types,
* added "translation layer" in InnerScreen.


## Test code and steps to reproduce

Test1649 is great for testing all sheet related props.

## 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
- [x]
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
- [x]
https://github.com/software-mansion/react-native-screens/blob/main/src/native-stack/types.tsx
- [x] Ensured that CI passes
kkafar and others added 29 commits November 21, 2024 19:23
## Description

Recently `FooterComponent` was introduced for internal reasons, however
it hasn't been exported on web
leading to issues.

> [!caution]
> We need to set up CI for web...

Fixes software-mansion#2534

## Changes

`FooterComponent` is now exported from `ScreenFooter.web.tsx`

## Test code and steps to reproduce

??? We do not have a web example - we need to add it.

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
…#2537)

## Description

It has been reported that there are project configurations in which
"$projectDir/../node_modules/react-native" exists, but node module
resolution algorithm
fails to find it. I've reintroduced the aforementioned location.


## Test code and steps to reproduce

Our examples should keep working as always ^^

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
…oftware-mansion#2552)

## Description

> [!note]
> This issue seems to concern only old architecture. See below for
description of Fabric situation 👇🏻

This PR aims to fix a bug described below 👇🏻 and at the same time
balancing on the thin edge of not introducing regressions regarding:
software-mansion#2316, software-mansion#2248, software-mansion#2385.

### Bug description

See `Test2552`. 

The flow is as follows: 

1. we have tab navigator with nested stack navigators on each tab (A &
B),
2. In `useLayoutEffect` we schedule a timer which callback changing the
subview elements,
3. before the timer fires we change the tab from A to B,
4. wait few seconds fot timer to fire,
5. go back to A,
6. notice that the subviews are laid out incorrectly (video below 👇🏻)


https://github.com/user-attachments/assets/2bf621a7-efd4-44cf-95e1-45a46e425f07


Basically what happens is we're sending `layoutIfNeeded` to navigation
bar before subviews are mounted under navigation bar view hierarchy.
This causes "isLayoutDirty" flags to be cleaned up and subsequent
`layoutIfNeeded` messages have no effect.

## Changes

We now wait with triggering layout for the subview to be attached to
window.

> [!note]
> TODO: possibly we should call the layout from `didMoveToWindow` but I
haven't found the case it does not work without the call, so I'm not
adding it for now.

> [!note]
> Calling layout on whole navigation bar for every subview update seems
wrong, however the change is subview change can have effect on other
neighbouring views (e.g. long title which need to be truncated) & it
seems that we need to do this. Maybe we could get away will requesting
it only from UINavigationBarContentView skipping few levels, but this is
left for consideration in the future.

> [!important]
> I do not understand why we need to send `layoutIfNeeded` and
`setNeedsLayout` is not enough, but not sending the former results in
regressions in Test432. Leaving it for future considerations.

### Fabric 

The strategy with setting screen options inside timer nested in
useLayoutEffect seems to not work at all on new architecture. My
impression is that the timer gets cancelled every time the screen loses
focus (tab is changed). I do not know whether this is a bug on our side,
or maybe it should work this way or it is Fabric bug. This should be
debugged in future.


## Test code and steps to reproduce

Test2552 - Follows the steps described above ☝🏻 

Test432 - Follow the steps from issues described in mentioned issues
:point_up:

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
software-mansion#2553)

## Description

I was just writing software-mansion#2552 and got confused that the header config
subviews are added as subviews to the header config view
in host tree, before they are attached to the navigation bar view
hierarchy. This transient state does not make any sense,
and we do not do similar thing on Fabric.

## Changes

`self.superview` returns now `nil` until the subview is mounted in
navigation bar view hierarchy.

Also moved the function to Paper specific section of file, because it is
not called on Fabric on any codepath.

## Test code and steps to reproduce

We haven't used this behaviour. There should be no regression in text
examples.

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
## Description

This PR bumps RN developement version in the library from 0.72 to 0.76 &
updates eslint configuration & few other development packages. Please
note the changes in gesture-handler related types from Screen Transition
API.

These changes are motivated by the fact that I've recently bumped
versions of language servers in my editor & eslint language server
started throwing errors in our example apps (when editing `apps/**`
files) that is does not know anything about `@react-native` config we
try to extend in `apps/.eslintrc.js`. This makes absolute sense, as it
had tried to found the `@react-native` config with "standard module
resolution algorithm", and there were no node_modules containing the
config above `apps` directory. During fixing this I've also noticed
errors in configuration of our root-level `.eslintrc` file.

I've decided to fix this and bump dependencies, so that my eyes don't
hurt from red screen when developing.

## Changes

☝🏻 

I've also described important changes in "review" below 👇🏻 

## Test code and steps to reproduce

I've modified only development dependencies, therefore behaviour for
end-user should not change in any way. Our apps should now work & eslint
config should be improved.

## Checklist

- [ ] Ensured that CI passes
…entation (software-mansion#2562)

## Description

Noticed a low-hanging opportunity to simplify this method while doing
something different.
We already had this loop implemented in helper function so we could use
it.

## Test code and steps to reproduce

CI should be enough

## Checklist

- [ ] Ensured that CI passes
…are-mansion#2563)

## Description

Fixes software-mansion#2550

Empirical research shows that UIKit uses
`interruptibleAnimatorForTransition:` method on
`UIViewAnimatedTransitioning` (our `RNSStackAnimator`)
for navigation item animation. This allowed us customizing navigation
item timing curve & animation style, however it has caused unexpected
content jumps (see software-mansion#2550 or video below 👇).

> [!important]
> This PR reverts changes to navigation item animation introduced with
v4. I guess it could be considered breaking unless it weren't a bit
broken => I'm treating this as a necessary fix
> & will try to bring back "new behaviour" soon, once we figure why
`interruptibleAnimatorForTransition:` causes such bugs.


https://github.com/user-attachments/assets/000fa79d-b01a-4261-941b-c5922e0d17f6

After the changes this looks as follows:




https://github.com/user-attachments/assets/42870bab-304e-4a9d-b253-42d94c6159e7



## Changes

- **Add reproduction**
- **Do not override `interruptibleAnimatorForTransition:` preventing
content jump**

## Test code and steps to reproduce

`TestAnimation`

## Checklist

- [x] Included code example that can be used to test this change
- [ ] Ensured that CI passes
## Description

We recommended to run `yarn prepare` in `react-navigation` submodule,
which is not existend (for some time now I believe).

## Changes

Updated the `yarn submodules` script & fixed the contributing guide.


## Test code and steps to reproduce

Clone fresh repo & follow contributing guide - it should work now. 

## Checklist

- [ ] Ensured that CI passes
## Description

Fixes software-mansion#2525

View hierarchy for modal with header looks kinda like this:

`UITransitionView` -> `Screen` -> `Stack` (`UINavigationController`) ->
`Screen` -> content

calling `[_controller dismissViewControllerAnimated:YES completion:nil]`
on the `Stack` ☝️, according to
[documentation](https://developer.apple.com/documentation/uikit/uiviewcontroller/dismiss(animated:completion:)?language=objc)
should dismiss the view controller itself and any view controllers
presented from that view controller. However in practive it dismisses
not only itself and "above" modal, but also a single modal "below". I'm
not sure
why it is the case. Removing this line of code introduces a bug: during
development, when multiple modals are opened and you reload the
react-native, the modals could be left in stuck state. I'll proceed, as
this bug
bug in development is of much lesser severity. 

I've decided to move the call "one up" the view controller hierarchy, to
avoid calling dismiss directly on UINavigationController as it looks
like it causes the problem. This fixes the problem & keeps the
development behaviour working as intended.

## Changes

Described above ☝️

## Test code and steps to reproduce

I've enhanced `TestModalNavigation` test case to cover this issue. 

## Checklist

- [x] Included code example that can be used to test this change
- [ ] Ensured that CI passes
…on#2566)

Fixed software-mansion#2557. We
have to take preloaded screens into account when freezing screens. Till
now, the assumption was that the newest screens are the ones rendered,
right now top children can be the preloaded ones, so we have to filter
them from calculating the size of frozen screens. We could also think of
freezing the preloaded screens, wdyt about it @satya164 ?
…mansion#2565)

## Description

There is still some header animation noticeable for some reason. <--
This is because we use `fade` transition with duration 0 and do not
override interruptible animator! To prevent the animation we could
either return `nil` interruptible animator (but overriding the method
comes with it's own set of problems, see software-mansion#2563 and other related) or
handle the `none` animation much earlier, when calling
`showViewControllers:animated:` in `updateContainer` (pass `animated:
NO`).

PS: If we would want to pass `animated: NO` I wonder what would happen
to dismiss prevention - we implemented it at the stage of the animation
start... We need to think this through.

Note: Must be implemented with old animation API, because
`UIViewPropertyAnimator` does not allow for 0 duration (it uses default
if the specified animation duration is below some undocumented
treshold).

This regression was introduced with software-mansion#2477 

## Changes

We now use old API for `animation: none` & still rely on fade animation
to implement it. Note the points made above ☝🏻 - we should refactor this
code to make advantage of `animated:` parameter of the
`showViewControllers:animated:`.

## Test code and steps to reproduce

`TestAnimation` - set stack presentation to `none` - it works as prior
to v4.

WIP VIDEO

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
…ansion#2567)

## Description

Add a newly introduced field `ios.componentProvider` to the `codegen`
configuration to create an association map between JS components and
their native implementations.

See more information here:
software-mansion/react-native-svg#2572

## Changes

- added `codegenConfig.ios.componentProvider` field to package.json

### Before

```objc

Class<RCTComponentViewProtocol> RCTThirdPartyFabricComponentsProvider(const char *name) {
  static std::unordered_map<std::string, Class (*)(void)> sFabricComponentsClassMap = {
    // ...
    {"RNSFullWindowOverlay", RNSFullWindowOverlayCls}, // 3
    {"RNSModalScreen", RNSModalScreenCls}, // 3
    {"RNSScreenContainer", RNSScreenContainerCls}, // 3
    {"RNSScreenContentWrapper", RNSScreenContentWrapperCls}, // 3
    {"RNSScreenFooter", RNSScreenFooterCls}, // 3
    {"RNSScreen", RNSScreenCls}, // 3
    {"RNSScreenNavigationContainer", RNSScreenNavigationContainerCls}, // 3
    {"RNSScreenStackHeaderConfig", RNSScreenStackHeaderConfigCls}, // 3
    {"RNSScreenStackHeaderSubview", RNSScreenStackHeaderSubviewCls}, // 3
    {"RNSScreenStack", RNSScreenStackCls}, // 3
    {"RNSSearchBar", RNSSearchBarCls}, // 3
    // ...
```
### After

```objc
@implementation RCTThirdPartyComponentsProvider

+ (NSDictionary<NSString *, Class<RCTComponentViewProtocol>> *)thirdPartyFabricComponents
{
  return @{
		@"RNSFullWindowOverlay": NSClassFromString(@"RNSFullWindowOverlay"), // react-native-screens
		@"RNSModalScreen": NSClassFromString(@"RNSModalScreen"), // react-native-screens
		@"RNSScreenContainer": NSClassFromString(@"RNSScreenContainer"), // react-native-screens
		@"RNSScreenContentWrapper": NSClassFromString(@"RNSScreenContentWrapper"), // react-native-screens
		@"RNSScreenFooter": NSClassFromString(@"RNSScreenFooter"), // react-native-screens
		@"RNSScreen": NSClassFromString(@"RNSScreen"), // react-native-screens
		@"RNSScreenNavigationContainer": NSClassFromString(@"RNSScreenNavigationContainer"), // react-native-screens
		@"RNSScreenStackHeaderConfig": NSClassFromString(@"RNSScreenStackHeaderConfig"), // react-native-screens
		@"RNSScreenStackHeaderSubview": NSClassFromString(@"RNSScreenStackHeaderSubview"), // react-native-screens
		@"RNSScreenStack": NSClassFromString(@"RNSScreenStack"), // react-native-screens
		@"RNSSearchBar": NSClassFromString(@"RNSSearchBar"), // react-native-screens
  };
}
```

## Test code and steps to reproduce

Run `pod install` in React Native 0.77 app and see
`RCTThirdPartyFabricComponentsProvider` to check the content
…are-mansion#2583)

## Description

software-mansion#2567 introduced `ios.componentProvider` field to package definition -
and that's fine, but we're pointing to wrong names there.

## Changes

Updated the names to existing symbol names. 


## Test code and steps to reproduce

This caused runtime errors when running the app on 0.77. I need this
commit for the software-mansion#2581 (0.77 support)

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
…merge in 0.76 (software-mansion#2602)

## Description

Fixes software-mansion#2463 

I haven't been able to reproduce the issue, however multiple people
reported & confirmed it

Thanks @vadzimk for [pointing these
out](software-mansion#2463 (comment)).

When adding support for 0.76.0 we overlooked that we relied on RN
library structure (and naming) not only in CMake build but also in
Gradle configuration.

I've looked up whether reanimated team did this - and [they
did](https://github.com/software-mansion/react-native-reanimated/pull/6499/files#diff-1c0b83a843e69ff75029daed5b4befe9f46d71042a974e7defe9ded23456e0fd)
& we will follow their lead here.

## Changes

Added `libfbjni` & `libreactnative` to exclude list so that these are
subject of `duplicated dependency` error.

## Test code and steps to reproduce

WIP

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
…dManifest (software-mansion#2603)

## Description

See the discussion:


software-mansion#2597 (comment)

## Changes

Removed the package declaration from Android Manifest.

## Test code and steps to reproduce

Passing build should be enough.

## Checklist

- [x] Ensured that CI passes
…re-mansion#2608)

## Description

Since 0.72 RN uses AGP 7.4.x (see software-mansion#2603) and we do not support any older
versions.

## Changes

Removed the check and merged both `buildFeature`s


## Test code and steps to reproduce

Passing Android build

## Checklist

- [x] Ensured that CI passes
## Description

Adding support for react-native 0.77. 
After this PR is merged the library will support 0.74+ Paper and 0.77
Fabric.

Please note, that I haven't notice any not-handled breaking changes -
the library should work with versions down to 0.72 on old architecture
and at least down to 0.76 on Fabric, however we won't extend issue
resolving to these versions.

## Changes

* adjusted example apps on both architectures with changes from upgrade
helper,
* bumped `safe-area-context` to 5.0.0 (it comes with support for Paper
0.74+) in examples (not lib!),
* patched `safe-area-context`:
* AppAndFlow/react-native-safe-area-context#566
* Removed patches for and dependencies on reanimated and gesture-handler
- awaiting for support, see below 👇🏻 (comment) <-- **this must be
restored for e2e to work!!!**
* Reanimated uses [the
patch](software-mansion/react-native-reanimated#6768 (comment))
* Gesture handler has been set to [current
main](https://github.com/software-mansion/react-native-gesture-handler/tree/c3ced78e1608e63b5b3a9bca0c66cc11f4029605)



## Test code and steps to reproduce

When doing some quick checks I haven't noticed any obvious regressions.

## Checklist

- [ ] Ensured that CI passes

---------

Co-authored-by: Marc Rousavy <[email protected]>
…on#2613)

## Description

<!--
Description and motivation for this PR.

Include Fixes #<number> if this is fixing some issue.

Fixes # .
-->

## Changes

<!--
Please describe things you've changed here, make a **high level**
overview, if change is simple you can omit this section.

For example:

- Updated `about.md` docs

-->

<!--

## 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

<!--
Please include code that can be used to test this change and short
description how this example should work.
This snippet should be as minimal as possible and ready to be pasted
into editor (don't exclude exports or remove "not important" parts of
reproduction example)
-->

## Checklist

- [ ] Included code example that can be used to test this change
- [ ] Updated TS types
- [ ] Updated documentation: <!-- For adding new props to native-stack
-->
- [ ]
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
- [ ]
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
@hannomargelo hannomargelo changed the base branch from main to 3.35.0-discord-1 January 14, 2025 17:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.