Skip to content

Commit

Permalink
Revert "Canaries blog post"
Browse files Browse the repository at this point in the history
This reverts commit aa88d8a.
  • Loading branch information
gaearon committed May 3, 2023
1 parent aa88d8a commit 9a865fd
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 115 deletions.
92 changes: 0 additions & 92 deletions src/content/blog/2023/05/03/react-canaries.md

This file was deleted.

5 changes: 0 additions & 5 deletions src/content/blog/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,6 @@ This blog is the official source for the updates from the React team. Anything i

<div className="sm:-mx-5 flex flex-col gap-5 mt-12">

<BlogCard title="React Canaries: Incremental Feature Rollout Outside Meta" date="May 3, 2023" url="/blog/2023/05/03/react-canaries">

Traditionally, new React features used to only be available at Meta first, and land in the open source releases later. We'd like to offer the React community an option to adopt individual new features as soon as their design is close to final--similar to how Meta uses React internally. We are introducing a new officially supported Canary release channel. It lets curated setups like frameworks decouple adoption of individual React features from the React release schedule.

</BlogCard>

<BlogCard title="React Labs: What We've Been Working On – March 2023" date="March 22, 2023" url="/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023">

Expand Down
17 changes: 6 additions & 11 deletions src/content/community/versioning-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,40 +79,35 @@ This section will be most relevant to developers who work on frameworks, librari

Each of React's release channels is designed for a distinct use case:

- [**Latest**](#latest-channel) is for stable, semver React releases. It's what you get when you install React from npm. This is the channel you're already using today. **User-facing applications that consume React directly use this channel.**
- [**Canary**](#canary-channel) tracks the main branch of the React source code repository. Think of these as release candidates for the next semver release. **[Frameworks or other curated setups may choose to use this channel with a pinned version of React.](/blog/2023/05/03/react-canaries) You can also Canaries for integration testing between React and third party projects.**
- [**Latest**](#latest-channel) is for stable, semver React releases. It's what you get when you install React from npm. This is the channel you're already using today. **Use this for all user-facing React applications.**
- [**Canary**](#canary-channel) tracks the main branch of the React source code repository. Think of these as release candidates for the next minor semver release. Use this for integration testing between React and third party projects.
- [**Experimental**](#experimental-channel) includes experimental APIs and features that aren't available in the stable releases. These also track the main branch, but with additional feature flags turned on. Use this to try out upcoming features before they are released.

All releases are published to npm, but only Latest uses semantic versioning. Prereleases (those in the Canary and Experimental channels) have versions generated from a hash of their contents and the commit date, e.g. `18.3.0-canary-388686f29-20230503` for Canary and `0.0.0-experimental-388686f29-20230503` for Experimental.

**Both Latest and Canary channels are officially supported for user-facing applications, but with different expectations**:

* Latest releases follow the traditional semver model.
* Canary releases [must be pinned](/blog/2023/05/03/react-canaries) and may include breaking changes. They exist for curated setups (like frameworks) that want to gradually release new React features and bugfixes on their own release schedule.

The Experimental releases are provided for testing purposes only, and we provide no guarantees that behavior won't change between releases. They do not follow the semver protocol that we use for releases from Latest.
**The only officially supported release channel for user-facing applications is Latest**. Canary and Experimental releases are provided for testing purposes only, and we provide no guarantees that behavior won't change between releases. They do not follow the semver protocol that we use for releases from Latest.

By publishing prereleases to the same registry that we use for stable releases, we are able to take advantage of the many tools that support the npm workflow, like [unpkg](https://unpkg.com) and [CodeSandbox](https://codesandbox.io).

### Latest channel {/*latest-channel*/}

Latest is the channel used for stable React releases. It corresponds to the `latest` tag on npm. It is the recommended channel for all React apps that are shipped to real users.

**If you're not sure which channel you should use, it's Latest.** If you're using React directly, this is what you're already using. You can expect updates to Latest to be extremely stable. Versions follow the semantic versioning scheme, as [described earlier.](#stable-releases)
**If you're not sure which channel you should use, it's Latest.** If you're a React developer, this is what you're already using. You can expect updates to Latest to be extremely stable. Versions follow the semantic versioning scheme, as [described earlier.](#stable-releases)

### Canary channel {/*canary-channel*/}

The Canary channel is a prerelease channel that tracks the main branch of the React repository. We use prereleases in the Canary channel as release candidates for the Latest channel. You can think of Canary as a superset of Latest that is updated more frequently.

The degree of change between the most recent Canary release and the most recent Latest release is approximately the same as you would find between two minor semver releases. However, **the Canary channel does not conform to semantic versioning.** You should expect occasional breaking changes between successive releases in the Canary channel.

**Do not use prereleases in user-facing applications directly unless you're following the [Canary workflow](/blog/2023/05/03/react-canaries).**
**Do not use prereleases in user-facing applications.**

Releases in Canary are published with the `canary` tag on npm. Versions are generated from a hash of the build's contents and the commit date, e.g. `18.3.0-canary-388686f29-20230503`.

#### Using the canary channel for integration testing {/*using-the-canary-channel-for-integration-testing*/}

The Canary channel also supports integration testing between React and other projects.
The Canary channel is designed to support integration testing between React and other projects.

All changes to React go through extensive internal testing before they are released to the public. However, there are a myriad of environments and configurations used throughout the React ecosystem, and it's not possible for us to test against every single one.

Expand Down
7 changes: 0 additions & 7 deletions src/sidebarBlog.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,6 @@
"path": "/blog",
"skipBreadcrumb": true,
"routes": [
{
"title": "React Canaries: Enabling Incremental Feature Rollout Outside Meta",
"titleForHomepage": "React Canaries: Incremental Feature Rollout",
"icon": "blog",
"date": "May 3, 2023",
"path": "/blog/2023/05/03/react-canaries"
},
{
"title": "React Labs: What We've Been Working On – March 2023",
"titleForHomepage": "React Labs: March 2023",
Expand Down

0 comments on commit 9a865fd

Please sign in to comment.