Server-side Rendering
Server-side Rendering, aka SSR, can be enabled in Astro. When you enable SSR you can:
- Implement sessions for login state in your app.
- Render data from an API called dynamically with
fetch
. - Deploy your site to a host using an adapter.
Enabling SSR in Your Project
Section titled Enabling SSR in Your ProjectTo get started, enable SSR features in development mode with the output: server
configuration option:
Adding an Adapter
Section titled Adding an AdapterWhen it’s time to deploy an SSR project, you also need to add an adapter. This is because SSR requires a server runtime: the environment that runs your server-side code. Each adapter allows Astro to output a script that runs your project on a specific runtime.
The following adapters are available today with more to come in the future:
astro add
Install
Section titled astro add InstallYou can add any of the official adapters with the following astro add
command. This will install the adapter and make the appropriate changes to your astro.config.mjs
file in one step. For example, to install the Netlify adapter, run:
Manual Install
Section titled Manual InstallYou can also add an adapter manually by installing the package and updating astro.config.mjs
yourself. (See the links above for adapter-specific instructions to complete the following two steps to enable SSR.) Using my-adapter
as an example placeholder, the instructions will look something like:
-
Install the adapter to your project dependencies using your preferred package manager:
-
Add the adapter to your
astro.config.mjs
file’s import and default export:
Features
Section titled FeaturesAstro will remain a static-site generator by default. But once you enable a server-side rendering adapter, every route in your pages directory becomes a server-rendered route and a few new features become available to you.
Astro.request.headers
Section titled Astro.request.headersThe headers for the request are available on Astro.request.headers
. It is a Headers object, a Map-like object where you can retrieve headers such as the cookie.
Astro.redirect
Section titled Astro.redirectOn the Astro
global, this method allows you to redirect to another page. You might do this after checking if the user is logged in by getting their session from a cookie.
Response
Section titled ResponseYou can also return a Response from any page. You might do this to return a 404 on a dynamic page after looking up an id in the database.
Server Endpoints
Section titled Server EndpointsA server endpoint, also known as an API route, is a .js
or .ts
file within the src/pages
folder that takes a Request and returns a Response. A powerful feature of SSR, API routes are able to securely execute code on the server side. To learn more, see our Endpoints Guide.