-
Notifications
You must be signed in to change notification settings - Fork 987
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
research for enabling new architecture in react-native #18138
Comments
When we enable new architecture for iOS the first thing that breaks is the
seems like https://github.com/zoontek/react-native-permissions/releases/tag/4.0.0 release has a fix for this. |
When we enable new architecture for Android the first thing that breaks is the
seems like https://github.com/software-mansion/react-native-gesture-handler/releases/tag/2.12.0 has support for new architecture. |
update : The next thing to break is
and
|
This PR does many things : - Upgrade `react-native ` to `0.72.5` - Upgrade `react-native-reanimated` to `3.5.4` - Upgrade `react-native-navigation` to `7.37.0` - `ndkVersion` has been bumped to `25.2.9519653` - `cmakeVersion` has been bumped to `3.22.1` - `kotlinVersion` has been bumped to `1.7.22` - `AGP` has been bumped to `7.4.2` - `Gradle` has been upgraded to `8.0.1` - Android `CompileSDK` and `TargetSDK` have been bumped to 33 - `@react-native-async-storage/async-storage` has been upgraded to `1.19.3` - `@walletconnect/client` has been nuked - some of the old `react-native-reanimated` code has been nuked - `react-native-keychain` fork has been replaced with `8.1.2` - On Android we are currently relying on `Hermes` Engine. - On iOS we are currently relying on JSC - We are not enabling new architecture for now (I have plans for that in the future) ref: #18138 IOS only PR : #16721 Android only PR : #17062 - `make run-metro` now has a target of `android` which was `clojure` earlier, this will increase the time it takes to start metro terminal but this is needed otherwise you will get a nasty error while developing for android locally.
This commit does many things : - Upgrade `react-native ` to `0.72.5` - Upgrade `react-native-reanimated` to `3.5.4` - Upgrade `react-native-navigation` to `7.37.0` - `ndkVersion` has been bumped to `25.2.9519653` - `cmakeVersion` has been bumped to `3.22.1` - `kotlinVersion` has been bumped to `1.7.22` - `AGP` has been bumped to `7.4.2` - `Gradle` has been upgraded to `8.0.1` - Android `CompileSDK` and `TargetSDK` have been bumped to 33 - `@react-native-async-storage/async-storage` has been upgraded to `1.19.3` - `@walletconnect/client` has been nuked - some of the old `react-native-reanimated` code has been nuked - `react-native-keychain` fork has been replaced with `8.1.2` - On Android we are currently relying on `Hermes` Engine. - On iOS we are currently relying on JSC - We are not enabling new architecture for now (I have plans for that in the future) ref: #18138 IOS only PR : #16721 Android only PR : #17062 - `make run-metro` now has a target of `android` which was `clojure` earlier, this will increase the time it takes to start metro terminal but this is needed otherwise you will get a nasty error while developing for android locally.
This commit does many things : - Upgrade `react-native ` to `0.72.5` - Upgrade `react-native-reanimated` to `3.5.4` - Upgrade `react-native-navigation` to `7.37.0` - `ndkVersion` has been bumped to `25.2.9519653` - `cmakeVersion` has been bumped to `3.22.1` - `kotlinVersion` has been bumped to `1.7.22` - `AGP` has been bumped to `7.4.2` - `Gradle` has been upgraded to `8.0.1` - Android `CompileSDK` and `TargetSDK` have been bumped to 33 - `@react-native-async-storage/async-storage` has been upgraded to `1.19.3` - `@walletconnect/client` has been nuked - some of the old `react-native-reanimated` code has been nuked - `react-native-keychain` fork has been replaced with `8.1.2` - On Android we are currently relying on `Hermes` Engine. - On iOS we are currently relying on `JSC` - We are not enabling new architecture for now (I have plans for that in the future) ref: #18138 IOS only PR : #16721 Android only PR : #17062 - `make run-metro` now has a target of `android` which was `clojure` earlier, this will increase the time it takes to start metro terminal but this is needed otherwise you will get a nasty error while developing for android locally.
If I just remove the fork of
|
Now that react-native upgrade is merged -> #18563 Resuming work on this and I think its better at this point to first fix how we apply patches to status-mobile. Due to the limitations of patch phase we mostly relied on making forks of libraries and these forks are often outdated. We should also begin research into effort it would take to migrate native modules to JSI. |
@BalogunofAfrica suggested we use this This forms a good checklist for us
|
This commit swaps the fork of @react-native-camera-roll/camera-roll with a patch and upgrades this library to the latest version. needed for : #18138 Verify if camera album related features still work. - iOS status: ready
This commit swaps the fork of @react-native-camera-roll/camera-roll with a patch and upgrades this library to the latest version. needed for : #18138 Verify if camera album related features still work. - iOS status: ready
This commit swaps the fork of @react-native-camera-roll/camera-roll with a patch and upgrades this library to the latest version. needed for : #18138 Verify if camera album related features still work. - iOS status: ready
## Summary This commit upgrades `react-native-permissions` library to latest version 4.1.5 needed for : #18138 ## Review & Test notes Please test permissions related flows on onboarding, selecting images, notifications and any other areas you can think of. ## Platforms - iOS - Android status: ready
## Summary This commit upgrades `react-native-permissions` library to latest version 4.1.5 needed for : #18138 ## Review & Test notes Please test permissions related flows on onboarding, selecting images, notifications and any other areas you can think of. ## Platforms - iOS - Android status: ready
## Summary This commit swaps the fork of react-native-mail with a patch. needed for : #18138 ## Review & Test notes Verify if mailing logs still works. ## Platforms - iOS - Android status: ready
## Summary This commit swaps the fork of @react-native-community/blur with a patch and upgrades the library to latest version of 4.4.0 needed for : #18138 ## Review & Test notes Verify if blur stuff still works. ## Platforms - iOS - Android status: ready
## Summary This commit swaps the fork of react-native-mail with a patch. needed for : #18138 ## Review & Test notes Verify if mailing logs still works. ## Platforms - iOS - Android status: ready
## Summary This commit swaps the fork of react-native-mail with a patch. needed for : #18138 ## Review & Test notes Verify if mailing logs still works. ## Platforms - iOS - Android status: ready
## Summary This commit swaps the fork of @react-native-community/blur with a patch and upgrades the library to latest version of 4.4.0 needed for : #18138 ## Review & Test notes Verify if blur stuff still works. ## Platforms - iOS - Android status: ready
## Summary This commit upgrades `react-native-permissions` library to latest version 4.1.5 needed for : #18138 ## Review & Test notes Please test permissions related flows on onboarding, selecting images, notifications and any other areas you can think of. ## Platforms - iOS - Android status: ready
we're not done yet |
reactwg/react-native-new-architecture#189
|
I tried to enable new architecture for Android on top of this PR -> #20308 which removes blur library usage on Android. |
it does seem like there is an issue which has no response for new architecture support -> DylanVann/react-native-fast-image#925 I'll try upgrading to use the patch but it does seem better to try alternative libraries at this point. |
I think looking for an alternative would be better. Author doesn't seem to be interested and not handing over to willing maintainers https://x.com/dylan_h_vann/status/1600956747144896526 |
Yes I tried the patch but it didn't work and I also looked at alternatives that support new architecture but couldn't find any. |
Another thing that breaks on Android is |
seems like |
we can drop |
i'm wondering why there is no backward compatibility, there should be, both versions of libs should work just fine, no? |
yes it would make sense for Android to behave like iOS. |
@flexsurfer, could you expand on why you think we can drop it? My thinking is, why did devs in the past added it to |
@ilmotta sure, it was added before the media server when we had lots of base64 images, and with |
I see, if the request is almost always a cache miss, then |
it's hard to say if it would be better or not, but cache should be disabled for |
Agreed! 👍🏼 |
@flexsurfer I think you are referring to that performance issue originally raised by @clauxx
@ilmotta if we are handling caching externally then I believe |
Yeah @OmarBasem I'm not entirely sure, but I think our media server is not generating the cache headers that FastImage can take advantage of. But I never investigated this part of FastImage to know how the lack of cache headers can affect it, but surely in its documentation this is mentioned. It does look as you guys are saying that it will be fine to replace it with Image 👍🏼 |
Hey, we at Software Mansion have been working on improving support for the new architecture for quite a while now. You can check how we helped |
Thanks @flexsurfer for recommending reactwg/react-native-new-architecture#135 so for now we could tell react-native to not use fabric for the following components that were found to be incompatible on Android :
|
@WoLewicki : Thanks for the offer, I really appreciate your offer to help with this! |
Feature Issue
This issue will contain research for enabling new architecture in react-native.
react-native-camera-roll
lib to7.2.x
& move code in fork to a patch. -> swap @react-native-camera-roll/camera-roll fork with patches & upgrade to 7.5.2 #19664react-native-permissions
lib to4.x
-> upgrade react-native-permissions library #19695RCT_NEW_ARCH_ENABLED=1
flag along with pod install to enable new architecture. We run pod install during our build process here :nix/mobile/ios/shells/cocoapods.nix
-> [iOS Only] Enable new architecture for react-native #19748react-native-linear-gradient
lib to3.0.0-alpha.1
-> deps: bump react-native-linear-gradient library #20329newArchEnabled
flag to true atandroid/gradle.properties
-> enable new architecture for android PR,Release builds only #20950Libraries that support new architecture and WIP : reactwg/react-native-new-architecture#6 (comment)
The text was updated successfully, but these errors were encountered: