diff --git a/website/contributing/contributing-overview.md b/website/contributing/contributing-overview.md index 485fd505f52..58130ea7274 100644 --- a/website/contributing/contributing-overview.md +++ b/website/contributing/contributing-overview.md @@ -123,7 +123,7 @@ Whenever you are ready to contribute code, check out our [step-by-step guide to ### Tests -Tests help us prevent regressions from being introduced to the codebase. The GitHub repository is continuously tested using CircleCI and Appveyor, the results of which are available through the Checks functionality on [commits](https://github.com/facebook/react-native/commits/HEAD) and pull requests. +Tests help us prevent regressions from being introduced to the codebase. The GitHub repository is continuously tested using CircleCI, the results of which are available through the Checks functionality on [commits](https://github.com/facebook/react-native/commits/HEAD) and pull requests. You can learn more about running and writing tests on the [How to Run and Write Tests](/contributing/how-to-run-and-write-tests) page. diff --git a/website/contributing/how-to-build-from-source.md b/website/contributing/how-to-build-from-source.md index 23f063bf54c..80e886c0b81 100644 --- a/website/contributing/how-to-build-from-source.md +++ b/website/contributing/how-to-build-from-source.md @@ -12,8 +12,8 @@ Assuming you have the Android SDK installed, run `android` to open the Android S Make sure you have the following installed: -1. Android SDK version 30 (`compileSdkVersion` in [`build.gradle`](https://github.com/facebook/react-native/blob/main/ReactAndroid/build.gradle)). -2. Android NDK 21.4.7075529 (from in [`gradle.properties`](https://github.com/facebook/react-native/blob/b1120c6a6513ec24568abc6bbe60dd57ef1dec96/gradle.properties#L7), download links and installation instructions below). +1. Android SDK (find the specific version in the `compileSdkVersion` in [`build.gradle`](https://github.com/facebook/react-native/blob/main/ReactAndroid/build.gradle#L253)). +2. Android NDK #### Point Gradle to your Android SDK @@ -45,13 +45,7 @@ ndk.dir=/Users/your_unix_name/android-ndk/android-ndk-r20b #### Download links for Android NDK -1. [macOS (64-bit)](https://dl.google.com/android/repository/android-ndk-r20b-darwin-x86_64.zip) -2. [Linux (64-bit)](https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip) -3. [Windows (64-bit)](https://dl.google.com/android/repository/android-ndk-r20b-windows-x86_64.zip) -4. [Windows (32-bit)](https://dl.google.com/android/repository/android-ndk-r20b-windows-x86.zip) - -You can find further instructions on the [official page](https://developer.android.com/ndk/index.html). -Or follow instructions to [download appropriate NDK from SDK manager](https://developer.android.com/studio/projects/install-ndk#specific-version). +You can find the instructions to install the NDK on the [official Android NDK website](https://developer.android.com/studio/projects/install-ndk). ### Building the source @@ -149,9 +143,9 @@ You should be able to use the _Run_ button to run your app on a device. Android ### Additional notes -Building from source can take a long time, especially for the first build, as it needs to download ~200 MB of artifacts and compile the native code. +Building from source can take a long time, especially for the first build, as it needs to download ~200 MB of artifacts and compile the native code. -Every time you update the `react-native` version from your repo, the build directory may get deleted, and all the files are re-downloaded. +Every time you update the `react-native` version from your repo, the build directory may get deleted, and all the files are re-downloaded. To avoid this, you might want to change your build directory path by editing the `~/.gradle/init.gradle` file: ```groovy @@ -192,7 +186,7 @@ Install it in your app project package.json. ## Rationale -The recommended approach to working with React Native is to always update to the latest version. No support is provided on older versions and if you run into issues the contributors will always ask you to upgrade to the latest version before even looking at your particular issue. +The recommended approach to working with React Native is to always update to the latest version. No support is provided on older versions and if you run into issues the contributors will always ask you to upgrade to the latest version before even looking at your particular issue. Sometimes, though, you are temporarily stuck on an older React Native version, but you require some changes from newer versions urgently (bugfixes) without having to do a full upgrade right now. This situation should be short lived by definition and once you have the time, the real solution is to upgrade to the latest version. @@ -226,9 +220,9 @@ Upload the binaries from the `android` folder to maven and point your Android ap Instead of uploading to Maven/Nexus, you can add the binaries built in the previous steps to git, by changing the .gitignore and committing the binaries to your forked branch. This allows you to make your fork into a functioning git dependency for React Native app projects. -If you have changes that you want to actually merge to React Native, make them on another branch first and open a PR. +If you have changes that you want to actually merge to React Native, make them on another branch first and open a PR. -To start making your dependency branch, make sure you are on a `release/my-forked-release` branch, then merge any commits that you need from yourself or others into this branch. +To start making your dependency branch, make sure you are on a `release/my-forked-release` branch, then merge any commits that you need from yourself or others into this branch. :::warning This release branch should never be merged into any other branch. diff --git a/website/contributing/how-to-contribute-code.md b/website/contributing/how-to-contribute-code.md index b1c4bcfc96d..d8336d2e9a5 100644 --- a/website/contributing/how-to-contribute-code.md +++ b/website/contributing/how-to-contribute-code.md @@ -35,7 +35,7 @@ Then, you can run several commands: Tests help us prevent regressions from being introduced to the codebase. We recommend running `yarn test` or the platform-specific scripts above to make sure you don't introduce any regressions as you work on your change. -The GitHub repository is [continuously tested](/contributing/how-to-run-and-write-tests#continuous-testing) using CircleCI and Appveyor, the results of which are available through the Checks functionality on [commits](https://github.com/facebook/react-native/commits/main) and pull requests. +The GitHub repository is [continuously tested](/contributing/how-to-run-and-write-tests#continuous-testing) using CircleCI, the results of which are available through the Checks functionality on [commits](https://github.com/facebook/react-native/commits/main) and pull requests. You can learn more about running and writing tests on the [How to Run and Write Tests](/contributing/how-to-run-and-write-tests) page. diff --git a/website/contributing/how-to-run-and-write-tests.md b/website/contributing/how-to-run-and-write-tests.md index e08237456d1..03bec33016f 100644 --- a/website/contributing/how-to-run-and-write-tests.md +++ b/website/contributing/how-to-run-and-write-tests.md @@ -77,16 +77,7 @@ Finally, make sure end-to-end tests run successfully by executing the following ./scripts/test-manual-e2e.sh ``` -End-to-end tests written in [Detox](https://github.com/wix/Detox) confirm that React Native components and APIs function correctly in the context of a running app. They run the RNTester app in the simulator and simulate a user interacting with the app. - -You can run Detox end-to-end tests locally by [installing the Detox CLI](https://github.com/wix/Detox/blob/master/docs/Introduction.GettingStarted.md#step-1-install-dependencies) on macOS, then running the following in the command line: - -```bash -yarn run build-ios-e2e -yarn run test-ios-e2e -``` - -If you work on a component or API that isn't covered by a Detox test, please consider adding one. Detox tests are stored under [`RNTester/e2e/__tests__`](https://github.com/facebook/react-native/tree/main/RNTester/e2e/__tests__). +This script will make you select to run the RNTester app (that lives within `packages/rn-tester`) or it will generate a fresh new project in `/tmp/RNTestProject`. Follow the step-by-step instructions from the script to test successfully if your changes. ## Writing Tests @@ -101,11 +92,11 @@ The JavaScript tests can be found inside `__test__` directories, colocated next ### iOS Integration Tests -React Native provides facilities to make it easier to test integrated components that require both native and JS components to communicate across the bridge. +React Native provides facilities to make it easier to test integrated components that require both native and JS components to communicate across the bridge. The two main components are `RCTTestRunner` and `RCTTestModule`. `RCTTestRunner` sets up the React Native environment and provides facilities to run the tests as `XCTestCase`s in Xcode (`runTest:module` is the simplest method). `RCTTestModule` is exported to JavaScript as `NativeModules.TestModule`. -The tests themselves are written in JS, and must call `TestModule.markTestCompleted()` when they are done, otherwise the test will timeout and fail. +The tests themselves are written in JS, and must call `TestModule.markTestCompleted()` when they are done, otherwise the test will timeout and fail. Test failures are primarily indicated by throwing a JS exception. It is also possible to test error conditions with `runTest:module:initialProps:expectErrorRegex:` or `runTest:module:initialProps:expectErrorBlock:` which will expect an error to be thrown and verify the error matches the provided criteria. @@ -123,11 +114,11 @@ See the following for example usage and integration points: A common type of integration test is the snapshot test. These tests render a component, and verify snapshots of the screen against reference images using `TestModule.verifySnapshot()`, using the [`FBSnapshotTestCase`](https://github.com/facebook/ios-snapshot-test-case) library behind the scenes. Reference images are recorded by setting `recordMode = YES` on the `RCTTestRunner`, then running the tests. -Snapshots will differ slightly between 32 and 64 bit, and various OS versions, so it's recommended that you enforce tests are run with the [correct configuration](https://github.com/facebook/react-native/blob/main/scripts/.tests.env). +Snapshots will differ slightly between 32 and 64 bit, and various OS versions, so it's recommended that you enforce tests are run with the [correct configuration](https://github.com/facebook/react-native/blob/main/scripts/.tests.env). It's also highly recommended that all network data be mocked out, along with other potentially troublesome dependencies. See [`SimpleSnapshotTest`](https://github.com/facebook/react-native/blob/main/IntegrationTests/SimpleSnapshotTest.js) for a basic example. -If you make a change that affects a snapshot test in a pull request, such as adding a new example case to one of the examples that is snapshotted, you'll need to re-record the snapshot reference image. +If you make a change that affects a snapshot test in a pull request, such as adding a new example case to one of the examples that is snapshotted, you'll need to re-record the snapshot reference image. To do this, change `recordMode` flag to `_runner.recordMode = YES;` in [RNTester/RNTesterSnapshotTests.m](https://github.com/facebook/react-native/blob/136666e2e7d2bb8d3d51d599fc1384a2f68c43d3/RNTester/RNTesterIntegrationTests/RNTesterSnapshotTests.m#L29), re-run the failing tests, then flip record back to `NO` and submit/update your pull request and wait to see if the CircleCI build passes. @@ -141,12 +132,11 @@ It's a good idea to add an Android integration test whenever you are working on ## Continuous Testing -We use [Appveyor][config-appveyor] and [CircleCI][config-circleci] to automatically run our open source tests. Appveyor and CircleCI will run these tests whenever a commit is added to a pull request, as a way to help maintainers understand whether a code change introduces a regression. The tests also run on commits to the `main` and `*-stable` branches in order to keep track of the health of these branches. +We use [CircleCI][config-circleci] to automatically run our open source tests. CircleCI will run these tests whenever a commit is added to a pull request, as a way to help maintainers understand whether a code change introduces a regression. The tests also run on commits to the `main` and `*-stable` branches in order to keep track of the health of these branches. -[config-appveyor]: https://github.com/facebook/react-native/blob/main/.appveyor/config.yml [config-circleci]: https://github.com/facebook/react-native/blob/main/.circleci/config.yml -There's another set of tests that run within Meta's internal test infrastructure. Some of these tests are integration tests defined by internal consumers of React Native (e.g. unit tests for a React Native surface in the Facebook app). +There's another set of tests that run within Meta's internal test infrastructure. Some of these tests are integration tests defined by internal consumers of React Native (e.g. unit tests for a React Native surface in the Facebook app). These tests run on every commit to the copy of React Native hosted on Facebook's source control. They also run when a pull request is imported to Facebook's source control. @@ -154,16 +144,16 @@ If one of these tests fail, you'll need someone at Meta to take a look. Since pu :::note **Running CI tests locally:** -Most open source collaborators rely on CircleCI and Appveyor to see the results of these tests. If you'd rather verify your changes locally using the same configuration as CircleCI, CircleCI provides a [command line interface](https://circleci.com/docs/2.0/local-cli/) with the ability to run jobs locally. +Most open source collaborators rely on CircleCI to see the results of these tests. If you'd rather verify your changes locally using the same configuration as CircleCI, CircleCI provides a [command line interface](https://circleci.com/docs/local-cli) with the ability to run jobs locally. ::: ### F.A.Q. #### How do I upgrade the Xcode version used in CI tests? -When upgrading to a new version of Xcode, first make sure it is [supported by CircleCI](https://circleci.com/docs/2.0/testing-ios/#supported-xcode-versions). +When upgrading to a new version of Xcode, first make sure it is [supported by CircleCI](https://circleci.com/docs/testing-ios#supported-xcode-versions). -You will also need to update the test environment config to make sure tests run on an iOS Simulator that comes installed in the CircleCI machine. +You will also need to update the test environment config to make sure tests run on an iOS Simulator that comes installed in the CircleCI machine. This can also be found in [CircleCI's Xcode version reference](https://circleci.com/docs/2.0/testing-ios/#supported-xcode-versions) by clicking the desired version and looking under Runtimes. diff --git a/website/contributing/release-candidate-minor.md b/website/contributing/release-branch-cut-and-rc0.md similarity index 65% rename from website/contributing/release-candidate-minor.md rename to website/contributing/release-branch-cut-and-rc0.md index 80100721189..9e396cecbae 100644 --- a/website/contributing/release-candidate-minor.md +++ b/website/contributing/release-branch-cut-and-rc0.md @@ -1,27 +1,30 @@ --- -id: release-candidate-minor -title: Release Minor Candidate +id: release-branch-cut-and-rc0 +title: Branch Cut & RC0 --- -This document goes over steps to run different types of React Native release updates. It is intended audience is for those in relevant release roles. +:::info +Documents in this section go over steps to run different types of React Native release updates. Its intended audience is those in [relevant release roles](./release-roles-responsibilites.md). +::: ### Pre-requisites - Write access to [react-native](https://github.com/facebook/react-native) repository. - Write access to [hermes](https://github.com/facebook/hermes) repository. -- Your CircleCI personal API token. See [here](https://circleci.com/docs/2.0/managing-api-tokens/#creating-a-personal-api-token) on how to set one. +- Write access to [releases](https://github.com/reactwg/react-native-releases) repository. +- One CircleCI personal API token - see [here](https://circleci.com/docs/managing-api-tokens#creating-a-personal-api-token) how to set one. ### 1. Creating a new release branch -- Create the release branch in `react-native` repo with the appropriate name (usually `0.X-stable`). +- Create the release branch in `react-native` repo with the appropriate name (usually `0.XX-stable`). ```bash git checkout main git pull origin main - git checkout -b 0.68-stable + git checkout -b 0.69-stable ``` -- Head to the [Publish Tag](https://github.com/facebook/hermes/actions/workflows/create-tag.yml) workflow in the Hermes repo. Click the "Run Workflow" button and input the RN stable version you're using (e.g. 0.69.0). You need to have write access to the facebook/hermes repo to do so or ask a Meta employee to help you on this step. +- Head to the [Publish Tag](https://github.com/facebook/hermes/actions/workflows/create-tag.yml) workflow in the Hermes repo. Click the "Run Workflow" button and input the RN stable version you are targetting (e.g. 0.69.0). You need to have write access to the facebook/hermes repo to do so or ask a Meta employee to help you on this step. - Bump the Hermes version on the release branch using this command: @@ -32,15 +35,15 @@ This document goes over steps to run different types of React Native release upd ### 2. Test the current changes -Before continuing further, follow the [testing](/contributing/release-testing) guide to ensure the release doesn't have any major issues. +Before continuing further, follow the [testing guide](/contributing/release-testing) to ensure the code doesn't have any major issues. ### 3. Kick off the build of 0.{minor}.0-rc.0 -``` -git push origin 0.68-stable +```bash +git push origin 0.69-stable # This will walk you through what version you are releasing -./scripts/bump-oss-version.js --to-version 0.68.0-rc.0 --token +./scripts/bump-oss-version.js --to-version 0.69.0-rc.0 --token ``` - Once you have run that script, head to CircleCI and you should see under the releases workflow, a `prepare-package-for-release` job. @@ -52,29 +55,30 @@ git push origin 0.68-stable - This script runs and commits any changes and triggers a deploy job, `build_and_publish_npm_package`. - Note: Look under "All Branches" to find the publish job. CircleCI does not give a way to search for these jobs. -- Once complete you should be able to run `npm view react-native` and verify `next` is expected release version. +- Once complete you should be able to run `npm view react-native` and verify that under the `next` tag, the version is the expected release version. ```bash npm view react-native ... dist-tags: - latest: 0.65.1 next: 0.66.0-rc.2 nightly: 0.0.0-f617e022c + latest: 0.68.1 next: 0.69.0-rc.0 nightly: 0.0.0-f617e022c ``` -### 4. Create a PR of the changelog generator +### 4. Create a PR of the changelog using the generator + +To generate the changelog, we rely on a dedicated tool called [`@rnx-kit/rn-changelog-generator`](https://github.com/microsoft/rnx-kit/tree/main/incubator/rn-changelog-generator) that will parse the custom changelog messages that contributors write in their PRs. ```bash # Run following with the stable release as base, and your rc.0 version npx @rnx-kit/rn-changelog-generator --base v[LATEST_STABLE]--compare v[YOUR_RC_0] \ ---repo ~/react-native --changelog ~/react-native/CHANGELOG.md > NEW_CHANGES.md +--repo ~/react-native --changelog ~/react-native/CHANGELOG.md -# example against 0.66.4 and 0.67.0-rc.0 -npx @rnx-kit/rn-changelog-generator --base v0.66.4 --compare v0.67.0-rc.0 \ ---repo ~/react-native --changelog ~/react-native/CHANGELOG.md > NEW_CHANGES.md +# example against 0.68.2 and 0.69.0-rc.0 +npx @rnx-kit/rn-changelog-generator --base v0.68.2 --compare v0.69.0-rc.0 \ +--repo ~/react-native --changelog ~/react-native/CHANGELOG.md ``` -- Prepend contents of `NEW_CHANGES.md` to `CHANGELOG.md`. -- Create a pull request of this change to `react-native` repo and add the `Changelog` label. +Create a pull request of this change to `react-native` repo and add the `Changelog` label. ### 5. Create a GitHub Release @@ -91,7 +95,7 @@ To test it, run: -npx react-native init RN067RC5 --version 0.67.0-rc.5 +npx react-native init RN069RC0 --version 0.69.0-rc.0 --- @@ -117,7 +121,7 @@ In the `publish_release` CI workflow, the `build_hermes_macos` step produces a ` ### 7. Create a tracking discussion post -Create a "Road to " discussion post in [`react-native-releases`](https://github.com/reactwg/react-native-releases/discussions): +Create a "Road to " discussion post in the [`react-native-releases`](https://github.com/reactwg/react-native-releases/discussions) working group: ```markdown @@ -129,7 +133,7 @@ The branch cut has happened. -- [Current release candidate: 0.68.0-rc.0][current-release] +- [Current release candidate: 0.69.0-rc.0][current-release] - Have an issue with current release candidate? [File an issue][issue-form] and we will triage. - Have a pick request for this release? Does it fall under our [pick request qualifications][release-faq]? If so please create a PR against the release branch and comment with the PR link - If you are release testing, copy and fill a [test checklist](/contributing/release-testing#test-checklist). @@ -150,7 +154,7 @@ The branch cut has happened. > When ready to publish stable - [ ] Ship changelog - [ ] Ship blog post -- [ ] Notify `react-native-website` to ship new version +- [ ] Make PR to `react-native-website` with the new version cut ([see docs](https://github.com/facebook/react-native-website#cutting-a-new-version)) #### Retrospective Topics @@ -160,13 +164,13 @@ The branch cut has happened. ## Release Status -### Tracking 0.67.0-rc.1 +### Tracking 0.69.0-rc.1 -#### Blocking issues for releasing 0.67.0-rc.1 +#### Blocking issues for releasing 0.69.0-rc.1 - -#### Picks for 0.67.0-rc.1 +#### Picks for 0.69.0-rc.1 - @@ -181,12 +185,17 @@ The branch cut has happened. [upgrade-helper]: https://reactnative.dev/contributing/updating-upgrade-helper ``` +After creating it, make sure to link it in the relevant GitHub Release you created above, and to pin it in the discussion repo. + ### 8. Verify that Upgrade Helper GitHub action has fired -- You should see a [new publish job complete here](https://github.com/react-native-community/rn-diff-purge/actions). +- You should see a [new publish job here](https://github.com/react-native-community/rn-diff-purge/actions). +- Once it has finished, you should be able to see that the [Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) presents the option to target the new RC0. - If not, check out the guide on [how to update Upgrade Helper](/contributing/updating-upgrade-helper). ### 9. Broadcast that release candidate is out -- React Native Twitter. -- Discord `#releases-coordination` channel. +Once all the steps above have been completed, it's time to signal to the community that RC0 is available for testing! Do so in the following channels: + +- [@reactnative](https://twitter.com/reactnative) on twitter +- RN Discord `#releases-coordination` and to the testers in `#testers-feedback` diff --git a/website/contributing/release-candidate-patch.md b/website/contributing/release-candidate-patch.md index 1d0f2207fb1..54ba43408ab 100644 --- a/website/contributing/release-candidate-patch.md +++ b/website/contributing/release-candidate-patch.md @@ -1,11 +1,18 @@ --- id: release-candidate-patch -title: Release Patch Candidate +title: RC Patches --- +:::info +Documents in this section go over steps to run different types of React Native release updates. Its intended audience is those in [relevant release roles](./release-roles-responsibilites.md). +::: + ### Pre-requisites -- You have some pick requests that qualify for a patch release and people have agreed it’s good to release a patch. +- You have some pick requests that qualify for a new Release Candidate (RC) patch in the "road to 0.XX.0" [discussion](https://github.com/reactwg/react-native-releases/discussions). +- Write access to [react-native](https://github.com/facebook/react-native) repository. +- Write access to [releases](https://github.com/reactwg/react-native-releases) repository. +- One CircleCI personal API token - see [here](https://circleci.com/docs/2.0/managing-api-tokens/#creating-a-personal-api-token) how to set one. ### 1. Check out the latest version from release branch @@ -13,26 +20,51 @@ title: Release Patch Candidate # Be on relevant release branch # update the stable branch with tags git pull origin --tags +git checkout -b # cherry pick relevant commits -git cherry-pick - -# once done picking, push changes to the remote -git push +git cherry-pick ``` ### 2. Test the current changes -Before continuing further, follow the [testing](/contributing/release-testing) guide to ensure the release doesn't have any major issues. +Before continuing further, follow the [testing guide](/contributing/release-testing) to ensure the source code doesn't have any major issues. ### 3. Run `bump-oss-version` script ```bash +# once verified all the cherry-picked commits, we can push them to remote +git push + # run a script to bump the version -# You most likely **don't** want this release marked as "latest" -./scripts/bump-oss-version.js --to-version x.y.z-rc.x --token +# You **do not** want this release marked as "latest"! +./scripts/bump-oss-version.js --to-version 0.y.0-rc.x --token ``` -### 4. Similar to cutting new branch, watch CircleCI to ensure right jobs are being triggered +### 4. Watch CircleCI to ensure right jobs are being triggered + +- Once you have run the bump script script, head to CircleCI and you should see under the releases workflow, a `prepare-package-for-release` job. + +
+ CircleCI showing publish release +
CircleCI showing publish release.
+
+ +- Once complete you should be able to run `npm view react-native` and verify that under the `next` tag, the version is the expected release version. + + ```bash + npm view react-native + ... + dist-tags: + latest: 0.(y-1).1 next: 0.y.0-rc.x nightly: 0.0.0-f617e022c + ``` ### 5. Update the relevant discussion post with the latest RC + +Go back to the "road to 0.XX.0" [discussion](https://github.com/reactwg/react-native-releases/discussions) and update the "Current release candidate" line with the new version you published. + +### 6. Broadcast that release candidate is out + +Once all the steps above have been completed, it's time to signal to the community that the new RC is available for testing! Do so in the following channels: + +- RN Discord `#releases-coordination` and to the testers in `#testers-feedback` diff --git a/website/contributing/release-dependencies.md b/website/contributing/release-dependencies.md index abb3f778522..1d7bc0ddf20 100644 --- a/website/contributing/release-dependencies.md +++ b/website/contributing/release-dependencies.md @@ -6,15 +6,15 @@ title: Release Dependencies This table wants to highlight the various tooling that we need to pay attention to and potentially bump to ensure that everything works correctly - it could be that some versions need to be only changed/bumped in the [`template`](https://github.com/facebook/react-native/tree/main/template) folder. | Tool | Ping team ahead of branch cut? | Bump when... | Reference bump | Link to source | -| --------------------- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | -| Metro | Yes, ping Meta's Metro team - a new version needs to be cut too. | During RC phase of new minor, coordinated with RN CLI (see below). | [link](https://github.com/facebook/react-native/commit/cfdc4fed0d0ba7860d176c1715c0cc84bea643af) | [source](https://github.com/facebook/metro/tags) | +| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | +| Metro | No need, they release on their own schedule. | During RC phase of new minor, coordinated with RN CLI (see below). | [link](https://github.com/facebook/react-native/commit/cfdc4fed0d0ba7860d176c1715c0cc84bea643af) | [source](https://github.com/facebook/metro/tags) | | RN CLI | Yes, ping RN CLI maintainers - they need to do a new release that depends on new Metro version (from above), [like so](https://github.com/react-native-community/cli/pull/1442/files). | During RC phase of new minor, coordinated with Metro (see above). | [link](https://github.com/facebook/react-native/pull/31971/files) | [source](https://github.com/react-native-community/cli/tags) | -| Hermes | Yes, ping Meta's Hermes team - a new version needs to be cut too. | During RC phase of new minor - the closer to the commit of the branch cut, the better. | [link](https://github.com/facebook/react-native/commit/1d6af14d6d6e5a7e3a773b581600b01934a7d442) | [source](https://github.com/facebook/hermes/tags) | +| Hermes | No need, the RN release crew takes care of [generating new tags](release-branch-cut-and-rc0#1-creating-a-new-release-branch). | During RC phase of new minor - the closer to the commit of the branch cut, the better. | [link](https://github.com/facebook/react-native/commit/1d6af14d6d6e5a7e3a773b581600b01934a7d442) | [source](https://github.com/facebook/hermes/tags) | | Flipper | No need, they release on their own schedule. | We just need to sync to the newest set of dependencies at the time of branch cut using this as [reference](https://github.com/facebook/flipper/blob/main/react-native/ReactNativeFlipperExample/ios/Podfile#L30). | [link](https://github.com/facebook/react-native/pull/31896) | [source](https://github.com/facebook/flipper/tags) | | Folly | No need, they release on their own schedule. | Usually this dependency gets kept up to date by Meta's internal dev loop so it should be necessary to bump at release cut. But it needs to be the same version that is imported via Flipper (Flipper-Folly) to avoid issues. | [link](https://github.com/facebook/react-native/commit/b0c8a4eee821ca0b22e166a2a38f2bd2f22a1abe) | [source](https://github.com/facebook/folly/tags) | | Jest | No need, they release on their own schedule. | This will be updated by the Meta engineers to stay aligned to the version used internally - so no relationship with the RN release cycle. | [link](https://github.com/facebook/react-native/commit/d6cd2e6559ff8698833dc277810e2e7e80af760a) | [source](https://github.com/facebook/jest/tags) | -| Android SDK | Out of our control. | Needs to be clarified (kept up to date by internal team?). | [link](https://github.com/facebook/react-native/pull/32606/files) | [source](https://developer.android.com/studio/releases/platforms) | -| Gradle | Out of our control. | Needs to be clarified (kept up to date by internal team? [example](https://github.com/facebook/react-native/commit/cd4c6659d3477a82f7bf14570ecdd6e9bfb9435e)). | [link](https://github.com/facebook/react-native/pull/32588) | [source](https://gradle.org/releases/) | -| Android Gradle Plugin | Out of our control. | Needs to be clarified (kept up to date by internal team? [example](https://github.com/facebook/react-native/commit/cd4c6659d3477a82f7bf14570ecdd6e9bfb9435e)). | [link](https://github.com/facebook/react-native/pull/32589) | [source](https://developer.android.com/studio/releases/gradle-plugin) | +| Android SDK | Out of our control. | Usually kept up to date by internal team. | [link](https://github.com/facebook/react-native/pull/32606/files) | [source](https://developer.android.com/studio/releases/platforms) | +| Gradle | Out of our control. | Usually kept up to date by internal team [example](https://github.com/facebook/react-native/commit/cd4c6659d3477a82f7bf14570ecdd6e9bfb9435e)). | [link](https://github.com/facebook/react-native/pull/32588) | [source](https://gradle.org/releases/) | +| Android Gradle Plugin | Out of our control. | Usually kept up to date by internal team [example](https://github.com/facebook/react-native/commit/cd4c6659d3477a82f7bf14570ecdd6e9bfb9435e)). | [link](https://github.com/facebook/react-native/pull/32589) | [source](https://developer.android.com/studio/releases/gradle-plugin) | | JSC | Out of our control. | Needs to be clarified. | [link](https://github.com/facebook/react-native/pull/31304) | [source](https://github.com/react-native-community/jsc-android-buildscripts/tags) | -| CocoaPods | Out of our control. | Needs to be clarified. | [link](https://github.com/facebook/react-native/commit/c6907ee488d938d227682605d7a6ce60f460bfc2) | [source](https://github.com/CocoaPods/CocoaPods/tags) | +| CocoaPods | Out of our control. | Usually kept up to date by internal team. | [link](https://github.com/facebook/react-native/commit/c6907ee488d938d227682605d7a6ce60f460bfc2) | [source](https://github.com/CocoaPods/CocoaPods/tags) | diff --git a/website/contributing/release-faq.md b/website/contributing/release-faq.md index c351cda9d2f..76194aa50bf 100644 --- a/website/contributing/release-faq.md +++ b/website/contributing/release-faq.md @@ -32,9 +32,11 @@ To determine whether a fix or feature is present in a given release, you will ne Once you have the commit hash, navigate to `https://github.com/facebook/react-native/commit/`. Look closely at the commit message, underneath which you will find a list of tags associated with the commit. These tags will tell you which releases contains this commit. For example, commit [a6768bfd70187634e587d7b2e92d2b6735a4037e](https://github.com/facebook/react-native/commit/a6768bfd70187634e587d7b2e92d2b6735a4037e) has the following tags as of this writing: + ```plain v0.67.0-rc.3 v0.67.0-rc.2 v0.67.0-rc.1 v0.67.0-rc.0 v0.66.3 v0.66.2 v0.66.1 v0.66.0 v0.66.0-rc.4 v0.66.0-rc.3 v0.66.0-rc.2 v0.66.0-rc.1 v0.66.0-rc.0 latest ``` + These tags tell us that the commit first made it into the 0.66 release candidate, eventually landing in the 0.66 stable release. It is also present, as you'd expect, in the 0.67 release candidate (and should make it to 0.67 stable, and so on). If the commit is only present in `main` (i.e. has no tags), then the commit has yet to be picked up by a release (or it may have been included in a follow up cherry pick for a patch version). You can expect it to be included in the next release candidate that is cut once the designed features have all landed. diff --git a/website/contributing/release-stable-minor.md b/website/contributing/release-stable-minor.md index 56f9e232eaf..9f5620508fb 100644 --- a/website/contributing/release-stable-minor.md +++ b/website/contributing/release-stable-minor.md @@ -1,23 +1,36 @@ --- id: release-stable-minor -title: Release Stable Minor +title: Minor Stable 0.Y.0 --- +:::info +Documents in this section go over steps to run different types of React Native release updates. Its intended audience is those in [relevant release roles](./release-roles-responsibilites.md). +::: + ### Pre-requisites -- Have the blog post ready to submit as a PR for `react-native-website` [repository](https://github.com/facebook/react-native-website). -- Changelog PR should be ready to merge. -- Previous RC has been thoroughly tested and no important issues have been reported. When releasing stable minor, you should not include any new cherry-picks. +- Write access to [react-native](https://github.com/facebook/react-native) repository. +- Write access to [releases](https://github.com/reactwg/react-native-releases) repository. +- One CircleCI personal API token - see [here](https://circleci.com/docs/2.0/managing-api-tokens/#creating-a-personal-api-token) how to set one. +- Blog post PR should be ready to merge (for `react-native-website` [repository](https://github.com/facebook/react-native-website)). +- Documentation PR should be ready to merge (for `react-native-website` [repository](https://github.com/facebook/react-native-website)). +- Changelog PR should be ready to merge (for `react-native` [repository](https://github.com/facebook/react-native)). +- Previous RC has been thoroughly tested and no important issues have been reported. When releasing stable minor, you **should not** include any new cherry-picks. ### 1. Publish the release ```bash -# In your react-native checkout, on the release branch of the version -./scripts/bump-oss-version.js --to-version x.y.z --token +# Make sure you are on the release branch of the version +git checkout -b 0.Y-stable + +./scripts/bump-oss-version.js --to-version 0.Y.0 --token > Do you want this to be latest? -# Generally yes. This updates npm registry to point to this version as "latest" +# Reply to this prompt with "yes". +# This updates npm registry to point to this version as "latest" ``` +When this is done, all the other PRs (changelog, documentation, blog post) should also get merged. + ### 2. Update the GitHub releases - You can find out how many commits and contributors for a release by making a PR and [comparing the release branches](https://github.com/facebook/react-native/compare/0.66-stable...0.67-stable). @@ -42,12 +55,16 @@ To help you upgrade to this version, you can use the [upgrade helper](https://re You can find the whole changelog history in the [changelog.md file](https://github.com/facebook/react-native/blob/main/CHANGELOG.md). ``` +It's likely that when you post this GitHub release, the PRs for changelog, blog post and documentation are still in the rollout phase. You can start publishing the release anyway (to do step #3) with placeholders instead of links - but make sure to come back and update them once everything is out! + ### 3. Upload prebuilt Hermes binary In the `publish_release` CI workflow, the `build_hermes_macos` step produces a `tmp/hermes/output/hermes-runtime-darwin-vx.y.z.tar.gz` artifact, for example [here](https://app.circleci.com/pipelines/github/facebook/react-native/13933/workflows/5f2ad198-2264-4e7e-8c62-7b28e97532d8/jobs/262322/artifacts) are the artifacts for `0.69.0` release. Download it and attach it to the GitHub release. ### 4. Create a new patch post for your new version +In the [releases working group](https://github.com/reactwg/react-native-releases/discussions), lock the relevant "road to 0.Y.0" discussion, unpin it and label it as "Released". Then, open a new discussion of the "Patches" type, with this text: + ```markdown ## Should we release 0.66.1? @@ -74,16 +91,15 @@ If the issue is a [major release issues](https://reactnative.dev/contributing/re 1. ``` -### 4. Close any outstanding patch posts for previous versions - -- Any patch posts for the previous stable are irrelevant now. +### 4. Verify that Upgrade Helper GitHub action has fired -### 5. Verify that Upgrade Helper GitHub action has fired - -- You should see a [new publish job complete here](https://github.com/react-native-community/rn-diff-purge/actions). +- You should see a [new publish job here](https://github.com/react-native-community/rn-diff-purge/actions). +- Once it has finished, you should be able to see that the [Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) presents the option to target the new minor. - If not, check out the guide on [how to update Upgrade Helper](/contributing/updating-upgrade-helper). -### 6. Communicate the new release +### 5. Communicate the new release + +Once all the steps above have been completed, it's time to signal to the community that latest minor is available! Do so in the following channels: -- Ship the `react-native-website` changes if not done already. See [here](https://github.com/facebook/react-native-website#cutting-a-new-version) how to cut a new version of the website. -- Ship the blog post and tweet about it. +- [@reactnative](https://twitter.com/reactnative) on twitter (with a link to the blogpost) +- RN Discord `#releases-coordination` diff --git a/website/contributing/release-stable-patch.md b/website/contributing/release-stable-patch.md index 4a77bbbbafb..c5a1ba69c6b 100644 --- a/website/contributing/release-stable-patch.md +++ b/website/contributing/release-stable-patch.md @@ -1,11 +1,18 @@ --- id: release-stable-patch -title: Release Stable Patch +title: Minor Stable Patches --- +:::info +Documents in this section go over steps to run different types of React Native release updates. Its intended audience is those in [relevant release roles](./release-roles-responsibilites.md). +::: + ### Pre-requisites -- You have some pick requests that qualify for a patch release and people have agreed it’s good to release a patch. +- You have some pick requests that qualify for a patch release in the "should we release 0.Y.Z?" [discussion](https://github.com/reactwg/react-native-releases/discussions). +- Write access to [react-native](https://github.com/facebook/react-native) repository. +- Write access to [releases](https://github.com/reactwg/react-native-releases) repository. +- One CircleCI personal API token - see [here](https://circleci.com/docs/2.0/managing-api-tokens/#creating-a-personal-api-token) how to set one. ### 1. Check out the latest version from release branch @@ -16,29 +23,86 @@ git pull origin --tags # cherry pick relevant commits git cherry-pick - -# once done picking, push changes to the remote -git push ``` ### 2. Test the current changes -Before continuing further, follow the [testing](/contributing/release-testing) guide to ensure the release doesn't have any major issues. +Before continuing further, follow the [testing guide](/contributing/release-testing) to ensure the source code doesn't have any major issues. ### 3. Run `bump-oss-version` script ```bash +# once verified all the cherry-picked commits, we can push them to remote +git push + # run a script to bump the version -# You most likely **don't** want this release marked as "latest" +# If you are doing this patch release for the current latest minor, then mark it as "latest" ./scripts/bump-oss-version.js --to-version x.y.z --token ``` -### 4. Verify Upgrade helper is updated +### 4. Watch CircleCI to ensure right jobs are being triggered -- You should see a [new publish job complete here](https://github.com/react-native-community/rn-diff-purge/actions) which will be automatically triggered after a new tag is pushed to the `react-native` repository. -- If not, check out the guide on [how to update Upgrade Helper](/contributing/updating-upgrade-helper). +- Once you have run the bump script script, head to CircleCI and you should see under the releases workflow, a `prepare-package-for-release` job. + +
+ CircleCI showing publish release +
CircleCI showing publish release.
+
+ +- Once complete you should be able to run `npm view react-native` and verify that under the `latest` tag, the version is the expected release version. + + ```bash + npm view react-native + ... + dist-tags: + latest: 0.Y.Z next: 0.Y.0-rc.X nightly: 0.0.0-f617e022c + ``` + +### 5. Create a PR of the changelog using the generator + +To generate the changelog, we rely on a dedicated tool called [`@rnx-kit/rn-changelog-generator`](https://github.com/microsoft/rnx-kit/tree/main/incubator/rn-changelog-generator) that will parse the custom changelog messages that contributors write in their PRs. + +```bash +# Run following with the stable release as base, and your rc.0 version +npx @rnx-kit/rn-changelog-generator --base v[LATEST_STABLE]--compare v[YOUR_NEW_MINOR] \ +--repo ~/react-native --changelog ~/react-native/CHANGELOG.md + +# example against 0.68.2 and 0.68.3 +npx @rnx-kit/rn-changelog-generator --base v0.68.2 --compare v0.68.3 \ +--repo ~/react-native --changelog ~/react-native/CHANGELOG.md +``` + +Create a pull request of this change to `react-native` repo and add the `Changelog` label. + +### 6. Create GitHub Release + +Use template below for the GitHub Release: + +```markdown + + + + +- TODO Enumerate picks. + +--- + +You can participate in the conversation on the status of this release in this [discussion](TODO: your discussion link) + +--- + +To help you upgrade to this version, you can use the [upgrade helper](https://react-native-community.github.io/upgrade-helper/) ⚛️ + +--- + +You can find the whole changelog history in the [changelog.md file](https://github.com/facebook/react-native/blob/main/CHANGELOG.md). +``` -### 5. Create a new patch discussion post using template below +### 7. Upload prebuilt Hermes binary + +In the `publish_release` CI workflow, the `build_hermes_macos` step produces a `tmp/hermes/output/hermes-runtime-darwin-vx.y.z.tar.gz` artifact, for example [here](https://app.circleci.com/pipelines/github/facebook/react-native/13933/workflows/5f2ad198-2264-4e7e-8c62-7b28e97532d8/jobs/262322/artifacts) are the artifacts for `0.69.0` release. Download it and attach it to the GitHub release. + +### 8. Create a new patch discussion post using template below ```markdown @@ -70,36 +134,21 @@ If the issue is a [major release issues](https://reactnative.dev/contributing/re 1. ``` -### 6. Update previous discussion post +### 9. Update "should we release 0.Y.Z?" discussion post - Label it `Released`. -- Update the title saying the patch has been released and link to new patch discussion. +- Update the text body saying the patch has been released and link to new patch discussion. - Lock the discussion. -### 7. Create GitHub Release - -Use template below for the GitHub Release: - -```markdown - - - - -- TODO Enumerate picks. - ---- - -You can participate in the conversation on the status of this release in this [discussion](TODO: your discussion link) +### 10. Verify that Upgrade Helper GitHub action has fired ---- - -To help you upgrade to this version, you can use the [upgrade helper](https://react-native-community.github.io/upgrade-helper/) ⚛️ - ---- +- You should see a [new publish job here](https://github.com/react-native-community/rn-diff-purge/actions). +- Once it has finished, you should be able to see that the [Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) presents the option to target the new minor. +- If not, check out the guide on [how to update Upgrade Helper](/contributing/updating-upgrade-helper). -You can find the whole changelog history in the [changelog.md file](https://github.com/facebook/react-native/blob/main/CHANGELOG.md). -``` +### 11. Communicate the new release -### 8. Upload prebuilt Hermes binary +Once all the steps above have been completed, it's time to signal to the community that latest minor is available! Do so in the following channels: -In the `publish_release` CI workflow, the `build_hermes_macos` step produces a `tmp/hermes/output/hermes-runtime-darwin-vx.y.z.tar.gz` artifact, for example [here](https://app.circleci.com/pipelines/github/facebook/react-native/13933/workflows/5f2ad198-2264-4e7e-8c62-7b28e97532d8/jobs/262322/artifacts) are the artifacts for `0.69.0` release. Download it and attach it to the GitHub release. \ No newline at end of file +- [@reactnative](https://twitter.com/reactnative) on twitter (with a link to the GitHub release) +- RN Discord `#releases-coordination` diff --git a/website/contributing/release-testing.md b/website/contributing/release-testing.md index 14aa7303b6b..aea3c951e96 100644 --- a/website/contributing/release-testing.md +++ b/website/contributing/release-testing.md @@ -1,29 +1,87 @@ --- id: release-testing -title: How to Test a Release Candidate +title: How to Test a Release --- -## Pre-requisites +## Test source in the release branch -- Have a clone of `react-native` repo and be on the release candidate branch. +These steps needs to be followed by the release crew as part of the release process, to ensure that new versions published have a good level of stability. + +### Pre-requisites + +- Have a clone of `react-native` repo and be on the release branch (`0.XX-stable`). ```bash # Checkout relevant branch git checkout 0.66-stable - yarn install - # I needed a .watchmanconfig because `npm start` would fail without it. + # Optional: you might need a .watchmanconfig because `npm start` would fail without it. echo '{}' > .watchmanconfig ``` - Have Android and iOS development environment set-up. Follow instructions for macOS/iOS and macOS/Android from the [Environment Setup](/docs/environment-setup) guide. - ### Additional steps for Android + #### Additional steps for Android + + - Gradle should now install [the appropriate NDK](https://github.com/facebook/react-native/blob/main/template/android/build.gradle). Verify that you have in your path the `ANDROID_NDK` variable, pointing to it. + - In case you are on macOS Catalina (or higher), you might also need to run `sudo xattr -r -d com.apple.quarantine /path/to/ndk` to avoid the e2e script to fail. (_That said, this should not happen anymore since from NDK 21 and higher the Android team started signing the NDK._) + +### Steps + +1. Delete `RNTester` and `RNTestProject` from your Android emulator and iOS simulator if leftover from previous test. +2. Remove any temporary files from the `react-native` repo: + + ```bash + git clean -fdx + ``` + +3. Install dependencies: + + ```bash + yarn install + pushd packages/rn-tester + pod install --repo-update + popd + ``` + +4. Use the `test-manual-e2e` script to test `RNTester` and the template app (`RNTestProject`): + + ```bash + # This will run you through the different variants in Test Dimensions table + ./scripts/test-manual-e2e.sh + ``` + +5. Turn on Hermes in the `RNTestProject` and ensures it builds successfully. + + - Enable Hermes for Android: - - Gradle should now install [the appropriate ndk](https://github.com/facebook/react-native/blob/31b64c2615f8af547b68aa6ccaaa244b9c5d3932/template/android/build.gradle#L9). Verify that you have in your path the `ANDROID_NDK` variable, pointing to it. - - In case you are on macOS Catalina (or higher), you might also need to run `sudo xattr -r -d com.apple.quarantine /path/to/ndk` to avoid the e2e script to fail. That said, this should not happen anymore since from NDK 21 and higher the Android team started signing the NDK.\* + ```bash + # Update `/tmp/RNTestProject/android/app/build.gradle` to `enableHermes` + project.ext.react = [ + enableHermes: true, // clean and rebuild if changing + ] -## Test Dimensions + # Clean and rebuild + /tmp/RNTestProject/android$ ./gradlew clean + /tmp/RNTestProject$ npx react-native run-android + ``` + + - Enable Hermes for iOS: + + ```bash + # Update `/tmp/RNTestProject/ios/Podfile` and then run `pod install` + use_react_native!( + :path => config[:reactNativePath], + # to enable hermes on iOS, change `false` to `true` and then install pods + :hermes_enabled => true + ) + + # Install pods and run + /tmp/RNTestProject/ios$ pod install + /tmp/RNTestProject$ npx react-native run-ios + ``` + +### Test Dimensions Covered by running `test-manual-e2e.sh`, see [issue](https://github.com/facebook/react-native/issues/33015) about supporting those "manual" cases. @@ -34,8 +92,21 @@ Covered by running `test-manual-e2e.sh`, see [issue](https://github.com/facebook | iOS - JSC | via `test-manual-e2e.sh` | via `test-manual-e2e.sh` | | iOS - Hermes | via `test-manual-e2e.sh` | manual | -## Test Checklist +**Note well:** Starting from RN 0.70, Hermes is turned on by default so for the template app JSC will need to be manually tested by switching off Hermes. + +### What to test? + +Aside from verifying that the building process is successful, once the app spawn by `test-manual-e2e.sh` is up and running, we want to run a series of manual tests to ensure that some core functionalities work, like Fast Refresh and the Flipper debugger. + +In the `RNTester` you want to also play around with the app and try different components: some important onces are `Flatlist`, `Image` and the "New Architecture Component" (should be the very last one in the list). + +An important element of testing source in the release branch is that this process needs to be preferably be done twice, on two separate machines - there are multiple scenarios in which something might fail on a machine but not on another. By running tests on two computers, we want to reach a step of "double confirmation" that everything works fine. + +## Testing an RC on a project - checklist +If you are a [release tester](./release-roles-responsibilities#release-tester-responsibilities), the ask for you is to set as dependency in your app the latest RC available and report in the related "Road to 0.XX" how it went ([example](https://github.com/reactwg/react-native-releases/discussions/26)). To help provide the relevant information, we have prepared this template: you can copy/pasted it in a comment and fill it accordingly. + +```markdown | Link to branch: | | | ---------------------------- | :---------------------- | | **Project info** | | @@ -51,6 +122,7 @@ Covered by running `test-manual-e2e.sh`, see [issue](https://github.com/facebook | Chrome remote debugger | ✅/🚨/🙅‍♂️ | | Hermes debugger | ✅/🚨/🙅‍♂️ | | Flipper debugger | ✅/🚨/🙅‍♂️ | +| Deploy to TestFlight | ✅/🚨/🙅‍♂️ | | **Tested - Android** | | | Fast Refresh | ✅/🚨/🙅‍♂️ | | Debug/dev build on Emulator | ✅/🚨/🙅‍♂️ | @@ -59,67 +131,4 @@ Covered by running `test-manual-e2e.sh`, see [issue](https://github.com/facebook | Chrome remote debugger | ✅/🚨/🙅‍♂️ | | Hermes debugger | ✅/🚨/🙅‍♂️ | | Flipper debugger | ✅/🚨/🙅‍♂️ | - -## Steps - -1. Delete `RNTester` and `RNTestProject` from your Android emulator and iOS simulator if leftover from previous test. -2. Remove any temporary files: - - ```bash - git clean -fdx - ``` - -3. Install dependencies: - - ```bash - yarn install - pushd packages/rn-tester - pod install --repo-update - popd - ``` - -4. Go through **Test Checklist** for variants supported by `test-manual-e2e` script: - - ```bash - # This will run you through the different variants in Test Dimensions table - ./scripts/test-manual-e2e.sh - ``` - -5. Go through **Test Checklist** for Hermes enabled template app. - - :::info - Script will install template app at `/tmp/RNTestProject`. - ::: - -- Enable Hermes for Android template app, clean, build and go through [Test Checklist](#test-checklist). - - ```bash - # Update `/tmp/RNTestProject/android/app/build.gradle` to `enableHermes` - project.ext.react = [ - enableHermes: true, // clean and rebuild if changing - ] - - # Clean and rebuild - /tmp/RNTestProject/android$ ./gradlew clean - /tmp/RNTestProject$ npx react-native run-android - ``` - -- Enable Hermes for iOS template app, clean, build and go through [Test Checklist](#test-checklist). - - ```bash - # Update `/tmp/RNTestProject/ios/Podfile` and then run `pod install` - use_react_native!( - :path => config[:reactNativePath], - # to enable hermes on iOS, change `false` to `true` and then install pods - :hermes_enabled => true - ) - - # Install pods and run - /tmp/RNTestProject/ios$ pod install - /tmp/RNTestProject$ npx react-native run-ios - ``` - -## Other dimensions to consider - -- Running your iOS project with `--release` configuration. -- Attempting to upload your app to TestFlight. +``` diff --git a/website/contributing/updating-upgrade-helper.md b/website/contributing/updating-upgrade-helper.md index 62eca69f496..2467253290c 100644 --- a/website/contributing/updating-upgrade-helper.md +++ b/website/contributing/updating-upgrade-helper.md @@ -3,8 +3,6 @@ id: updating-upgrade-helper title: How to Update Upgrade Helper --- -_Point people: [@lucasbento](https://github.com/lucasbento), [@pvinis](https://github.com/pvinis), [@kelset](https://github.com/kelset)_ - From the readme of [its dedicated repo](https://github.com/react-native-community/upgrade-helper#-how-it-works): :::note diff --git a/website/sidebarsContributing.json b/website/sidebarsContributing.json index 9fd41908a24..744903a4b65 100644 --- a/website/sidebarsContributing.json +++ b/website/sidebarsContributing.json @@ -45,10 +45,10 @@ "collapsed": false, "collapsible": false, "items": [ - "release-candidate-minor", + "release-branch-cut-and-rc0", "release-candidate-patch", - "release-stable-patch", "release-stable-minor", + "release-stable-patch", "release-troubleshooting" ] } diff --git a/website/static/_redirects b/website/static/_redirects index 8ee8ad9b903..49f6076c6bf 100644 --- a/website/static/_redirects +++ b/website/static/_redirects @@ -10,6 +10,7 @@ /docs/understanding-cli https://github.com/react-native-community/cli#react-native-cli /contributing/how-to-contribute /contributing/overview +/releases/release-candidate-minor /releases/release-branch-cut-and-rc0 # Changed blog post dates /blog/2021/03/11/version-0.64 /blog/2021/03/12/version-0.64