@sqwig/react
v1.10.4
Published
React component for Sqwig — the text box with spellcheck built in. Client-side dictionary spellcheck; text never leaves the browser.
Maintainers
Readme
@sqwig/react
React component for Sqwig — the text box with spellcheck built in.
Spellcheck runs entirely in the browser (WASM engine + dictionary served as
static files). Text stays in the page, and the component makes no calls to
Sqwig servers. See @sqwig/core
for the full feature list.
Install
npm install @sqwig/core @sqwig/reactUsage
import { useMemo, useRef } from "react";
import { SqwigEditor } from "@sqwig/react";
import { createSpellChecker, type Editor } from "@sqwig/core";
export function Compose() {
const editor = useRef<Editor>(null);
// Create once — not inline in JSX (that would spawn a Worker per render).
const spell = useMemo(() => createSpellChecker({ assetBaseUrl: "/sqwig/" }), []);
return (
<SqwigEditor
ref={editor}
placeholder="Say something…"
spell={spell}
license="free" // accepts the Sqwig Free License — sqwig.com/free-license
trustIndicator={{ wordCount: true }}
onChange={(html) => save(html)}
/>
);
}<SqwigEditor> is a thin, uncontrolled wrapper: every core
EditorOptions field is a prop (read at mount), onChange /
onSelectionChange / onSpellState forward the core events, and the ref
exposes the full core Editor (getHTML, setHTML, exec, focus, …).
StrictMode-safe.
Serve the spell assets (spell_wasm_bg.wasm, spell.worker.js, dict/
from @sqwig/core/dist) at the assetBaseUrl path — with Vite, copy them
into public/sqwig/.
Try the paid features free for 30 days
Word export, PDF export, a custom dictionary and no badge, for 30 days. Give us an email address and the key comes back by email: Start a 30-day trial
A trial is for evaluation, not commercial production. On day 31 the key expires,
the paid features lock and the editor keeps working; pass license: "free" to
return to the clean badge.
Documentation
Guides, API reference, theming (incl. dark mode): Read the documentation
Security
Found a vulnerability? Email [email protected]. Policy: Security FAQ
License
Commercial software. LICENSE.txt in this package and the
Terms of Service are the governing documents — the summary below is
for orientation and does not replace them.
The license prop is required, and all three states run the full core editor:
- omitted — the full editor, a "Powered by Sqwig · unlicensed" badge, one console note
"free"— the Free tier: one application, clean badge. Covers development, evaluation and non-commercial production; a commercial application in production requires a paid plan. Setting it accepts the Sqwig Free License- a signed key — your tier's entitlements; the badge is removed on paid tiers
Keys are verified offline — no license server, no phone-home, no usage metering, no per-developer fees. Verification is fail-open: an invalid, malformed or expired key degrades to the Free tier with the badge and a console note. Licensing does not break the editor and the runtime does not throw over it; paid plans additionally enable the features we designate as paid.
Nuances that affect what a license covers — term-bound keys, hostname
matching, free development hosts, and packaged app shells (Electron, Capacitor,
browser extensions run on the Free tier) — are set out in CHANGELOG.md and in the
license notes. Pricing: Plans and pricing
No warranty; provided "as is" to the extent permitted by law. Spellcheck is an
automated aid, and Sqwig's sanitisation is not a substitute for re-sanitising
server-side. This wrapper bundles no third-party code of its own; @sqwig/core
carries the third-party notices.
