preactjs / preact-compat

ATTENTION: The React compatibility layer for Preact has moved to the main preact repo.

Home Page:http://npm.im/preact-compat

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Will Preact stay API compatible with React 16?

drcmda opened this issue · comments

commented

We usually alias to Preact in production because of the payload savings, but now that we moved to React 16 which was officially released yesterday, preact-compat is down (for instance when returning arrays). That raises questions as to how far we can go with Fiber anyway, even if preact-compat can patch some minor things. But will it support returning arrays, numbers and strings as results, portals, and eventually async scheduling?

screen shot 2017-09-27 at 12 32 03

Hi there! All good questions. Preact-compat has to account for all of these changes, but some of them will remain in compat and not in core. Here's a list:

  • Returning Arrays from render(): yes, but this is a huge change for Preact itself. It will come, but it will take time.
  • Numbers & strings: this has always been supported in Preact.
  • Portals: I like the idea, but there are things like event bubbling redirection that might be unworkable within preact. We'll probably have to patch them into compat. On a personal note, I don't think the event propagation redirection piece of this holds enough value for Preact to adopt it and deviate from using browser events directly.
  • Async scheduling: this will absolutely be coming to Preact itself, and we'll ship a decent scheduler enabled by-default in preact-compat once it's available.

Waiting for hydrate since this is a breaking change for aliasing with Next.js

Returning Arrays from render(): yes, but this is a huge change for Preact itself. It will come, but it will take time.

Is there an issue to follow for that? #406 is closed. I don't know if it's appropriate to reopen that one or start with a new one: is there definitely agreement that it's for Preact rather than for Preact-compat?

@effulgentsia I think most people want Array returns in preact itself, but it's also quite possible doing so would necessitate a rewrite of the diff. In terms of ongoing discussion, @tkh44 was working some magic in #703.

@developit Watching this closely as Next.js is strictly packed with React 16. Is there any chance to help you out with missing API changes?

Yes! Jump on slack and we can work out what to do.

Does anyone have a rough timeline for React 16 compatibility? Particularly interested in support for the hydrate function.

Note, we added all of those in Preact X 🎉 We even ship with a rough implementation fo Suspense but that is not ready for production yet 🎉