3 ms·
We did experiment with some pretty aggressive compilation approaches a few years ago (see Prepack). Ironically our conclusion from this (which informed Server C
by danabramov 6y ago
We did experiment with some pretty aggressive compilation approaches a few years ago (see Prepack). Ironically our conclusion from this (which informed Server Components design) is that you don't want this to be done automatically. Because then you don't have precise control and confidence over what gets shipped to the client and what gets shipped to the server. One compiler bailout, and the difference in the bundle is huge. So you'd want to add a way to enforce things, and now we're back to manual annotations.
(We did have a prototype that does this, though.)
- eyelidlessness 6y agoI have looked at Prepack! I was wondering if it would be revisited. I certainly understand that lack of confidence, though I think I'd worried more about the false negative: something should be available to the client, but for whatever reason the compiler couldn't identify it. That said, I think tooling could go a long way to address the false positive. For example, in Next.js dev mode, there's an indicator that says whether a page can be statically rendered. If there were tools that said "we've automatically marked this component for the client bundle" and allowed the dev to manually opt out if they're sure the component shouldn't be sent to the client, it's still nice to have for the non-pathological case. Anyway, thanks for filling in more detail!
- danabramov 6y agoFor what it's worth, it is always possible to build an automatic approach on top of a manual one. Maybe somebody motivated will do it. :-)
- eyelidlessness 6y agoI’ve seriously considered it! It seems like it would probably be a pretty big endeavor, but it would certainly be cool to have.