Skip to content

Commit 6f02ca8

Browse files
authored
Merge branch 'remix-run:main' into main
2 parents 879db62 + 6ab22a7 commit 6f02ca8

File tree

4 files changed

+70
-33
lines changed

4 files changed

+70
-33
lines changed

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ body:
1111
- **All** bugs must have a **minimal** reproduction
1212
- Minimal means that it is not just pointing to a deployed site or a branch in your existing application
1313
- The preferred method is StackBlitz via [https://reactrouter.com/new](https://reactrouter.com/new)
14-
- If Stackblitz is not an option, a Github repo based on a fresh `create-react-router` app is acceptable
14+
- If Stackblitz is not an option, a GitHub repo based on a fresh `create-react-router` app is acceptable
1515
- Only in extraordinary circumstances will code snippets or maximal reproductions be accepted
1616
- Issue Review
1717
- Issues not meeting the above criteria will be closed and pointed to this document

GOVERNANCE.md

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
- [Bug/Issue Process](#bugissue-process)
77
- [New Feature Process](#new-feature-process)
88
- [New Feature Stages](#new-feature-stages)
9-
- [Stage 0 - Proposal](#stage-0---proposal)
10-
- [Stage 1 - Consideration](#stage-1---consideration)
11-
- [Stage 2 - Alpha](#stage-2---alpha)
12-
- [Stage 3 - Beta](#stage-3---beta)
13-
- [Stage 4 - Stabilization](#stage-4---stabilization)
14-
- [Stage 5 - Stable](#stage-5---stable)
9+
- [Stage 0 Proposal](#stage-0--proposal)
10+
- [Stage 1 Consideration](#stage-1--consideration)
11+
- [Stage 2 Alpha](#stage-2--alpha)
12+
- [Stage 3 Beta](#stage-3--beta)
13+
- [Stage 4 Stabilization](#stage-4--stabilization)
14+
- [Stage 5 Stable](#stage-5--stable)
1515

1616
## Overview
1717

@@ -20,15 +20,15 @@ React Router has been around since 2014 largely under the development and oversi
2020
[^1]: https://remix.run/blog/merging-remix-and-react-router
2121
[^2]: https://remix.run/blog/incremental-path-to-react-19
2222

23-
This document will outline the process in which React Router will continue to evolve, and how new features will make their way into the codebase. This is an evergreen document and will be updated as-needed to reflect future changes in the process.
23+
This document will outline the process in which React Router will continue to evolve and how new features will make their way into the codebase. This is an evergreen document and will be updated as needed to reflect future changes in the process.
2424

2525
## Design Goals
2626

2727
The following design goals should be considered when considering RFCs for acceptance:
2828

29-
- **Less is More**. React Router has gained a _lot_ of functionality in the past years, but with that comes a bunch of new API surface. It's time to hone in on the core functionality and aim to reduce API surface _without sacrificing capabilities_. This may come in multiple forms, such as condensing a few existing APIs into a singular API, or deprecating a current APIs in favor of a new React API.
30-
- **Routing and Data Focused.** Focus on core router-integrated/router-centric APIs and avoid adding first class APIs that can be implemented in user-land
31-
- **Simple Migration Paths.** Major version upgrade's don't have to stink. Breaking changes should be implemented behind future flags. Deprecations should be properly marked ahead of time in code and in documentation. Console warnings should be added prior to major releases to nudge developers towards the changes they can begin make to prep for the upgrade.
29+
- **Less is More**. React Router has gained a _lot_ of functionality in the past years, but with that comes a bunch of new API surface. It's time to hone in on the core functionality and aim to reduce API surface _without sacrificing capabilities_. This may come in multiple forms, such as condensing a few existing APIs into a singular API, or deprecating current APIs in favor of a new React API.
30+
- **Routing and Data Focused.** Focus on core router-integrated/router-centric APIs and avoid adding first-class APIs that can be implemented in user-land
31+
- **Simple Migration Paths.** Major version upgrade's don't have to stink. Breaking changes should be implemented behind future flags. Deprecations should be properly marked ahead of time in code and in documentation. Console warnings should be added prior to major releases to nudge developers towards the changes they can begin to make to prep for the upgrade.
3232
- **Lowest Common Mode.** Features are added at the lowest mode possible (`declarative -> data -> framework`) and then leveraged by the higher-level modes. This ensures that the largest number of React Router applications can leverage them.
3333
- **Regular Release Cadence**. Aim for major SemVer releases on a ~yearly basis so application developers can prepare in advance.
3434

@@ -44,18 +44,18 @@ The SC will initially consist of the Remix team developers:
4444
- Jacob Ebey
4545
- Brooks Lybrand
4646

47-
In the future, we may also add a limited number of heavily-involved community members to the SC as well.
47+
In the future, we may add a limited number of heavily involved community members to the SC as well.
4848

49-
In order to reduce friction the SC will primarily operate asynchronously via Github but private and/or public meetings may be scheduled as needed.
49+
To reduce friction, the SC will primarily operate asynchronously via GitHub, but private and/or public meetings may be scheduled as needed.
5050

5151
## Bug/Issue Process
5252

53-
Due to the # of React Router applications out there, we have to be a bit strict on the process for filing issues to avoid an overload in Github.
53+
Due to the # of React Router applications out there, we have to be a bit strict on the process for filing issues to avoid an overload in GitHub.
5454

5555
- **All** bugs must have a **minimal** reproduction [^3]
5656
- Minimal means that it is not just pointing to a deployed site or a branch in your existing application
5757
- The preferred method is StackBlitz via [https://reactrouter.com/new](https://reactrouter.com/new)
58-
- If Stackblitz is not an option, a Github repo based on a fresh `create-react-router` app is acceptable
58+
- If Stackblitz is not an option, a GitHub repo based on a fresh `create-react-router` app is acceptable
5959
- Only in extraordinary circumstances will code snippets or maximal reproductions be accepted
6060
- Issue Review
6161
- Issues not meeting the above criteria will be closed and pointed to this document
@@ -64,17 +64,17 @@ Due to the # of React Router applications out there, we have to be a bit strict
6464
- Fixing Issues
6565
- The SC will mark good community issues with an `Accepting PRs` label
6666
- These issues will generally be ones that are likely to have a small surface area fix
67-
- However, anyone can work on any issue but there's no guarantee the PR will be accepted if the surface area is too large for expedient review by a core team member
67+
- However, anyone can work on any issue, but there's no guarantee the PR will be accepted if the surface area is too large for expedient review by a core team member
6868

6969
[^3]: https://antfu.me/posts/why-reproductions-are-required
7070

7171
## New Feature Process
7272

73-
The process for new features being added to React Router will follow a series of stages loosely based on the [TC39 Process](https://tc39.es/process-document/). It is important to note that entrance into any given stage does not imply that an RFC will proceed any further. The stages will act as a funnel with fewer RFCs making it into subsequent stages such that only the strongest RFCs make it into a React Router release in a stable fashion. This table gives a high-level overview of the Stages but please see the individual stage sections below for more detailed information on the stages and the process for moving an FC through them.
73+
The process for new features being added to React Router will follow a series of stages loosely based on the [TC39 Process](https://tc39.es/process-document/). It is important to note that entrance into any given stage does not imply that an RFC will proceed any further. The stages will act as a funnel with fewer RFCs making it into later stages such that only the strongest RFCs make it into a React Router release in a stable fashion. This table gives a high-level overview of the Stages, but please see the individual stage sections below for more detailed information on the stages and the process for moving an FC through them.
7474

7575
| Stage | Name | Entrance Criteria | Purpose |
7676
| ----- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
77-
| 0 | Proposal | Proposal discussion opened on Github | We start with a Github Proposal to provide the lowest barrier to RFC submission. Anyone can submit an RFC and community members can review, comment, up-vote without any initial involvement of the SC. |
77+
| 0 | Proposal | Proposal discussion opened on GitHub | We start with a GitHub Proposal to provide the lowest barrier to RFC submission. Anyone can submit an RFC and community members can review, comment, up-vote without any initial involvement of the SC. |
7878
| 1 | Consideration | Proposal acceptance from 2 or more SC members | The consideration phase is the first "funnel" for incoming RFCs where the SC can officially express interest in the more popular RFCs. We only require 2 SC members to express interest to move an RFC into the **Consideration** phase to allow for low-friction experimentation of features in the **Alpha** stage. |
7979
| 2 | Alpha | Pull-Request (PR) opened to implement the feature in an "unstable" state. This should be accompanied by a mechanism for community members to test the feature via [pkg.pr.new](https://pkg.pr.new/), [patch-package](https://www.npmjs.com/package/patch-package), or [pnpm patch](https://pnpm.io/cli/patch) | The **Alpha** stage is the next funnel for RFCs. Once interest has been expressed by the SC in the **Consideration** phase we open the RFC up for a sample PR implementation and a mechanism for community members to alpha test the feature without requiring that anything be shipped in a React Router SemVer release. This stage allows evaluation of the RFC in running applications and consideration of what a practical implementation of the RFC looks like in the code. |
8080
| 3 | Beta | PR approval from at least 50% of the SC members indicating their acceptance of the PR for an unstable API | A RFC enters the **Beta** stage once enough members of the SC feel comfortable not only with the code for the beta feature, but have also seen positive feedback from alpha testers that the feature is working as expected. Once an **Alpha** stage PR has enough SC approvals, it will be merged and be included in the next React Router release. |
@@ -85,28 +85,28 @@ To get a feature accepted and implemented in React Router, it will go through th
8585

8686
## New Feature Stages
8787

88-
### Stage 0 - Proposal
88+
### Stage 0 Proposal
8989

90-
- All new features begin at **Stage 0 - Proposal** when a Request For Comments (RFC) is written up in a GitHub Proposal Discussion
90+
- All new features begin at **Stage 0 Proposal** when a Request For Comments (RFC) is written up in a GitHub Proposal Discussion
9191
- Anyone can write an RFC, including core team members and community members
9292
- The RFC should outline the use-case for the new feature, why current APIs are insufficient for the use-case, and provide potential API surfaces for the feature
9393
- The proposal should be clear, concise, and provide enough context for the Steering Committee (SC) and community to evaluate its merit
94-
- Community upvotes on the proposal are used as a signal of interest and demand for the SC - higher upvoted issues are more likely to be considered by the SC members
94+
- Community upvotes on the proposal are used as a signal of interest and demand for the SC higher upvoted issues are more likely to be considered by the SC members
9595
- At this stage, community members may feel free to work on sample implementations in a fork of the repo and provide links in the RFC, but a pull request **should not** be opened until it reaches Stage 1
9696

97-
### Stage 1 - Consideration
97+
### Stage 1 Consideration
9898

99-
- A proposal enters **Stage 1 - Consideration** when two or more SC members indicate interest/support for the idea as a valuable addition to React Router
100-
- Upon entering this stage, a Github Issue will be created for the feature and added to the roadmap
99+
- A proposal enters **Stage 1 Consideration** when two or more SC members indicate interest/support for the idea as a valuable addition to React Router
100+
- Upon entering this stage, a GitHub Issue will be created for the feature and added to the roadmap
101101
- These initial supporting SC members will be the champions for the feature and will be loosely responsible for shepherding the feature through the stages of the RFC process
102102
- At this stage, the proposal is eligible for a sample PR implementation from a core team or community member
103103
- The SC will indicate at this stage if this is a feature open to a community PR or something the core team would prefer to tackle
104104
- All PRs at this stage should implement the feature in an "unstable" fashion (usually using an `unstable_` prefix on the future flag or API)
105105

106-
### Stage 2 - Alpha
106+
### Stage 2 Alpha
107107

108-
- A proposal enters **Stage 2 - Alpha** once a PR has been opened implementing the feature in an `unstable_` state
109-
- At this stage, we are looking for early community testing _before_ merging any work to the React Router repo - so these PRs should provide a mechanism for community members to opt-into to alpha testing
108+
- A proposal enters **Stage 2 Alpha** once a PR has been opened implementing the feature in an `unstable_` state
109+
- At this stage, we are looking for early community testing _before_ merging any work to the React Router repo so these PRs should provide a mechanism for community members to opt-into to alpha testing
110110
- Ideally, we'll be able to wire up [pkg.pr.new](https://github.com/stackblitz-labs/pkg.pr.new) on the repo
111111
- Otherwise, a `.patch` file (or instructions to create one) can be included in the PR for use with [patch-package](https://www.npmjs.com/package/patch-package) or [pnpm patch](https://pnpm.io/cli/patch)
112112
- Feedback from alpha testers is considered essential for further progress
@@ -118,24 +118,24 @@ To get a feature accepted and implemented in React Router, it will go through th
118118
- Code is not required to be in a final state yet, but it must be coded in such a way so as not to introduce regressions to other areas of the API
119119
- We have seen enough positive feedback from Alpha testers to move the feature along
120120

121-
### Stage 3 - Beta
121+
### Stage 3 Beta
122122

123-
- A proposal enters **Stage 3 - Beta** once it receives **Stage 2 - Alpha** PR approvals from at least 50% of the SC members and is merged to `dev`
123+
- A proposal enters **Stage 3 Beta** once it receives **Stage 2 Alpha** PR approvals from at least 50% of the SC members and is merged to `dev`
124124
- This will include the feature in `nightly` releases and the next normal SemVer release for broader beta testing under the `unstable_` flag
125125

126-
### Stage 4 - Stabilization
126+
### Stage 4 Stabilization
127127

128-
- A proposal enters **Stage 4 - Stabilization** after a minimum of 1 month in **Stage 3 - Beta** and a PR has been opened to remove the `unstable_` prefixes and stabilize the feature
128+
- A proposal enters **Stage 4 Stabilization** after a minimum of 1 month in **Stage 3 Beta** and a PR has been opened to remove the `unstable_` prefixes and stabilize the feature
129129
- Stabilization PRs should add proper documentation for the feature
130130
- SC members will review and approve the PR via GitHub reviews
131131
- Approval at this stage communicates:
132132
- Sufficient community feedback has been received from beta testers to trust the API's design and implementation
133133
- The code is production-quality and well-tested, with no related regressions
134134
- The PR includes documentation for the stable feature
135135

136-
### Stage 5 - Stable
136+
### Stage 5 Stable
137137

138-
- A proposal is enters **Stage 5 - Stable** once it receives **Stage 4** PR approvals from at least 50% of the SC members and is merged to `dev`
138+
- A proposal enters **Stage 5 Stable** once it receives **Stage 4 — Stabilization** PR approvals from at least 50% of the SC members and is merged to `dev`
139139
- This will include the stable feature in `nightly` releases and the next normal SemVer release
140140

141141
[mermaid]: https://mermaid.live/edit#pako:eNqVkm9r2zAQxr_KcTDYwAn-E8eOGYXGScdeFEYzGLQuQ4nPjsCWjCx3beN89yn2rJKX06tDd8_vnpPuhAeZEyZYVPLP4ciUhp-bTIA5t0_fc2LPMJvd9L8U1wQ_lGxky6oe1k8Z7jQrCdyve3Xzecp8yfB5VK8H3XQPrGmUfDFBoWQNPuxSuKd6T6rtIbUwD2aQStHynBTTXAqLS0fcA_C6qagmobkogbXQiVazfUW_e9hYjm84t1VzZFa_mfTXRpiGilirIXQ_gSyubG0tLjC4NekP2naiKarly8WJtQGNooK_9nBn5QsjN9GeV_z9eqq7_3f1zWLDf9iKDA8drEnVjOfmL08Xeob6aB4qw8SEORWsq3SGmTib0q7JmaZtzrVUmBSsaslB1mm5exMHTLTqaCracFYqVtuqhglMTviKySqYh4toFUfxIo6DyPUdfMPEW0ZzNwjNvb9wYz8Ko7OD71IagjuPo1UQL1dLb7F0PS8IB9zjkBx70mDpflzJYTMdVLIrj7Z_qS4jjtWKhFmUVHZCYxKe_wLxVeMU

0 commit comments

Comments
 (0)