Astro + Datastar
@wrux/astro-datastar is an Astro integration for Datastar v1.0.2 (vendored bundle — no CDN request), plus server helpers for answering Datastar requests from Astro endpoints and a minimal data-replace-url plugin.
Reactive signals declared in HTML attributes (data-signals, data-bind:*, data-text, data-show…) plus backend actions (@get, @post…) whose HTML responses are morphed into the page by element id. No client framework, no islands — the server renders Astro components, Datastar patches them in.
Quick start
// astro.config.mjs
import { defineConfig } from 'astro/config';
import datastar from '@wrux/astro-datastar';
export default defineConfig({
integrations: [datastar()],
});import { html, readSignals } from '@wrux/astro-datastar/server';
export const GET: APIRoute = async ({ request }) => {
const { q } = await readSignals<{ q: string }>(request);
const container = await AstroContainer.create();
return html(await container.renderToString(SearchResults, { props: { q } }));
};Where next
- Docs — installation, integration options, reading signals, server responses, validation, loading states, and writing plugins.
- Examples — live demos of signals, search, pagination, load more, filters, forms, polling, and streaming.
- Plugin examples — custom plugins (collapse, cloak, combobox) written in this app on top of the package's engine export.