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

fix: remove workaround for removing clipped subviews #2596

Open
wants to merge 24 commits into
base: main
Choose a base branch
from

Conversation

kkafar
Copy link
Member

@kkafar kkafar commented Dec 30, 2024

Description

This PR removes the workaround introduced in series of PRs (listed chronologically here):

  1. fix(Android): incorrect childCount in removeViewAt when using flatlist on fabric #2307
  2. fix(Android): going back on fabric with nested list #2383
  3. fix(Android): going back on fabric with removeClippedSubviews #2495
  4. fix(Android): prevent crash when we can not insert any subviews into child #2531

For detailed description of error mechanism and broader discussion please refer to:

  1. my comment on #2495,
  2. my fix to RN core

tldr: When popping screen on Fabric we marked the views as "transitioning" and this led to view being effectively miscounted
during removal by view groups that supported react-native's subview clipping mechanism.

The issue has been present most likely in every version of the library when running on Android & Fabric, but it arose few months ago due to broader
adoption of the new architecture.

facebook/react-native#47634 is supposed to fix the underlying issue in react-native's core.

Changes

Removed the workaround code from Screen implementation on Android.

The

has been released with 0.77.0-rc.3 and followup small fixup:

has been released with 0.77.0-rc.4.

Therefore, with landing this PR we should limit our support on Fabric to 0.77.0.

Test code and steps to reproduce

Test2282 - note that there are few testing variants available there, you just need to comment (out) some parts of the code.

Checklist

  • Included code example that can be used to test this change
  • Ensured that CI passes

kkafar and others added 23 commits December 18, 2024 12:00
I could not get the project to compile without this file. Tried cleaning
caches, nuking derived data, Pods, build directory etc. It just has to
be there for some reason 🤷 I do not know also why XCode
duplicates this file...
## Description
This is required for RN 0.77 apparently. TurboReactPackage is deprecated
on new arch. No idea why.

I am not sure about backwards compatibility either, sorry.

Feel free to close this PR if this isn't backwards compatible.

<!--
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
The change is required because BaseViewManagerInterface has been removed
in facebook/react-native#46809 and we need this
to keep the lib working on old architecture with react-native 0.77+.

This change, according to the PR is supposed to be backward compatible
(older versions of react-native) should work with these new codegen
specs.
I've removed dependency on gesturehandler few commits before and
presence of this patch caused the CI to fail.

We need to check out more recent gesturehandler versions anyway.
@kkafar kkafar changed the base branch from main to @kkafar/support-0.77 December 30, 2024 13:47
Base automatically changed from @kkafar/support-0.77 to main January 10, 2025 10:11
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.

2 participants