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(Android): Set stateWrapper in ScreenViewManager in Fabric #1944

Merged
merged 5 commits into from
Oct 27, 2023

Conversation

joemun
Copy link
Contributor

@joemun joemun commented Oct 23, 2023

Description

We are in the process of migrating to New Architecture. We noticed a suspicious error message in LogCat, and discovered that FabricEnabledViewGroup's state updates in updateScreenSizeFabric() would fail with "setState called without a StateWrapper", due to:

https://github.com/facebook/react-native/blob/79d620dff7561e6c9370184f9f19e79643486716/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java#L65

Changes

Call fabricViewStateManager.setStateWrapper() in ScreenViewManager.kt.

Screen Shot 2023-10-23 at 11 20 09 AM Screen Shot 2023-10-23 at 11 32 28 AM

Test code and steps to reproduce

Run FabricExample and Example. View LogCat logs.

Checklist

@joemun joemun changed the title [android][fabric] Set stateWrapper in ScreenViewManager fix(Android) Set stateWrapper in ScreenViewManager in Fabric Oct 23, 2023
@joemun joemun changed the title fix(Android) Set stateWrapper in ScreenViewManager in Fabric fix(Android): Set stateWrapper in ScreenViewManager in Fabric Oct 23, 2023
@joemun joemun marked this pull request as draft October 23, 2023 22:17
@joemun joemun marked this pull request as ready for review October 23, 2023 23:33
Copy link
Member

@tboba tboba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @joemun, great job! Thanks for creating the PR! 🎉
Just one comment from me

Copy link
Member

@tboba tboba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just one more thing 😄

Co-authored-by: Tymoteusz Boba <Tymoteusz.Boba@gmail.com>
Co-authored-by: Tymoteusz Boba <Tymoteusz.Boba@gmail.com>
Copy link
Member

@tboba tboba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@tboba tboba merged commit 5eb15d8 into software-mansion:main Oct 27, 2023
4 checks passed
@joemun joemun deleted the @joemun/fabric-setstatewrapper branch October 27, 2023 15:55
@tboba
Copy link
Member

tboba commented Dec 7, 2023

Hi @joemun! I'm happy to say that we've released new version of react-native-screens (3.29.0) that contains changes from this PR 🥳

Check it out! If you find something wrong related to the newest version (this change is still buggy or doesn't work for you) let us know 🎉

renovate bot referenced this pull request in valora-inc/wallet Jan 8, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[react-native-screens](https://togithub.com/software-mansion/react-native-screens)
| [`^3.27.0` ->
`^3.29.0`](https://renovatebot.com/diffs/npm/react-native-screens/3.27.0/3.29.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/react-native-screens/3.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-native-screens/3.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-native-screens/3.27.0/3.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-native-screens/3.27.0/3.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>software-mansion/react-native-screens
(react-native-screens)</summary>

###
[`v3.29.0`](https://togithub.com/software-mansion/react-native-screens/releases/tag/3.29.0)

[Compare
Source](https://togithub.com/software-mansion/react-native-screens/compare/3.28.0...3.29.0)

Minor release including fix for iOS that was accidentally omitted from
3.28.0. It should be now possible to present modal in outer stack, from
modal in nested stack (😄 )

#### What's Changed

#### 🐛 Bug fixes

- fix(iOS): select correct VC for nested modal presentation by
[@&#8203;kkafar](https://togithub.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1912](https://togithub.com/software-mansion/react-native-screens/pull/1912)

**Full Changelog**:
software-mansion/react-native-screens@3.28.0...3.29.0

###
[`v3.28.0`](https://togithub.com/software-mansion/react-native-screens/releases/tag/3.28.0)

[Compare
Source](https://togithub.com/software-mansion/react-native-screens/compare/3.27.0...3.28.0)

Minor release adding a support for **React Native 0.73**, adding new
iOS-like slide animation, fixing crashes with AVPlayer on iOS and
resolving build issues on Android.

#### What's Changed

#### 🐛 Bug fixes

- Update status bar & orientation in screen stack fragment by
[@&#8203;delphinebugner](https://togithub.com/delphinebugner) in
[https://github.com/software-mansion/react-native-screens/pull/1934](https://togithub.com/software-mansion/react-native-screens/pull/1934)
- Set stateWrapper in ScreenViewManager in Fabric by
[@&#8203;joemun](https://togithub.com/joemun) in
[https://github.com/software-mansion/react-native-screens/pull/1944](https://togithub.com/software-mansion/react-native-screens/pull/1944)
- Don't include AVPlayerView in `traverseForScrollView` method by
[@&#8203;tboba](https://togithub.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1969](https://togithub.com/software-mansion/react-native-screens/pull/1969)
- Fix error about duplicate class ViewModelLazy by
[@&#8203;tboba](https://togithub.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1977](https://togithub.com/software-mansion/react-native-screens/pull/1977)
- Move DelayedFreeze setImmediate into an effect by
[@&#8203;amadeus](https://togithub.com/amadeus) in
[https://github.com/software-mansion/react-native-screens/pull/1980](https://togithub.com/software-mansion/react-native-screens/pull/1980)

#### 👍 Improvements

- Add ios like slide animation by
[@&#8203;alexandrius](https://togithub.com/alexandrius) in
[https://github.com/software-mansion/react-native-screens/pull/1945](https://togithub.com/software-mansion/react-native-screens/pull/1945)

#### 🔢 Miscellaneous

- Support for RN 0.73 by [@&#8203;kkafar](https://togithub.com/kkafar)
in
[https://github.com/software-mansion/react-native-screens/pull/1956](https://togithub.com/software-mansion/react-native-screens/pull/1956)
- Use JDK 17 for CI builds as required for RN 0.73 by
[@&#8203;kkafar](https://togithub.com/kkafar) in
[https://github.com/software-mansion/react-native-screens/pull/1957](https://togithub.com/software-mansion/react-native-screens/pull/1957)
- Update Podfile.lock files in example projects by
[@&#8203;tboba](https://togithub.com/tboba) in
[https://github.com/software-mansion/react-native-screens/pull/1979](https://togithub.com/software-mansion/react-native-screens/pull/1979)

#### New Contributors

- [@&#8203;delphinebugner](https://togithub.com/delphinebugner) made
their first contribution in
[https://github.com/software-mansion/react-native-screens/pull/1934](https://togithub.com/software-mansion/react-native-screens/pull/1934)
- [@&#8203;joemun](https://togithub.com/joemun) made their first
contribution in
[https://github.com/software-mansion/react-native-screens/pull/1944](https://togithub.com/software-mansion/react-native-screens/pull/1944)
- [@&#8203;alexandrius](https://togithub.com/alexandrius) made their
first contribution in
[https://github.com/software-mansion/react-native-screens/pull/1945](https://togithub.com/software-mansion/react-native-screens/pull/1945)
- [@&#8203;amadeus](https://togithub.com/amadeus) made their first
contribution in
[https://github.com/software-mansion/react-native-screens/pull/1980](https://togithub.com/software-mansion/react-native-screens/pull/1980)

**Full Changelog**:
software-mansion/react-native-screens@3.27.0...3.28.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 5pm,every weekend" in timezone
America/Los_Angeles, Automerge - "after 5pm,every weekend" in timezone
America/Los_Angeles.

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/valora-inc/wallet).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjEyMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: valora-bot <valorabot@valoraapp.com>
ja1ns pushed a commit to WiseOwlTech/react-native-screens that referenced this pull request Oct 9, 2024
…re-mansion#1944)

## Description

We are in the process of migrating to New Architecture. We noticed a
suspicious error message in LogCat, and discovered that
`FabricEnabledViewGroup`'s state updates in `updateScreenSizeFabric()`
would fail with "setState called without a StateWrapper", due to:


https://github.com/facebook/react-native/blob/79d620dff7561e6c9370184f9f19e79643486716/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/FabricViewStateManager.java#L65

## Changes

Call `fabricViewStateManager.setStateWrapper()` in
`ScreenViewManager.kt`.

<img width="1285" alt="Screen Shot 2023-10-23 at 11 20 09 AM"
src="https://github.com/software-mansion/react-native-screens/assets/12057449/3411e42d-fba3-4b11-b601-66cfb557cc62">

<img width="1808" alt="Screen Shot 2023-10-23 at 11 32 28 AM"
src="https://github.com/software-mansion/react-native-screens/assets/12057449/28d1f518-da4a-4971-bfb2-5c2c5b7458e0">

## Test code and steps to reproduce

Run `FabricExample` and `Example`. View LogCat logs.

## 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: Tymoteusz Boba <Tymoteusz.Boba@gmail.com>
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