Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Core Algorithm #6170

Closed
sebmarkbage opened this issue Mar 2, 2016 · 15 comments
Closed

New Core Algorithm #6170

sebmarkbage opened this issue Mar 2, 2016 · 15 comments

Comments

@sebmarkbage
Copy link
Member

@sebmarkbage sebmarkbage commented Mar 2, 2016

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
Copy link

@timdorr timdorr commented Mar 2, 2016

Really looking forward to how this page changes in the future 😄 https://facebook.github.io/react/docs/reconciliation.html

@jimfb
Copy link
Contributor

@jimfb 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.

@chicoxyzzy
Copy link
Contributor

@chicoxyzzy chicoxyzzy commented Mar 2, 2016

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

@jquense
Copy link
Collaborator

@jquense 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
Copy link
Contributor

@jimfb 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.

@iamdustan
Copy link
Contributor

@iamdustan iamdustan commented Mar 4, 2016

👏 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
Copy link
Contributor

@milesj 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!

@probablyup
Copy link
Contributor

@probablyup probablyup 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

@haohcraft
Copy link

@haohcraft haohcraft commented Mar 18, 2016

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
Copy link
Member

@gaearon gaearon commented Mar 18, 2016

@haohcraft

I found this method really useful to understand how reconciliation works today: https://twitter.com/dan_abramov/status/699395627264962561

@haohcraft
Copy link

@haohcraft haohcraft commented Mar 18, 2016

@gaearon NEAT!!!Thanks

@gaearon
Copy link
Member

@gaearon gaearon commented May 5, 2016

Some initial work started here: #6690

@gaearon
Copy link
Member

@gaearon gaearon commented Oct 31, 2016

Related:

@rattrayalex
Copy link

@rattrayalex rattrayalex 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:
https://github.com/acdlite/react-fiber-architecture

@sompylasar sompylasar mentioned this issue Jan 21, 2017
@gaearon
Copy link
Member

@gaearon gaearon commented Jul 26, 2017

I think we did it?
React 16 Beta 1 ships with the new algorithm.

#10294

This is not the end but a beginning of a new chapter for React.

The basics of all these things are now in place (even though some are not exposed yet), and I’m excited to see how they will evolve over time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
You can’t perform that action at this time.