eknkc / ssr-benchmark

Benchmarking JS web framework SSR performance
745 stars 172 forks source link

Body size of React, Vue, Nuxt doesn't reflect real-world scenarios #15

Closed XiNiHa closed 1 month ago

XiNiHa commented 1 month ago

The React/Vue/Nuxt versions of the benchmark contain no state data in the response payload. This makes those versions not hydratable since hydration requires all the server-fetched data serialized inside the document. That doesn't reflect real-world scenarios, especially considering that frameworks like Solid, SvelteKit, Remix, etc are all including those data to make the app hydratable. If we explicitly set the rule to not require hydrate-ability, wrapping the Solid app with <NoHydration> makes the duplication x1.00, also with a bit better ops/sec.

Nuxt is a bit tricky case as it can also leverage server components to make the component non-hydratable, which removes the need to have data serialized. Maybe we can have two separate versions of the benchmarks to reflect those?

eknkc commented 1 month ago

Yeah that’s my thinking as well: https://github.com/eknkc/ssr-benchmark/pull/14#issuecomment-2051732461

I think we should have the frameworks (and maybe react in there as a baseline even if it does not compare) and renderers in different tables. Solid is weird though, its base implementation already does hydration when createResource is used, maybe we should test them with sync data.

In any case I’m more insterested in framework benchmark and those should be comparable.

Mandeep0001 commented 1 month ago

Has anyone tried to sync data for compatibility?

eknkc commented 1 month ago

I've split the table into two and updated results.