0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2025-01-27 22:19:04 -05:00
astro/.changeset/five-rocks-vanish.md
Matthew Phillips d495df5361
Server islands (#11305)
* Spike

* Server Islands

* Remove extra stuff

* Fix build, a little

* Fix build

* astro metadata can be undefined

* Add server:defer type

* Add support for the build to Server Islands (#11372)

* Add support for the build to Server Islands

* Use command instead

* editor tips

* Add comment about defaultRoutes

* Use renderChunk instead of generateBundle

* Server islands tests (#11405)

* Add support for the build to Server Islands

* Use command instead

* editor tips

* Add comment about defaultRoutes

* Use renderChunk instead of generateBundle

* Adds tests for server islands

* linting

* Pass slots to server islands (#11431)

* Require the experimental flag to use server islands (#11432)

* Require the experimental flag to use server islands

* Add flag to tests/examples

* Protect SSR against SI not being enabled

* Update the docs in the API ref

* Upgrade to compiler 2.9.0

* Update packages/astro/src/@types/astro.ts

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update packages/astro/src/@types/astro.ts

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update packages/astro/src/@types/astro.ts

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update packages/astro/src/@types/astro.ts

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update packages/astro/src/@types/astro.ts

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update packages/astro/src/@types/astro.ts

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update packages/astro/src/@types/astro.ts

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Fix lockfile

* Add a changeset

* Update .changeset/five-rocks-vanish.md

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update .changeset/five-rocks-vanish.md

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update .changeset/five-rocks-vanish.md

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update .changeset/five-rocks-vanish.md

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* Update lockfile

* Update .changeset/five-rocks-vanish.md

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

---------

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
2024-07-17 13:37:36 -04:00

1.3 KiB

astro
minor

Experimental Server Islands

Server Islands allow you to specify components that should run on the server, allowing the rest of the page to be more aggressively cached, or even generated statically. Turn any .astro component into a server island by adding the server:defer directive and optionally, fallback placeholder content:

---
import Avatar from '../components/Avatar.astro';
import GenericUser from '../components/GenericUser.astro';
---

<header>
  <h1>Page Title</h1>
  <div class="header-right">
    <Avatar server:defer>
      <GenericUser slot="fallback" />
    </Avatar>
  </div>
</header>

The server:defer directive can be used on any Astro component in a project using hybrid or server mode with an adapter. There are no special APIs needed inside of the island.

Enable server islands by adding the experimental flag to your Astro config with an appropriate output mode and adatper:

import { defineConfig } from 'astro/config';
import netlify from '@astrojs/netlify';

export default defineConfig({
  output: 'hybrid',
  adapter: netlify(),
  experimental {
    serverIslands: true,
  },
});

For more information, see the server islands documentation.