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

Streaming renderer: factor chunking out of main entrypoint and rebase on #241 #267

Merged
merged 24 commits into from
Feb 2, 2023

Conversation

developit
Copy link
Member

@developit developit commented Nov 13, 2022

This reimplements #259 atop #241, so that we can merge both and publish it as a single major.

With these changes, the streaming implementation imposes almost no overhead on non-streaming rendering. Here's a comparison against #241 (baseline is #241, current is this PR):

Screen Shot 2022-11-13 at 10 28 44 PM

@changeset-bot
Copy link

changeset-bot bot commented Nov 13, 2022

🦋 Changeset detected

Latest commit: 7cdcb90

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
preact-render-to-string Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@argyleink
Copy link

Want!

@osdiab
Copy link

osdiab commented Jan 18, 2023

What is the status of this PR? Looking forward to streaming SSR so that frameworks like Next and Remix could work with preact.

@developit
Copy link
Member Author

developit commented Jan 27, 2023

@JoviDeCroock @marvinhagemeister should we merge this?

@developit developit merged commit 96f9f4b into streaming-render Feb 2, 2023
@developit developit deleted the streaming-renderer-perf branch February 2, 2023 15:57
JoviDeCroock added a commit that referenced this pull request May 6, 2024
…296)

* Disable eslint lines-around-comment rule

* Update test scripts to allow watch usage

* Add streaming renderer

* Switch to element nodes as markers instead

* Switch away from global ids

* Remove subtree option

* feat: use comments instead of element as marker
feat: use custom element for hydration
feat: add onError to renderToChunks
feat: add renderToPipeableStream

* chore: use NodeIterator to locate comments

This reduces code and *should* also be more performant than recursive JS iteration.

See: https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator

* chore: remove redundancy and minify code

* more minification

* even more minification

* Move files to new test dir structure

* Fix linting error

* fix ts types

* fix Web Streams tests on Node <18

* Streaming renderer: factor chunking out of main entrypoint and rebase on #241 (#267)

* use index.module.js when benchmarking, since its the output of `npm run transpile`

* fix bench:v8 output path

* update microbundle and turn off function inlining

* fix JSX entrypoint and tests

* fix type defintion to reflect removed exports and options

* fix root copy of jsx types

* optimize renderToString performance using switch and short-circuiting

* Create bright-ligers-jam.md

* Update bright-ligers-jam.md

* Update bright-ligers-jam.md

* Backport changes from #237 (child/parent properties, simplified Fragment handling)

* ci: update github actions (#266)

* ci: update actions/checkout to v3

* ci: update actions/cache to v3

* merge master

* lockfile version

* update benchmarking reference implmementation to 5.2.6 (6a0bec2)

* fix tests

* fix before diff hook being called on invalid vnodes

* move non-exported files into a lib directory

* update pretty implementation and move typedefs into a d.ts

* Move chunked implementation out of the default entrypoint

* update tests to reflect chunking being moved out of default entrypoint

* fix d8 bench script

---------

Co-authored-by: Abdul Rauf <abdulraufmujahid@gmail.com>

* fix d8 bench path

* try new way of getting mask as we are not setting it anymore

* stop interfering with the real useId

* show bug

* partial fix

* continuously fork promises

* fix tests

* fixes

* update lockfiles

* Create twelve-candles-walk.md

* add build command

* fix rebase issues

* address comments

* bump deps

---------

Co-authored-by: Marvin Hagemeister <hello@marvinh.dev>
Co-authored-by: Jacob Ebey <jacob.ebey@live.com>
Co-authored-by: Jason Miller <jason@developit.ca>
Co-authored-by: Jason Miller <developit@users.noreply.github.com>
Co-authored-by: Abdul Rauf <abdulraufmujahid@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants