react-native-community / releases

React Native releases
https://github.com/facebook/react-native/
1.5k stars 405 forks source link

v0.64.0 Discussion #207

Closed TheSavior closed 3 years ago

TheSavior commented 4 years ago

This release has not happened yet. This issue is for us to start tracking remaining work and coordinating with our relevant partner teams around the timing of the release

Highlighted Changes

Work Required

Hopeful Dates

We can never commit to the dates involved in a release as many things are out of our control. However, we are thinking about these rough dates for this release.

dirkpostma commented 3 years ago

@kelset Here is a good discussion upon that subject:

https://github.com/facebook/hermes/issues/34

Summary:

3.3.2 Except as set forth in the next paragraph, an Application may not download or install
executable code. Interpreted code may be downloaded to an Application but only so long as
such code: (a) does not change the primary purpose of the Application by providing features or
functionality that are inconsistent with the intended and advertised purpose of the Application as
submitted to the App Store, (b) does not create a store or storefront for other code or
applications, and (c) does not bypass signing, sandbox, or other security features of the OS
kuasha420 commented 3 years ago

@dirkpostma so release bundle should be fine, codepush maybe problematic, Right?

zoontek commented 3 years ago

@kuasha420 Yes, CodePush + Hermes on iOS.

a-eid commented 3 years ago

@zoontek could you explain what u mean by

Yes, CodePush + Hermes on iOS.

also why was this issue closed ?

zoontek commented 3 years ago

@a-eid Sorry, it was a misclick on mobile. Downloading the bytecode bundle consumed by Hermes on iOS OTA (other the air) will probably violate the Apple App Store rules.

kelset commented 3 years ago

There's so much effort going on about Hermes on IOS but, is this something that Apple would allow in their store? Was there a discussion I missed or does Facebook have it on good authority that Apple's cool with it?

@kuasha420 as pointed out by @dirkpostma, there's a better place to talk about that and it's that issue: https://github.com/facebook/hermes/issues/34

I'm going to mark as OT the comments so to keep it only related to the release process - but please keep the conversation going over there.

Also, AFAIK CodePush is not problematic. About Hermes I haven't dug into it (as I did a few years back for CP) so I can't really answer but looking in that issue it seems to me to understand that there won't be issues.

grabbou commented 3 years ago

And, additional, on top of what @kelset already said, this work is preliminary and considered experimental. There will be updates on that matter as soon as we're ready to make such 👌

kuasha420 commented 3 years ago

Cool cool. Let's get that RC going so us mere mortals can get to testing :) What are we waiting for now?

gabrieldonadel commented 3 years ago

Is this release postponed?

kelset commented 3 years ago

Hey folks - when working on getting the first RC out we hit a roadblock so we weren't able to publish rc0. The fix should be landing soon, next week we should be able to get it out 🤞

wamry commented 3 years ago

what about https://github.com/facebook/react-native/issues/30123, is it going to be included ?

kelset commented 3 years ago

@wamry if it landed after you cut the branch, we'll have to cherry pick it. Either way since it's a commit on master it should be portable in 0.64

grabbou commented 3 years ago

There are a few outstanding action items needed to cut 0.64 that popped up in the meantime:

alloy commented 3 years ago

Ok, just spoke with @kelset.

It seems that currently the main external dependency to get v0.64.0 out is having a new release of CLI. The thing I worry about is about when we should be spending our time to test the RC fully from end to end, as that will take a few hours and I don’t want to have to repeat that work in a few days if we already know there will be a new change that needs testing.

Thus:

thymikee commented 3 years ago

is it feasible for you to cut a release of the new CLI version without any v0.64 RC version of RN being available?

Yes, we can cut a release. Will try to prioritize this today.

kelset commented 3 years ago

Perfect!

So, as soon as new CLI version (with metro 0.64 support) is out, a commit on react-native master with the dep bump can be done & merged, and we can cherry pick it to proceed with rc0 (testing and everything).

Aside from that commit (which AFAIK should be the last one strictly needed), I went back into the comments of this issue (and cross-referenced against the list of requests for 0.63 patch) and found a few more commits that we need to cherry pick (ordered):

thymikee commented 3 years ago

CLI v5 alpha is out. PR to core to be cherry-picked: https://github.com/facebook/react-native/pull/30420

kelset commented 3 years ago

Thanks for all your work @thymikee#1279 👏 Looks like the import process for the PR is still ongoing.

I think we might want to do a local version of that commit on branch just to not be blocked by that; also because since the cut there was a commit in particular (this: https://github.com/facebook/react-native/commit/0bbab028d8da0ac7ae6df4626db264127c83f074) which I think will create issues when cherry picking it.

thymikee commented 3 years ago

Request to cherry-pick https://github.com/facebook/react-native/commit/a7c1c5aff24671bba609caeb82092a8de3d3b232 by @lukewalczak

grabbou commented 3 years ago

All aforementioned commits including @thymikee CLI bump and the one requested by @lukewalczak were cherry-picked. @alloy and @kelset are now working on testing the React Native before pushing an RC out.

alloy commented 3 years ago

Status update from the trenches ⛑️

We hit a few issues while testing:

grabbou commented 3 years ago

Thanks @alloy for the write up.

In regards to:

The hermes-engine pod has no version constraints specified, which should probably happen in the React-Core.podspec file and lock it with similar version constraints as the one applied to the Android version in package.json.

I would recommend we hardcode it inside react_native_pods.rb file, just like we do for Flipper. I sent a PR to address that (https://github.com/facebook/react-native/pull/30432), where we can keep the ongoing discussion for more clarity.

The newly introduced codegen invocation step in the iOS Podfile is failing, as the dependencies of the react-native-codegen package have not been installed. See output here

It would be great to understand the intent of running react-native-codegen in the user space, as opposed to doing that before packaging react-native for npm. I think that the idea was to include user defined packages as well while running the script. While this makes sense long term, maybe we don't need such convenience for 0.64.

If we do need to run it in the user land, I see the two following ways to go forward:

I would argue whether hoisting dependencies is the right way to go. The package was created "for a reason" and I think it is aligned with the general idea of splitting React Native into smaller packages.

[RC blocker] Trying to build a newly created Android app fails when checking the dynamic libraries for duplicate classes. See output here.

If RNTester works without issues on Android (and I assume it does, as you have reached further steps in the testing pipeline), this might be released to some configuration that was changed in Gradle files of RNTester, but not in the default template. Looking at the git diff might be the way to go here.

brunolemos commented 3 years ago

Not sure if this affects 0.64 RC since we don't have it on npm yet, but FYI this is happening with the nightly versions:

Running pod install fails with:

[!] CocoaPods could not find compatible versions for pod "React-RCTNetwork":
  In Podfile:
    React-RCTNetwork (from `../../../node_modules/react-native/Libraries/Network`)

None of your spec sources contain a spec satisfying the dependency: `React-RCTNetwork (from `../../../node_modules/react-native/Libraries/Network`)`.

You have either:
 * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.

PS: Not only RCTNetwork but also RCTSettings, RCTImage, etc. The suggested pod repo update solution doesn't fix it.

About the codegen, adding "react-native-codegen": "0.0.6" to devDependencies worked (and, in my case, also had to make the changes from this pull request).

macos 11.0.1
node 15.2.1
npm 7.0.8
cocoapods 1.10.0
react-native 0.0.0-c0a299838
yarn 1.22.10 (workspaces)
alloy commented 3 years ago

@brunolemos Local testing of pod install on the current 0.64-stable branch works, so unsure what the issue is that you’re hitting (aside from https://github.com/facebook/react-native/issues/30036, which I know you have worked around locally).

grabbou commented 3 years ago

I believe that the fix for codegen landed in master and is ready to be picked: https://github.com/facebook/react-native/commit/e99b8bbb404f8cd1f11b6c7998083be530d7b8a4

This PR https://github.com/facebook/react-native/pull/30449 seems to be doing a different thing (surely not a RC blocker), as it contains both https://github.com/facebook/react-native/commit/e99b8bbb404f8cd1f11b6c7998083be530d7b8a4 + some additional work.

CC: @alloy

That said, I think all the commits are already in master, can be cherry-picked and should give us a releasable 0.64.0-rc.0.

kelset commented 3 years ago

@brunolemos pls check when the latest nightly was released, last I checked there was an issue and latest was over a month old.

kelset commented 3 years ago

Looks like we also need this PR: https://github.com/facebook/react-native/pull/30451 (local version for 0.64 https://github.com/facebook/react-native/pull/30452 was merged)

And we need to understand what is different in this: https://github.com/facebook/react-native/pull/30449

brunolemos commented 3 years ago

@brunolemos pls check when the latest nightly was released, last I checked there was an issue and latest was over a month old.

@kelset the build was from the previous day, the nightlies seem to be being published normally again

kelset commented 3 years ago

@brunolemos ok thanks for clarifying - we'll see if we hit it, there have been a bunch of changes landing over the last few days.

grabbou commented 3 years ago

@kelset, the commit you have referenced is already in the updated @alloy response. So yes, I am going to go ahead and cherry-pick it.

Regarding facebook/react-native#30449, I have responded to that a bit earlier as well:

This PR facebook/react-native#30449 seems to be doing a different thing (surely not a RC blocker), as it contains both facebook/react-native@e99b8bb + some additional work.

grabbou commented 3 years ago

Original description of the post updated to keep it structured and organised.

grabbou commented 3 years ago

@brunolemos I have run pod install and inited a new project on 0.64-stable and didn't run into an issue that you have referenced. I think it doesn't affect our branch, so I'd go ahead and minimise the comments to make the issue a bit cleaner.

I would suggest we follow up in the React Native repository, where there's an issue to track nightly builds status.

grabbou commented 3 years ago

I can confirm that a fresh new app works just fine on iOS with and without Hermes.

alloy commented 3 years ago

I can confirm that a fresh new app works just fine on Android with and without Hermes.

grabbou commented 3 years ago

Closing and moving this to #214 as this issue is a bit long already.