Fix RNRenderer import for React Native 0.86+#4160
Conversation
There was a problem hiding this comment.
Pull request overview
This PR restores compatibility with React Native 0.86+ by replacing the removed react-native/Libraries/Renderer/shims/ReactNative import with RendererProxy, while keeping a fallback to the legacy shim for older React Native versions.
Changes:
- Replace the previous re-export with a runtime
requirethat prefersreact-native/Libraries/ReactNative/RendererProxy. - Add a
try/catchfallback to the legacyreact-native/Libraries/Renderer/shims/ReactNativeshim for RN < 0.86. - Update linting approach from
@ts-nocheckto targeted eslint disables andany.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
m-bert
left a comment
There was a problem hiding this comment.
HI @zoontek! Thank you for this PR!
I've checked that and it seems that it doesn't work 😞 I've also did this on standalone RN 0.86 app outside of our monorepo with the same result. Nesting second require in try/catch block fixes this problem.
What we've found out is that RNRenderer is used only in one place, to validate GestureDetector children. However, this is already covered earlier in the flow. So our conclusion is that it probably can be safely removed instead of changed.
Would you like to do this, or should we handle it? 😅
|
@m-bert Done ✅ |
## Description This PR brings support for React Native 0.86 ## Required changes - #4160 - Module has not been registered as callable ([6c29e4e](6c29e4e)) ## Status - ## 0.86.0 ✅ - 0.86.0-rc.3 ✅ - 0.86.0-rc.2 ✅ - 0.86.0-rc.1 ✅ - 0.86.0-rc.0 ✅ ## Test plan Tested that `basic-example` builds and works correctly.
## Description Cherry pick thread for release 2.32 ## List of PRs | PR | Original commit | Picked commit | Without confilct | |:----------:|:-------------:|:------:|:--------:| | [[Android] Remove `getChildInDrawingOrderAtIndex`](#4156) | [f1f09bc](f1f09bc) | [d76f2d9](d76f2d9) | ❌ | | [[iOS] Fix duplicated `testID`](#4186) | [7feab6e](7feab6e) | [d1173ec](d1173ec) | ❌ | | [[Android] Fix discrete gestures not triggering `onFinalize`](#4196) | [117087e](117087e) | [06212cf](06212cf) | ✅ | | [[Android] Fix wrong reported number of pointers](#4218) | [f17bcbd](f17bcbd) | [5fd30f6](5fd30f6) | ❌ | | [fix(pods): Fix invalid `react-native/../react-native` resolution for aliases](#4232) | [9a9f8b4](9a9f8b4) | [cacf6c0](cacf6c0) | ✅ | | [Move ruby utils to module](#4245) | [62d0d52](62d0d52) | [3884f30](3884f30) | ❌ | | [[iOS] Fix handler retrieval and mismatched coordinate space](#4199) | [b1da40b](b1da40b) | [2b48a8e](2b48a8e) | ❌ | | [[iOS] Don't iterate to root while resolving recognizer](#4202) | [fba4dcc](fba4dcc) | [b81f2aa](b81f2aa) | ❌ | | [Support React Native 0.86](#4166) | [96dfc00](96dfc00) | [7df6d1a](7df6d1a) | ❌ | | [Fix `RNRenderer` import for React Native 0.86](#4160) | [0417378](0417378) | [6775d33](6775d33) | ❌ | | [Bump `expo` to stable 56](#4227) | [45e6ac8](45e6ac8) | [0478bb5](0478bb5) | ❌ | | [[macOS] Bump example app](#3993) | [8ec0820](8ec0820) | [cfc5dd4](cfc5dd4) | ❌ | | [Bump Reanimated](#4040) | [23d96d9](23d96d9) | [a2101eb](a2101eb) | ❌ | | [fix(Android): apply `numberOfPointers` config to the pointer requirement in `LongPressGestureHandler`](#4253) | [a70c6e3](a70c6e3) | [af40f9b](af40f9b) | ✅ | ## Test plan Tested that example apps are built correctly --------- Co-authored-by: Pieter De Baets <pieter.debaets@gmail.com> Co-authored-by: Mathieu Acthernoene <zoontek@gmail.com> Co-authored-by: Jakub Piasecki <jakub.piasecki@swmansion.com> Co-authored-by: Phil Pluckthun <phil@kitten.sh> Co-authored-by: prashanFOMO <prashan@fomo.family> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Description
React Native 0.86 removed
Libraries/Renderer/shims/ReactNative, breaking theRNRendererimport. This PR switch toRendererProxyand fall back to the legacy shim for compatibility with RN < 0.86.