- Pre-rendered static markup
- Pre-rendered app routes that get hydrated on the client (optionally switching to client-side rendering)
- Fully client-side rendered apps
In the beginning #websites were static files.
"La #SSR dovrebbe essere sottoposta al Controllo finanze"
Un'iniziativa in tal senso di Marco Romano (Centro) avrebbe trovato ampio consenso alle Camere federali
– The debate client-side vs server side is almost as old as the web itself. There was a decade where almost everything was rendered on the server because clients didn't have the power to render all that stuff. Then there was the decade where almost everything was rendered on the client because that was "cooler". Now, everyone wants to do #SSR. Truth is, it isn't either or. Both have their pros and cons.
We like sharing links here.
But many of the links we've started sharing now include additional context courtesy of our sibling project, @jaredwhite's That HTML Blog.
So y'all might like to check that out and add the RSS Feed / Newsletter Digest to your reader(s) of choice.
And if YOU have something to share, email links(at)thathtml.blog with all the deets!
#Angular v16.2 just dropped this week with lots of cool new features.
On the tooling side we've got:
✅ Performance improvements for our experimental #esbuild + #vite stack.
✅ A new, experimental "application builder" which supports #CSR, #SSR, and #SSG all in one with an improved devserver and faster build times.
✅ Automatic injection of preload hints for #JS and #CSS used in the initial load.
There's even more beyond tooling and lots more cool stuff coming. Very excited about what's in the pipeline for v17!
More complete changelogs 👇
#FFBE #GvG #LR #RPG #SR #SSR #UR #Vlog #voiceactress #アーク #アイドルマスター #アイマス #アリサ #ガチャ #ギルド #ごちうさ #ご注文はうさぎですか？ #ソロ #タクト #とっと #はやかし #マルチ #メグ #ラスクラ #ラストクラウディア #りえしょん #ロマサガ #ロマンシングサガ #声優 #女性声優 #早貸 #村川梨衣 #松田亜利沙 #純白の聖乙女ティリアCV村川梨衣天誘のグローリーロードSSR登場
If you’re a weekend hacker or seeking to stand up a no-cost, low-maintenance, low-ops solution that requires an #SSR component, then #Nuxt with #Firebase is a great #serverless solution as the fantastic CLI tooling and emulator for Firebase combined with the ease of deployment and operations — while still offering tons of room to grow should a project take off— makes it the best choice for moving fast.
you know, it’s funny. For all the web pages that get created in PHP, a language with native templatng, we haven’t really created good strategies for making it easy to work with markup.
Where’s the discussion of strategies of creating blocks of HTML/XML? of wrapping heredocs / nowdocs in typehinted functions? of making that markup accessible?
I don't know how to call "assembling parts of HTML into a full page" at edge or service-worker; it's not really "rendering" to me, so not ESR/SWSR.
From the above, this mean you can have:
• SPA+SSR: Turbolinks
• SPA+CSR: most React/Vue/Angular apps
• SPA+SSR+CSR: NextJS et al.
• MPA+SSR: most "web sites"
• MPA+SSR+PE (progressive enhancement)
• MPA+CSR: silly but I've seen it (HTML page is empty, possibly with data as JSON to be rendered client-side)
Can we please agree on some terms?
• SPA: load one HTML then do everything in the same page (== client-side navigation), that page can be a static empty shell, be SSR'd for the given URL
• MPA: load different HTML pages when navigating
→ a given "app" can use a mix of SPA and MPA
• CSR: apply some "templating" to "data" on the client (RSC's "vdom as JSON" rendering is CSR)
• SSR/ESR: the same, on the server (origin or edge), so HTML goes over the wire to the browser
And this intuitively output:
<meta charset="utf8" >
* `<!DOCTYPE html>` is gone.
* `<html>` turned into `html` and lost its close tag.
* `<body>` got moved inside `<head>`.
Apparently you can't output a doctype at all (https://github.com/preactjs/preact-render-to-string/issues/201) and the `<meta>` tag is not self-closing in #JSX.
I'm willing to accept those constraints, but this is an utter failure of DX IMHO. If my template is wrong, TELL ME! Don't just generate what's effectively garbage for seemingly no reason. There's no obviously logical path from "bad output" to "the mistake in my code". Error messages, please!
If #HTML forms supported PUT and DELETE verbs I'm pretty sure I'd never use JS again. All the talk about client side vs #SSR means nothing while HTML is intentionally crippled by browser devs so you can waste your time recreating basic functionality in JS.
Das #ZDF, immer in wenig hinterher.
ZDF will Alternative zu Twitter und Co. entwickeln lassen
Könnten ja mal det.social fragen, wie sowas geht.
@kulykov The magic of #WebComponents is that you can embed a web component written with one framework into a main page or another web component written in a different component. #Lit #SSR requires the whole page be written in just Lit, right? That means it's not SSR'ing web components, just SSR'ing a single framework.
Still magic, but not really web components.
Are you using client only components in #Remix? You should be using a Suspense boundary to manage this instead of any isHydrated check hacks you might have in place right now
For SSR today we are in the age of meta frameworks. They are built from the ground up for SSR, hence they can handle the paradigm alot better.
Although #nextjs has taken the #SSR mantel for react, the direction they are going in is not in spirit of react.
I would rather prefer a newer framework or library now.
@tbroyer There's definitely a trade-off, and you're right about those limitations.
Although I argue this approach has the issues of an #SPA _router_ specifically, which is a much smaller subset of issues than SPA's typically experience. For example this router supports:
* Full #SSR.
* No forced client-side hydration.
* No duplicated server/client build process.
* No blocking #JS.
* No required web framework.
* `<noscript />` compatible.
* No required #Node server.
* #HTML streaming (with some caveats).
There's a lot of features here which SPA's have historically done very poorly. This is why I put this router in a slightly different camp than those architectures.
After having checked #nextjs 13 with app/ directory I found that it indeed works perfectly neat...
BUT: It doesn't play well with libraries yet. So if you plan to use a specific library of your choice I recommend you stay with the well-working `pages/` directory structure.
Here is a sample issue: https://github.com/mantinedev/mantine/issues/2815
「 Attempting to use a string templating system to generate a language with formally defined syntax is fundamentally hazardous as a string template language doesn't know how to represent a template variable in the target language, and, due to the frequent need for escaping, a naive representation may be wrong 」
You are right, it's a short URL for the same thing. So I tried a long-form URL and it still doesn't verify.
Now that I look into source code of the page (pure HTML), it definitely has NO profile description. That's a shame. I though #PeerTube had considered doing #SSR or #SSG of content strategically important for #SearchEngineOptimization, but my expectation once again met the cold ground.
Probably not much practical use, but could be useful for interactive #SSR demos when you're too cheap to pay for a real server. 🙋
#SEO requires good adherence to proper DOM hierarchy, document.title and JSON-LD the latter of which when server-side rendered make it easier for crawlers to read the page. Thanks to the lit-labs/ssr package #SSR is a breeze. Implement a small bit of #node express middleware and you’ve got a #SSR page. I exported declarative Shadow DOM templates for each component that get rendered by #lit even though they are just vanilla #JS, template strings!
This is because custom elements made #accessibility easy to implement.
Still gotta figure out how to minify inline CSS and HTML with vite, but almost there with a 97% performance score.
@nosherwan For me the choice of framework would depend what I'm trying to build. #AstroJS is awesome for static sites and they're branching into #SSR, and I'm using it for our company's marketing page, but I wouldn't use it for a highly-dynamic admin panel, for instance. I'd love to learn more about #SolidJS sometime, and #quik has some really cool concepts too, like server resume rather than rehydration.