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

Comments

Projects
None yet
@sebmarkbage
Member

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

This comment has been minimized.

Show comment
Hide comment
@timdorr

timdorr Mar 2, 2016

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

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

This comment has been minimized.

Show comment
Hide comment
@jimfb

jimfb Mar 2, 2016

Contributor

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

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@chicoxyzzy

chicoxyzzy Mar 2, 2016

Contributor

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

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@jquense

jquense Mar 3, 2016

Collaborator

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

Collaborator

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

This comment has been minimized.

Show comment
Hide comment
@jimfb

jimfb Mar 3, 2016

Contributor

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

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@iamdustan

iamdustan Mar 4, 2016

Contributor

👏 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?

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@milesj

milesj Mar 4, 2016

Contributor

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!

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@probablyup

probablyup Mar 4, 2016

Contributor

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

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

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@haohcraft

haohcraft 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.

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

This comment has been minimized.

Show comment
Hide comment
@gaearon

gaearon Mar 18, 2016

Member

@haohcraft

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

Member

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

This comment has been minimized.

Show comment
Hide comment
@haohcraft

haohcraft commented Mar 18, 2016

@gaearon NEAT!!!Thanks

@gaearon

This comment has been minimized.

Show comment
Hide comment
@gaearon

gaearon May 5, 2016

Member

Some initial work started here: #6690

Member

gaearon commented May 5, 2016

Some initial work started here: #6690

@gaearon

This comment has been minimized.

Show comment
Hide comment
@gaearon

gaearon Oct 31, 2016

Member

Related:

Member

gaearon commented Oct 31, 2016

Related:

@rattrayalex

This comment has been minimized.

Show comment
Hide comment
@rattrayalex

rattrayalex 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

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 referenced this issue Jan 21, 2017

Closed

Webworkers #3092

@gaearon

This comment has been minimized.

Show comment
Hide comment
@gaearon

gaearon Jul 26, 2017

Member

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.

Member

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.

@gaearon gaearon closed this Jul 26, 2017

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