New Core Algorithm #6170

sebmarkbage opened this Issue Mar 2, 2016 · 14 comments


None yet

I'm just going to start this as a thread to give everyone notice of work being put into the core reconciliation algorithm.

This will need to include features like:

  • Incremental updates in chunks. Maybe even two different versions of the same tree at the same time!
  • Back and forth yielding (and prerender) to support layout. This probably also includes a new type of "context".
  • Error boundaries that catches updates.
  • Make this work with existing tooling such as dev tools, perf tools, server rendering, various renderers.

If you're working on fixing issues with life-cycles or the core reconciliation parts (like child reconciliation) then you might want to be aware that this is a moving target. There might be requests for changes unrelated to the status quo but related to this future work. It might require a lot of context and commitment to be able to contribute to these parts.

However, if what you're fixing is DOM issues, packaging, builds, diffing of props for styles, react native etc. Then it is probably unrelated to this work and you should feel free to send out PRs.

timdorr commented Mar 2, 2016

Really looking forward to how this page changes in the future 😄

jimfb commented Mar 2, 2016

@timdorr Perhaps ironically, that page is one of the few things that probably won't change. It's just the details of the implementation (specifically with regards to the flow of control) that will change; the high-level description remains the same.


First two are things I'm really missed in React. Will be happy to help with them if I can.

jquense commented Mar 3, 2016

There might be requests for changes unrelated to the status quo but related to this future work. It might require a lot of context and commitment to be able to contribute to these parts

For those of us interested fixing stuff in these areas, or are working on renderers, tooling, or other stuff that requires deep knowledge of the internals, how would we gain this context?

Can this work be done in the open, on the repo? Whether that's via RFC, public branches, live planning meetings, or just a public PR? It would be great to track, engage and contribute from the start instead of towards the end once the code is mostly baked and pushed.

cc: @iamdustan

jimfb commented Mar 3, 2016

@jquense Yep, as always, we will do our best to keep the community informed and involved. Currently it's all theoretical discussions about scheduling techniques and tradeoffs. We will certainly continue to post updates as they become available.


👏 This is an exciting turn of events!

From following along for a while it seems as thouhh GH issues and random Twitter conversation/blog posts have been the primary way of tracking current thinking. Should we expect that this will continue and context gathering will come through PR and issue comments and the like or will there be a more formal design document describing potential paths and tradeoffs as these ideas become more solidified?

milesj commented Mar 4, 2016

Just commenting on this thread to stay informed with updates. This will be a much needed feature.

Edit: @yaycmyk Didn't realize that was a thing, hah. Thanks for the heads up!

yaycmyk commented Mar 4, 2016

For others interested in staying up to date, just click the "Subscribe" button:

screen shot 2016-03-03 at 7 49 57 pm


is there any resource we can get to know details of the current algorithm's implementation? Or at least, pointing us to that part in the current code base.

gaearon commented Mar 18, 2016


I found this method really useful to understand how reconciliation works today:


@gaearon NEAT!!!Thanks

gaearon commented May 5, 2016

Some initial work started here: #6690

@gaearon gaearon added the big picture label Oct 23, 2016
gaearon commented Oct 31, 2016



Exciting to see the progress! Awesome to have a chart of tests passing.

While unofficial, this may also be helpful to interested passerby curious what Fiber is:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment