SSR and SSG
How each frontend framework supports server-side rendering and static site generation, whether natively, via a meta-framework, or not at all.
React
React itself supports server rendering (renderToString/renderToPipeableStream) but has no routing or build story attached. Full SSR/SSG applications in practice require a meta-framework such as Next.js.
Vue
Vue provides a server-renderer API for SSR, but production SSR/SSG apps typically use Nuxt to get routing, data fetching, and build tooling layered around that core capability.
Svelte
Svelte components can render to HTML strings on their own, but a complete SSR/SSG solution — including routing and per-route rendering modes — is delivered through the SvelteKit meta-framework.
Angular
Angular Universal provides official server-side rendering support, integrated into the Angular CLI, enabling both SSR and prerendering (SSG) of Angular applications.
SolidJS
The core library supports server-rendering primitives, but full SSR/SSG — including streaming and hydration — is provided by the SolidStart meta-framework.
Qwik
SSR/SSG is central to Qwik’s design via Qwik City, which can prerender to static HTML or serve per-request, leveraging resumability to skip the hydration cost entirely on the client.
Preact
Preact supports server-side rendering via preact-render-to-string; full SSG/SSR setups typically rely on integrations or third-party meta-frameworks rather than an official one.
Lit
Lit has an @lit-labs/ssr package for rendering custom elements to HTML on the server, generally used within larger frameworks or static-site tools rather than as a standalone SSR solution.
Alpine.js
Not applicable in the traditional sense — Alpine only adds interactivity to server-rendered HTML produced by any backend, so SSR/SSG remains entirely the host page’s or backend’s responsibility.
Ember
Ember supports server-side rendering through FastBoot, an official add-on that renders applications on the server for faster first paint and better SEO.