Preact
npm install @kadal/deck-preact preact// vite.config.ts — no Preact plugin. Just keep React's off these files.import { deckPreactFiles } from "@kadal/deck-preact/build";
plugins: [react({ exclude: [...deckPreactFiles] }) /* , … */];/** @jsxImportSource preact */import { deckPreact } from "@kadal/deck-preact";
export const Chart = deckPreact(({ data }: { data: number[] }) => <svg>…</svg>);<Island load={() => import("./chart.preact.tsx").then((m) => m.Chart)} props={{ data }} />registerLazyRenderer("preact", () => import("@kadal/deck-preact").then((m) => m.preactRenderer));Why there is no plugin. Preact’s JSX compiles to the same shape as React’s with a different import source, and the JSX transform already supports naming that per file. The pragma is the entire configuration; the deck’s only job is to keep React’s plugin from claiming the file first.
update is one line. Rendering into the same container diffs against what is there, so state and
DOM survive — update is mount again.
Files are named *.preact.tsx (or .jsx) so the exclude glob can find them.