GitHub

@awesome.me/astro-lit 🚀🔥

This Astro integration enables server-side rendering and client-side hydration for your Lit custom elements.

Why?

https://docs.astro.build/en/guides/integrations-guide/lit/ - The official Lit plugin by the Astro team was deprecated. It needed to be revived to work with new Astro versions and new SSR rendering from Lit.

https://www.npmjs.com/package/@semantic-ui/astro-lit is a fork I discovered after making this fork, but I noticed it had a few problems around attribute serialization, and head injection felt error prone and I constantly got components rendering multiple times.

Documentation

Installation

  • npm

npm install @awesome.me/astro-lit

pnpm

pnpm add @awesome.me/astro-lit

yarn

yarn add @awesome.me/astro-lit

Configuration

// astro.config.mjs
import { defineConfig } from 'astro/config';
import lit from '@awesome.me/astro-lit';
// https://astro.build/config
export default defineConfig({
  // ...
  integrations: [lit()],
});

Using components

Example using Web Awesome:

npm install @awesome.me/webawesome
---
// server imports.
import "@awesome.me/webawesome/dist/components/page/page.js"
import "@awesome.me/webawesome/dist/components/button/button.js"
---
<body>
  <wa-page>
    <wa-button>Click me!</wa-button>
  </wa-page>
  <script>
    // **!! VERY IMPORTANT !!**
    // These 2 imports must come first before importing any components on the client. If not, you will end up with things rendering more than once and things will look very, very broken.
    import "@awesome.me/astro-lit/dsd-polyfill.js"
    import "@awesome.me/astro-lit/hydration-support.js"
    // client imports
    import "@awesome.me/webawesome/dist/components/page/page.js"
    import "@awesome.me/webawesome/dist/components/button/button.js"
  </script>
</body>

License

MIT

  • Copyright (c) 2023–2026 - Astro
  • Copyright (c) 2026-present - Font Awesome

Read the original on github.com ↗