The adapter initializes WASM after client mount. Use a client-only boundary when a SvelteKit route renders on the server.
Server-rendered host boundaries
The adapter host, its Grid, and WASM initialization are client-owned. Server rendering may produce surrounding layout and fallback content, but it must not instantiate a Sheetwrite component or call createGrid.
Next.js App Router: put the adapter import and component in a module whose first directive is "use client". Import @sheetwrite/react/styles.css once from the root layout. The production fixture builds a static Next route, hydrates it in Chromium, then proves ready, edit, input reset, and unmount using the adapter's zero-argument initializer.
Nuxt: render @sheetwrite/vue from a .client.vue component or inside Nuxt's <ClientOnly> boundary, and load @sheetwrite/vue/styles.css through the app-level css configuration. Nuxt is not currently in the release runtime matrix, so this boundary is required and server-side component execution is not claimed as supported.
SvelteKit: make the containing route client-rendered with export const ssr = false, or create the adapter only from onMount when the rest of the route must stay server-rendered. Import @sheetwrite/svelte/styles.css from the client-owned component or app stylesheet. SvelteKit is not currently in the release runtime matrix; direct SSR of the adapter is not claimed as supported.
Runtime initialization
Zero-argument initSheetwrite() is canonical for the imperative package. It is re-entrant: concurrent calls share one initialization, retries work after failure, and repeats after success are no-ops. Framework adapters call the same initializer on mount.
Pass a source only for unsupported bundlers, public-asset policies, or controlled delivery:
webpack and Next.js need no IgnorePlugin; package export conditions keep Node filesystem code out of browser graphs.
Full formula engine
By default, @sheetwrite/core uses @sheetwrite/wasm. This engine has the standard function set and the smallest download. Install @sheetwrite/formulas when the app needs the analysis families: distributions and statistics, regression, finance, dates, text and regex, database, matrices, reshaping, LAMBDA helpers, and GROUPBY/PIVOTBY. It uses the same engine code, with more functions and a larger download. The analysis formulas guide shows each family with examples. Choose an engine by its functions and download size.
An app uses one engine. After initialization starts, the engine cannot change. A call that selects a different engine rejects.
Later calls to initSheetwrite() without an engine keep the selected engine. Framework adapters make this call when they mount.
The default engine returns #NAME? for the analysis functions, and formula assist does not suggest them. An import of @sheetwrite/formulas does not select the engine.
React accepts fallback; Vue and Svelte use fallback content or slots. Initialization failures reach onInitializationError or Vue's initialization-error. A changed explicit source or remount can retry after failure.
Optional feature assets
Worker rendering and XLSX stay explicit. Import the Worker entry from @sheetwrite/core/worker. XLSX requires @sheetwrite/xlsx plus import "@sheetwrite/xlsx/register" before toolbar or programmatic export.