3 ms·
it's not quite impossible, there are some more "out there" server-side rendering approaches which would work: - https://github.com/airbnb/hypernova https://git
by hardwaresofton 5y ago
it's not quite impossible, there are some more "out there" server-side rendering approaches which would work:
- https://github.com/airbnb/hypernova https://github.com/airbnb/hypernova
- https://github.com/prerender/prerender https://github.com/prerender/prerender
Fans of efficiency and simplicity might recoil but if it works and is easy to setup, these far out approaches might just catch.
- chrismorgan 5y agoShoelace depends on Shadow DOM. Shadow DOM is not at this time part of the HTML serialisation. Server-side rendering is thus currently impossible.
- hardwaresofton 5y agoAh, I didn't realize this wasn't solved -- a quick search turns up: - https://github.com/WICG/webcomponents/issues/788 https://github.com/WICG/webcomponents/issues/788 - https://github.com/w3c/DOM-Parsing/issues/58 https://github.com/w3c/DOM-Parsing/issues/58 - https://github.com/w3ctag/design-reviews/issues/494 https://github.com/w3ctag/design-reviews/issues/494 - https://web.dev/declarative-shadow-dom https://web.dev/declarative-shadow-dom In pre-render they seem to have started in this direction extremely recently: https://github.com/prerender/prerender/pull/731/files https://github.com/prerender/prerender/pull/731/files I don't use prerender so I can't definitively speak to it being solved and hiccup-free, but I think that limitation is going to go away in the future.
- chrismorgan 5y agoHmm, I see that Chromium shipped their implementation a year ago now; I had missed that. Other than that, there’s been no real change in the situation in the last almost two years (since Shoelace 2.0 was released, the last time I examined the situation). And there still doesn’t look to be any real interest in actually implementing it outside of Google: Mozilla are unenthusiastic though not against it <https://mozilla.github.io/standards-positions/#declarative-shadow-dom https://mozilla.github.io/standards-positions/#declarative-s...>, and WebKit still find fault with some aspects of the design (https://lists.webkit.org/pipermail/webkit-dev/2021-February/031714.html https://lists.webkit.org/pipermail/webkit-dev/2021-February/..., https://github.com/mfreed7/declarative-shadow-dom/issues/9 https://github.com/mfreed7/declarative-shadow-dom/issues/9), though they’re content most of the earlier issues (especially performance) are ironed out. So you certainly can’t rely on scriptless server-side rendering of Shadow DOM being possible—it’ll work in Chromium only, and it’ll probably be at least another year or two before other browsers even contemplate doing anything with it. (And of course, even once Shadow DOM is serialisable, that’s a far shot from a particular frameworky thing being SSR-compatible, but I was quibbling over the Shadow DOM and impossibility aspects, so I shan’t step back on that.)
- hardwaresofton 5y agoAhh thanks for explaining this, it looks like there's definitely still some work to be done (and as usual even more work until it' something everyone's on board with). I personally know that I make the choice between client-side rendered (Vue, Svelte, Mithril, Lit, etc) and server-rendered (Nuxt, SvelteKit) these days and I purposely made the choice to use client-side rendered when I was dogfooding my own native web component project. Looks like it's still a choice that has to be made and SSR isn't quite there (everywhere) yet.