From 2c2476834a7c739ca239750b73f74aa1df144a93 Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Wed, 3 May 2023 12:10:32 -0400 Subject: [PATCH] Rename "next" prerelease channel to "canary" (#26761) The "next" prerelease channel represents what will be published the next time we do a stable release. We publish a new "next" release every day using a timed CI workflow. When we introduced this prerelease channel a few years ago, another name we considered was "canary". But I proposed "next" instead to create a greater distinction between this channel and the "experimental" channel (which is published at the same cadence, but includes extra experimental features), because some other projects use "canary" to refer to releases that are more unstable than how we would use it. The main downside of "next" is someone might mistakenly assume the name refers to Next.js. We were aware of this risk at the time but didn't think it would be an issue in practice. However, colloquially, we've ended up referring to this as the "canary" channel anyway to avoid precisely that confusion. So after further discussion, we've agreed to rename to "canary". This affects the label used in the version string (e.g. `18.3.0-next-a1c2d3e4` becomes `18.3.0-canary-a1c2d3e4`) as well as the npm dist tags used to publish the releases. For now, I've chosen to publish the canaries using both `@canary` and `@next` dist tags, so that downstream consumers who might depend on `@next` have time to adjust. We can remove that later after the change has been communicated. --- .circleci/config.yml | 20 ++++++++++++++----- ReactVersions.js | 20 +++++++++++-------- fixtures/devtools/regression/canary.html | 6 +++--- fixtures/devtools/regression/next.html | 14 ++++++------- .../get-latest-next-version.js | 4 ++-- scripts/rollup/build-all-release-channels.js | 16 +++++++-------- 6 files changed, 47 insertions(+), 33 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 042a5bc4d6..c6710aa036 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -604,10 +604,20 @@ workflows: when: << pipeline.parameters.prerelease_commit_sha >> jobs: - publish_prerelease: - name: Publish to Next channel + name: Publish to Canary channel commit_sha: << pipeline.parameters.prerelease_commit_sha >> release_channel: stable - dist_tag: "next" + # The tags to use when publishing canaries. The main one we should + # always include is "canary" but we can use multiple (e.g. alpha, + # beta, rc). To declare multiple, use a comma-separated string, like + # this: + # dist_tag: "canary,alpha,beta,rc" + # + # TODO: We currently tag canaries with "next" in addition to "canary" + # because this used to be called the "next" channel and some + # downstream consumers might still expect that tag. We can remove this + # after some time has elapsed and the change has been communicated. + dist_tag: "canary,next" - publish_prerelease: name: Publish to Experimental channel requires: @@ -615,7 +625,7 @@ workflows: # will sometimes fail if you try to concurrently publish two # different versions of the same package, even if they use different # dist tags. - - Publish to Next channel + - Publish to Canary channel commit_sha: << pipeline.parameters.prerelease_commit_sha >> release_channel: experimental dist_tag: experimental @@ -633,7 +643,7 @@ workflows: - main jobs: - publish_prerelease: - name: Publish to Next channel + name: Publish to Canary channel commit_sha: << pipeline.git.revision >> release_channel: stable dist_tag: "next" @@ -644,7 +654,7 @@ workflows: # will sometimes fail if you try to concurrently publish two # different versions of the same package, even if they use different # dist tags. - - Publish to Next channel + - Publish to Canary channel commit_sha: << pipeline.git.revision >> release_channel: experimental dist_tag: experimental diff --git a/ReactVersions.js b/ReactVersions.js index 789068abeb..c59e772e5c 100644 --- a/ReactVersions.js +++ b/ReactVersions.js @@ -7,12 +7,12 @@ // // The @latest channel uses the version as-is, e.g.: // -// 18.0.0 +// 18.3.0 // -// The @next channel appends additional information, with the scheme +// The @canary channel appends additional information, with the scheme // -