@sqwig/vue

Vue 3 component for Sqwig — the text box with spellcheck built in. Client-side dictionary spellcheck; text never leaves the browser.
Install
npm install @sqwig/vue
Latest Version:1.10.4
Vue:3
License:Custom
Last Updated:Aug 19, 2026
Links: npm
Maintainer: sqwigdev

@sqwig/vue

Vue 3 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/vue

Usage

<script setup lang="ts">
import { ref } from "vue";
import { SqwigEditor } from "@sqwig/vue";
import { createSpellChecker } from "@sqwig/core";

// Create the options object once, in setup scope — an inline :options object
// would recreate the spell checker (and its Worker) on every render.
const options = {
  spell: createSpellChecker({ assetBaseUrl: "/sqwig/" }),
  license: "free", // accepts the Sqwig Free License — sqwig.com/free-license
  placeholder: "Say something…",
  trustIndicator: { wordCount: true },
};

const sqwig = ref(); // sqwig.value?.editor is the full core Editor

function save(html: string) {
  // ...
}
</script>

<template>
  <SqwigEditor ref="sqwig" :options="options" @change="save" />
</template>

<SqwigEditor> is a thin, uncontrolled wrapper: the single :options object is passed to the core editor untouched (read once, at mount), @change / @selection-change / @spell-state forward the core events, and the template ref exposes the full core Editor as .editor (getHTML, setHTML, exec, focus, …). There is no v-model — initialHTML seeds the document, @change reports serialized HTML, and editor.setHTML() replaces content programmatically.

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 security@sqwig.com. 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 option (inside :options) 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.

Related Packages

@bloklabs/vue

Vue block editor — official Vue 3 bindings for Blok, the headless Notion-like ri...

5,341 43
@richhtmleditor/vue

Vue 3 wrapper for Rich HTML Editor.

1,763
@kodaeditor/vue2

Vue 2 wrapper for KodaEditor: a WYSIWYG rich-text editor that keeps Word and Exc...

1,118 0

Version History

Version Released Vue License
1.10.4 ^3.3.0 Custom
1.10.3 ^3.3.0 Custom
1.10.2 ^3.3.0 Custom
1.10.1 ^3.3.0 Custom
1.10.0 ^3.3.0 Custom