-
Notifications
You must be signed in to change notification settings - Fork 3k
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
[No QA] Upgrade RN to 0.70.4 (aka 0.70.1) #10860
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
Took me a bit but this is ready for review! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ - Web
✅ - Desktop
✅ - iOS
🟨 - Android dev builds - seem 1000x better
- Navigation is a bit slow / unusable on my account with a few hundred chats
- But I could not even test the app locally before so huge improvement overall
🟥 - Android release build didn't work for me and I ran into this weird error
Execution failed for task ':app:bundleReleaseJsAndAssets'.
> java.lang.Exception: Couldn't determine Hermesc location. Please set `project.ext.react.hermesCommand` to the path of the hermesc binary file. node_modules/react-native/sdks/hermesc/%OS-BIN%/hermesc
Tried to look at that path but didn't find hermesc
in node_modules/react-native/sdks
.
// We configure the NDK build only if you decide to opt-in for the New Architecture. | ||
// We configure the CMake build only if you decide to opt-in for the New Architecture. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like we're switching from the ndk to Cmake? In which case, can we remove the other ndk config?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well we're switching from ndk-build
to CMake
, but the Java NDK is still used ... that's what enables Java and C++ code to communicate with eachother
@@ -189,8 +182,8 @@ android { | |||
if (isNewArchitectureEnabled()) { | |||
// We configure the NDK build only if you decide to opt-in for the New Architecture. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We configure the CMake build
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Web and Desktop worked for me 👍
iOS - I'm unable to build due to this error, even after pod deintegrate. Are you guys using a specific version of XCode?
Android - I see the same issue as Marc, but interestingly it also occurs on main
... Here's the RN issue, many people seem to be having the same problem
@Julesssss Make sure you pull changes? It should be: use_react_native!(
+ :path => config[:reactNativePath],
- :path => config["reactNativePath"],
... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I found a workaround for the Android Release build issue. Simply generate a release build manually with Build > Generate Signed bundle / APK
. Android release and debug builds are testing well 👍
Make sure you pull changes? It should be:
Ah, thanks. I had switched to main for testing and forgot I was on the wrong branch 🤦 I'm now seeing a different error. Trying a full pod deintegrate again...
I saw that error and fixed it with |
Hmmm ... I think |
Going to republish once again |
Updated and retested – this now appears to be working on Web, Desktop, iOS, Android (debug) AND Android (release) 👍🏼 Thanks @marcaaron for being super diligent and testing a release build too 👏🏼 FWIW, I did what I had done in the past and downloaded the pre-built Hermes binaries, force-committed them in the fork, and included them in the release. This is ideal because it means that nobody (not even our GitHub CI/CD) has to compile Hermes, which takes like an hour |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM and works great !
@Julesssss I'm on 13.4.1 atm. I did have to run some pod commands that were recommended to update the hermes build there |
|
Gonna merge this so we can keep up the #urgency on WhatsApp Quality. |
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
🚀 Deployed to staging by @marcaaron in version: 1.2.6-0 🚀
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
🚀 Deployed to production by @roryabraham in version: 1.2.6-0 🚀
|
How to review this PR
A lot of these changes might seem kind of random, but I was simply following the RN upgrade helper between our last version (
0.69.3
) and the new one (0.70.1
): https://react-native-community.github.io/upgrade-helper/?from=0.69.3&to=0.70.1Use that as a guide to review these changes.
Details
This PR update the React Native version to
@expensify/react-native@0.70.2
, which is based on React Native0.70.1
. Hopefully the next time we publish the fork, it will be with the same version from the upstream. My bad!This upgrade should result in much better JSI performance, hopefully will fix the debug-build performance issues on the Android app. Overall many of the other upgrades from
0.70
are config or build-system related AFAICT.As part of this, I had to update reanimated to a version that's compatible with RN 0.70.
Fixed Issues
(partial) #8503
(partial) #10345
Tests
Run the app. Make sure that the build succeeds and perform various regression tests of basic functionality to see that it works as expected.
PR Review Checklist
Contributor (PR Author) Checklist
### Fixed Issues
section aboveTests
sectionQA steps
sectiontoggleReport
and notonIconClick
)src/languages/*
filesSTYLE.md
) were followedAvatar
, I verified the components usingAvatar
are working as expected)/** comment above it */
displayName
propertythis
properly so there are no scoping issues (i.e. foronClick={this.submit}
the methodthis.submit
should be bound tothis
in the constructor)this
are necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);
ifthis.submit
is never passed to a component event handler likeonClick
)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG
)Avatar
is modified, I verified thatAvatar
is working as expected in all cases)PR Reviewer Checklist
The Contributor+ will copy/paste it into a new comment and complete it after the author checklist is completed
### Fixed Issues
section aboveTests
sectionQA steps
sectiontoggleReport
and notonIconClick
).src/languages/*
filesSTYLE.md
) were followedAvatar
, I verified the components usingAvatar
have been tested & I retested again)/** comment above it */
displayName
propertythis
properly so there are no scoping issues (i.e. foronClick={this.submit}
the methodthis.submit
should be bound tothis
in the constructor)this
are necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);
ifthis.submit
is never passed to a component event handler likeonClick
)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG
)Avatar
is modified, I verified thatAvatar
is working as expected in all cases)QA Steps
None, regression tests only.
Screenshots
Web
Mobile Web
Desktop
iOS
Android