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

Prevent crash on non-existent view updates in Android #5767

Merged
merged 5 commits into from
May 13, 2024

Conversation

thomas-rx
Copy link
Contributor

@thomas-rx thomas-rx commented Mar 7, 2024

Summary

I'm opening this PR to address a critical issue previously tackled by PR #5216, which has stalled due to the original author's inactivity.

This fix is crucial for resolving significant bugs affecting Android view property updates (referenced in issues #4505, #4231, #3860) that impact application stability and performance.

Typical error :

03-07 19:54:33.543 19722 19722 E unknown:NativeViewHierarchyManager: com.facebook.react.uimanager.IllegalViewOperationException: ViewManager for tag 943 could not be found.

Test plan

Before patching

274365325-8f24027e-01d1-4af0-9bf6-8f611a14c6fa.mp4

After patching

274364540-ccf439b9-8c76-4448-ad83-aaeae91e032b.mp4

This commit introduces a safeguard in the updateProps method to prevent attempts at updating properties on views that either do not exist or have been removed. It adds a try-catch block to gracefully handle these scenarios and returning early to ensure stability in dynamic UI environments.
This commit introduces a safeguard in the updateProps method to prevent attempts at updating properties on views that either do not exist or have been removed. It adds a try-catch block to gracefully handle these scenarios and returning early to ensure stability in dynamic UI environments.
This commit introduces a safeguard in the updateProps method to prevent attempts at updating properties on views that either do not exist or have been removed. It adds a try-catch block to gracefully handle these scenarios and returning early to ensure stability in dynamic UI environments.
Copy link
Member

@piaskowyk piaskowyk left a comment

Choose a reason for hiding this comment

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

Thank you for this PR! 🙌

@piaskowyk piaskowyk added this pull request to the merge queue May 13, 2024
Merged via the queue into software-mansion:main with commit 4cdfe93 May 13, 2024
9 checks passed
renovate bot referenced this pull request in GSTJ/react-native-magic-modal Jun 3, 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-reanimated](https://togithub.com/software-mansion/react-native-reanimated)
| [`~3.11.0` ->
`~3.12.0`](https://renovatebot.com/diffs/npm/react-native-reanimated/3.11.0/3.12.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/react-native-reanimated/3.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-native-reanimated/3.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-native-reanimated/3.11.0/3.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-native-reanimated/3.11.0/3.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

###
[`v3.12.0`](https://togithub.com/software-mansion/react-native-reanimated/releases/tag/3.12.0)

[Compare
Source](https://togithub.com/software-mansion/react-native-reanimated/compare/3.11.0...3.12.0)

#### What's Changed

- Give more meaningful warning when modifying a Shareable by
[@&#8203;tjzel](https://togithub.com/tjzel) in
[https://github.com/software-mansion/react-native-reanimated/pull/5548](https://togithub.com/software-mansion/react-native-reanimated/pull/5548)
- Make animated components use different tags for events by
[@&#8203;szydlovsky](https://togithub.com/szydlovsky) in
[https://github.com/software-mansion/react-native-reanimated/pull/5960](https://togithub.com/software-mansion/react-native-reanimated/pull/5960)
- Add `warning` and `failing` test decorators by
[@&#8203;Latropos](https://togithub.com/Latropos) in
[https://github.com/software-mansion/react-native-reanimated/pull/5929](https://togithub.com/software-mansion/react-native-reanimated/pull/5929)
- Update useAnimatedKeyboard docs by
[@&#8203;maciekstosio](https://togithub.com/maciekstosio) in
[https://github.com/software-mansion/react-native-reanimated/pull/5866](https://togithub.com/software-mansion/react-native-reanimated/pull/5866)
- Change the docs to mention, that `.springify()` works with
`.duration()` by [@&#8203;Latropos](https://togithub.com/Latropos) in
[https://github.com/software-mansion/react-native-reanimated/pull/5990](https://togithub.com/software-mansion/react-native-reanimated/pull/5990)
- \[Android]\[Keyboard] More consistent inequality check to compute
keyboard state by [@&#8203;antFrancon](https://togithub.com/antFrancon)
in
[https://github.com/software-mansion/react-native-reanimated/pull/5874](https://togithub.com/software-mansion/react-native-reanimated/pull/5874)
- fix typo on object key for `targetValues` in custom-animations.mdx by
[@&#8203;JDMathew](https://togithub.com/JDMathew) in
[https://github.com/software-mansion/react-native-reanimated/pull/5994](https://togithub.com/software-mansion/react-native-reanimated/pull/5994)
- Remove outdated code for unsupported React Native versions by
[@&#8203;tomekzaw](https://togithub.com/tomekzaw) in
[https://github.com/software-mansion/react-native-reanimated/pull/5979](https://togithub.com/software-mansion/react-native-reanimated/pull/5979)
- Remove REAInitializer by
[@&#8203;tomekzaw](https://togithub.com/tomekzaw) in
[https://github.com/software-mansion/react-native-reanimated/pull/5681](https://togithub.com/software-mansion/react-native-reanimated/pull/5681)
- Prevent crash on non-existent view updates in Android by
[@&#8203;thomas-rx](https://togithub.com/thomas-rx) in
[https://github.com/software-mansion/react-native-reanimated/pull/5767](https://togithub.com/software-mansion/react-native-reanimated/pull/5767)
- Fix location after shared element transition by
[@&#8203;piaskowyk](https://togithub.com/piaskowyk) in
[https://github.com/software-mansion/react-native-reanimated/pull/6010](https://togithub.com/software-mansion/react-native-reanimated/pull/6010)
- Make `useScrollviewOffset` ref nullable and simplify its code by
[@&#8203;szydlovsky](https://togithub.com/szydlovsky) in
[https://github.com/software-mansion/react-native-reanimated/pull/6009](https://togithub.com/software-mansion/react-native-reanimated/pull/6009)
- fix: use proper classes for bridgeless by
[@&#8203;WoLewicki](https://togithub.com/WoLewicki) in
[https://github.com/software-mansion/react-native-reanimated/pull/5997](https://togithub.com/software-mansion/react-native-reanimated/pull/5997)
- docs: add
[@&#8203;swmansion/t-rex-ui](https://togithub.com/swmansion/t-rex-ui) by
[@&#8203;patrycjakalinska](https://togithub.com/patrycjakalinska) in
[https://github.com/software-mansion/react-native-reanimated/pull/6015](https://togithub.com/software-mansion/react-native-reanimated/pull/6015)
- Remove `CellRendererComponent` from Animated.FlatList props by
[@&#8203;Latropos](https://togithub.com/Latropos) in
[https://github.com/software-mansion/react-native-reanimated/pull/5951](https://togithub.com/software-mansion/react-native-reanimated/pull/5951)
- Add `useComposedEventHandler` hook by
[@&#8203;szydlovsky](https://togithub.com/szydlovsky) in
[https://github.com/software-mansion/react-native-reanimated/pull/5890](https://togithub.com/software-mansion/react-native-reanimated/pull/5890)
- Align handling colors with RN by
[@&#8203;maciekstosio](https://togithub.com/maciekstosio) in
[https://github.com/software-mansion/react-native-reanimated/pull/5825](https://togithub.com/software-mansion/react-native-reanimated/pull/5825)
- Add more tests - useSharedValue, useAnimatedStyle , useDerivedValue by
[@&#8203;Latropos](https://togithub.com/Latropos) in
[https://github.com/software-mansion/react-native-reanimated/pull/5981](https://togithub.com/software-mansion/react-native-reanimated/pull/5981)
- Make animation RollInLeft work with modifers by
[@&#8203;Latropos](https://togithub.com/Latropos) in
[https://github.com/software-mansion/react-native-reanimated/pull/6039](https://togithub.com/software-mansion/react-native-reanimated/pull/6039)
- Test predefined entering animation by
[@&#8203;Latropos](https://togithub.com/Latropos) in
[https://github.com/software-mansion/react-native-reanimated/pull/5995](https://togithub.com/software-mansion/react-native-reanimated/pull/5995)
- Tests: cancelAnimation, useFrameCallback, measure, withDecay by
[@&#8203;Latropos](https://togithub.com/Latropos) in
[https://github.com/software-mansion/react-native-reanimated/pull/6016](https://togithub.com/software-mansion/react-native-reanimated/pull/6016)
- docs: fix useAnimatedKeyboard page crash by
[@&#8203;patrycjakalinska](https://togithub.com/patrycjakalinska) in
[https://github.com/software-mansion/react-native-reanimated/pull/6056](https://togithub.com/software-mansion/react-native-reanimated/pull/6056)
- \[Web LA] Remove `existingTransform` by
[@&#8203;m-bert](https://togithub.com/m-bert) in
[https://github.com/software-mansion/react-native-reanimated/pull/6060](https://togithub.com/software-mansion/react-native-reanimated/pull/6060)

#### New Contributors

[@&#8203;antFrancon](https://togithub.com/antFrancon),
[@&#8203;JDMathew](https://togithub.com/JDMathew),
[@&#8203;thomas-rx](https://togithub.com/thomas-rx),
[@&#8203;exploIF](https://togithub.com/exploIF)

#### 🙌 Thank you for your contributions!

**Full Changelog**:
software-mansion/react-native-reanimated@3.11.0...3.12.0

Package build:
https://github.com/software-mansion/react-native-reanimated/actions/runs/9287839734

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, 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/GSTJ/react-native-magic-modal).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNzcuOCIsInVwZGF0ZWRJblZlciI6IjM3LjM3Ny44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.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