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 is the same engine with more functions and the same API, and a larger download. The analysis formulas guide shows each family with examples, and the performance page compares both engines.
Terminal window
npminstall@sheetwrite/core@sheetwrite/formulas
Select the engine one time, before the app creates a grid or a store, and before a framework adapter mounts:
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.