HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
reactjs
rfcs
Web Development2018–2024
reactjs / rfcs

rfcs

RFCs for changes to React

31Distinct people
45Mentions
1Explicit recommenders
5.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

RFCs for changes to React

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I imagine most of them could be, but this is an API which would require a lot of additions to the existing React.Component API, and would end up duplicating a bunch of…

rimunroe used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 6:01:08 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year45 dated mentions

Observed mentions: 2018-03-28 01:47:03 UTC to 2024-02-27 13:07:58 UTC.

0510152018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 11 mentions; 0 submissions, 11 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 14 mentions; 2 submissions, 12 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 11 mentions; 9 submissions, 2 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC11011
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC14212
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC1192
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC606
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
React RFCs Many changes, including bug fixes and documentation improvements can be implemented and reviewed via the normal GitHub pull request workflow. Some changes though are "substantial", and we ask that these be put through a bit of a design process and produce a consensus among the React core team. The "RFC" (request for comments) process is intended to provide a consistent and controlled path for new features to enter the project. Active RFC List Contributor License Agreement (CLA) In order to accept your pull request, we need you to submit a CLA. You only need to do this once, so if you've done this for another Facebook open source project, you're good to go. If you are submitting a pull request for the first time, just let us know that you have completed the CLA and we can cross-check with your GitHub username. Complete your CLA here. When to follow this process You should consider using this process if you intend to make "substantial" changes to React or its documentation. Some examples that would benefit from an RFC are: A new feature that creates new API surface area, and would require a feature flag if introduced. The removal of features that already shipped as part of the release channel. The introduction of new idiomatic usage or conventions, even if they do not include code changes to React itself. Some changes do not require an RFC: Rephrasing, reorganizing or refactoring Addition or removal of warnings Additions that strictly improve objective, numerical quality criteria (speedup, better browser support) Additions only likely to be noticed by other implementors-of-React, invisible to users-of-React. What to expect It is hard to write an RFC that would get accepted. Nevertheless, this shouldn't discourage you from writing one. React has a very limited API surface area, and each feature needs to work seamlessly with all other features. Even among the team members who work on React full time every day, ramping up and gaining enough context to write a good RFC takes more than a year. In practice, React RFCs serve two purposes: React Team RFCs are submitted by React Team members after extensive (sometimes, multi-month or multi-year) design, discussion, and experimentation. In practice, they comprise the majority of the RFCs that got merged so far. The purpose of these RFCs is to preview the design for the community and to provide an opportunity for feedback. We read every comment on the RFCs we publish, respond to questions, and sometimes incorporate the feedback into the proposal. Since our time is limited, we don't tend to write an RFC for a React feature unless we're very confident that it fits the design. Although it might look like most React Team RFCs easily get accepted, in practice it's because 98% of ideas were left on the cutting room floor. The remaining 2% that we feel very confident and have team consensus on about are the ones that we announce as RFCs for community feedback. Community RFCs can be submitted by anyone. In practice, most community RFCs do not get merged. The most common reasons we reject an RFC is that it has significant design gaps or flaws, does not work cohesively with all the other features, or does not fall into our view of the scope of React. However, getting merged is not the only success criteria for an RFC. Even when the API design does not match the direction we'd like to take, we find RFC discussions very valuable for research and inspiration. We don't always review community RFCs in a timely manner, but whenever we start work on a related area, we check the RFCs in that area, and review the use cases and concerns that the community members have posted. When you send an RFC, your primary goal should not be necessarily to get it merged into React as is, but to generate a rich discussion with the community members. If your proposal later becomes accepted, that's great. But even if it doesn't, it won't be in vain. The resulting discussion often informs the next proposal in the same problem space, whether it comes from the community or from the React Team. Many library authors are reading the discussions, so RFCs often lead to community experimentation and userland solutions. We apply the same level of rigour both to React Team RFCs and Community RFCs. The primary difference between them is in the design phase: React Team RFCs tend to be submitted at the end of the design process whereas the Community RFCs tend to be submitted at the beginning as a way to kickstart it. What the process is In short, to get a major feature added to React, one usually first gets the RFC merged into the RFC repo as a markdown file. At that point the RFC is 'active' and may be implemented with the goal of eventual inclusion into React. Fork the RFC repo http://github.com/reactjs/rfcs Copy 0000-template.md to text/0000-my-feature.md (where 'my-feature' is descriptive. Don't assign an RFC number yet). Fill in the RFC. Put care into the details: RFCs that do not present convincing motivation, demonstrate understanding of the impact of the design, or are disingenuous about the drawbacks or alternatives tend to be poorly-received. Submit a pull request. As a pull request the RFC will receive design feedback from the larger community, and the author should be prepared to revise it in response. Build consensus and integrate feedback. RFCs that have broad support are much more likely to make progress than those that don't receive any comments. Eventually, the team will decide whether the RFC is a candidate for inclusion in React. Note that a team review may take a long time, and we suggest that you ask members of the community to review it first. RFCs that are candidates for inclusion in React will enter a "final comment period" lasting 3 calendar days. The beginning of this period will be signaled with a comment and tag on the RFCs pull request. An RFC can be modified based upon feedback from the team and community. Significant modifications may trigger a ne
Read the full README on GitHub

What Hacker News says

11 sources
I suggest you to read about algebraic effects. We don't have them in JavaScript, but conceptually that's what Hooks represent. (This is as functional as it gets.) React has always been about taking useful ideas from functional programming and bringing it to mainstream through pragmatic choices in JS. Your concern about the "globalness" is addressed in Sebastian's comment which is linked five times throughout the post — you should definitely check it out! https://github.com/reactjs/rfcs/pull/68#issuecomment-4393148... Finally, don't forget you're comparing Hooks to classes. Those are hardly functional either.
In Why Do React Hooks Rely on Call Order?
Not quite sure what you mean. Maybe the RFC might explain the motivation a bit more? https://github.com/reactjs/rfcs/blob/master/text/0065-contex... The contextType API serves as a convenience for the most common case of accessing context today. While the existing render prop API is more versatile, the fact is it's awkward in some cases with classes (e.g. when you need to access it in lifecycle). And unfortunately that means that people are stuck using the legacy context API which is even worse (it makes React bigger and slower). So we're adding a convenience to help people migrate to the new implementation with a slightly more familiar syntax. I guess in a way it _is_ a compromise, but in our view it's better than if people just kept using the legacy context API. Hope that makes sense.
In React v16.6.0: lazy, memo and contextType
I'm _specifically_ hoping to use it in React-Redux v6.x, and wrote up a very extended description a couple days ago of why and how I hope to use it: https://github.com/reduxjs/react-redux/issues/1018 I actually referenced your blog post as a good overview of how to use the bitmask API, so thanks for writing it! I also filed a React RFC to make the API a bit more flexible by allowing us to pass a `calculateChangedBits` function directly to a `Context.Provider` instance: https://github.com/reactjs/rfcs/pull/60 Sebastian Markbage replied in that RFC thread, and tbh the discussion seemed a bit odd. It seemed like he was discouraging me from trying to use the bitmask API, or trying to figure out why I might actually want to use it, when it seems like the entire reason it exists is exactly for something like React-Redux to leverage it for perf
Read the rest
ormance optimizations.
In React-copy-write: immutable React state management library
> In your experience, what are the kind of things that people do in `componentWillMount` that they shouldn't be doing? The biggest one is probably adding event listeners or setting up subscriptions (which can cause memory leaks). Here are some others: https://github.com/reactjs/rfcs/blob/master/text/0006-static... > Is it correct to say that `getSnapshotBeforeUpdate` is named to indicate what you were supposed to use `componentWillMount` for? No. `getSnapshotBeforeUpdate` is not really related to `componentWillMount`. It relates more to what people were using `componentWillUpdate` for.
In React v16.3.0: New lifecycles and context API
You will be able to continue to use this method in version 17. You'll just need to run a codemod [1] to rename it to "UNSAFE_ componentWillReceiveProps". It will otherwise work the same as it always has. We are trying to strike a balance between supporting huge legacy apps- (something Facebook has to do for itself too)- and encouraging safe/bug-free coding practices for future apps. 1: https://github.com/reactjs/rfcs/blob/master/text/0006-static...
In Update on Async Rendering
The RFC for getDerivedStateFromProps (https://github.com/reactjs/rfcs/blob/master/text/0006-static...) mentions a few! • Initializing Flux stores in componentWillMount. It's often unclear whether this is an actual problem or just a potential one (eg if the store or its dependencies change in the future). Because of this uncertainty, it should be avoided. • Adding event listeners/subscriptions in componentWillMount and removing them in componentWillUnmount. This causes leaks if the initial render is interrupted (or errors) before completion. • Non-idempotent external function calls during componentWillMount, componentWillUpdate, componentWillReceiveProps, or render (eg registering callbacks that may be invoked multiple times, initializing or configuring shared controllers in such a way as to trigger invariants, etc.) Edit: For formatting
In Update on Async Rendering
>Why call it "UNSAFE_" if there isn't really anything unsafe about it After seeing thousands of React components and responding to thousands of issue reports, we know which patterns often get people in trouble. Some of these patterns indicated bad design on our part, and we want to fix those issues. We are adding safer alternatives for these use cases that don’t have those pitfalls. Importantly, we want to clearly communicate that these existing methods cause problems and these problems will become more noticeable in future versions of React that will support asynchronous rendering. I gave a talk about what “asynchronous rendering” means for React, and about exciting new long-requested features it enables.[1] I encourage you to watch it if you’re curious about our motivations. These methods are incompatible with it, hence they’re “unsafe”
Read the rest
. Since the risk of them being unsafe grows with time, we decided it’s worth adding a prefix to call them out in the product code. We’re trying to do best by our community and I’m sorry if we’re falling short of that. We set up an RFC repository[2] a few months ago so you’re welcome to give us feedback on the future changes. [1]: https://reactjs.org/blog/2018/03/01/sneak-peek-beyond-react-... [2]: https://github.com/reactjs/rfcs
In Update on Async Rendering
>I hate it when library authors blame users (consuming developers in this case) for their blunders. I’m sorry the post came across this way. We didn’t intend to blame the users. The component API was virtually unchanged for five years, and when it was originally designed, we didn’t anticipate how it would be used, so the hooks were pretty low level and matched how React worked internally. These days we have a better idea of where we want to take React (I hope that my talk[1] may inspire you even though you already formed a negative opinion). The work we're doing now is just to fix the mistakes we made in the past with a gradual migration path. >no wonder we're ending up with gobbledygook like "getSnapshotBeforeUpdate(...)." I totally see what you mean but this particular lifecycle is for a very rare use case. If you have better suggestion
Read the rest
s for naming it please let us know—we have an open RFC process and you are welcome to participate there.[2] We didn’t separate it on a whim—it is essential to have a pure lifecycle like this to implement some use cases (like autoscrolling to new data) with asynchronous rendering[1]. >I ended up populating data via componentWillMount on the back-end. Terrible solution, but hey, it's the only one React has You're right—but this solution doesn't solve async data fetching. It only works when the data is synchronously available, and per the post, in that case you can already use the constructor.[3] >This will not work on the server-side because technically components never mount when doing SSR. I think you might have missed this part of the post: >In the longer term, the canonical way to fetch data in React components will likely be based on the “suspense” API introduced at JSConf Iceland. Both simple data fetching solutions and libraries like Apollo and Relay will be able to use it under the hood. It is significantly less verbose than either of the above solutions, but will not be finalized in time for the 16.3 release. The mentioned “suspense” API is both much less verbose and actually was designed with server rendering in mind. It would let us fetch data on the server and on the client and suspend rendering until the data is ready (and show a placeholder if it takes too long). The lifecycle changes in these blog posts are exactly the kind of work we need to do to make APIs like Suspense possible. Again, I encourage you to watch my talk[1], the second half of which demonstrates this API. I hope this clarifies our position a bit, and I’m sorry if it seemed like we don’t care about our users. It took us about a month to write this blog post, and we know it still doesn’t address all use cases. We’ll take your feedback in mind next time we amend it. Thanks! [1]: https://reactjs.org/blog/2018/03/01/sneak-peek-beyond-react-... [2]: https://github.com/reactjs/rfcs/pull/33 [3]: https://reactjs.org/blog/2018/03/27/update-on-async-renderin...
In Update on Async Rendering

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.