The require-ci ruleset requires one check context named "validate" but 13 workflows all emit a job named validate. That makes the required-check match ambiguous: any one of the 13 checks can satisfy the rule, so PRs can merge while most workflows are still failing or not even running. Add a unique workflow-prefixed name: to every validate job so each one becomes its own required context. Harden the five aggregate validators to fail on any non-success result (cancelled and skipped included, not just failure). Add merge_group to visual-test.yml so its validate context can be required safely. Companion ruleset update lives in the PR description. |
||
|---|---|---|
| .github | ||
| .vscode | ||
| apps | ||
| brand/assets/logos | ||
| demos | ||
| devtools | ||
| evals | ||
| examples | ||
| packages | ||
| patches | ||
| scripts | ||
| shared | ||
| tests | ||
| .ackrc | ||
| .dockerignore | ||
| .gitignore | ||
| .gitleaks.toml | ||
| .nvmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| AGENTS.md | ||
| brand.md | ||
| cicd.md | ||
| CLAUDE.md | ||
| CODE_OF_CONDUCT.md | ||
| codecov.yml | ||
| commitlint.config.js | ||
| context7.json | ||
| CONTRIBUTING.md | ||
| eslint.config.docs.mjs | ||
| eslint.config.mjs | ||
| lefthook.yml | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| renovate.json5 | ||
| SECURITY.md | ||
| TESTING.md | ||
| THIRD_PARTY_LICENSES.md | ||
| tsconfig.base.json | ||
| tsconfig.references.json | ||
| vite.sourceResolve.ts | ||
| vitest.baseConfig.ts | ||
| vitest.config.mjs | ||
SuperDoc
The document engine for DOCX files.
Renders, edits, and automates .docx files in the browser, headless on the server, and within AI agent workflows.
Self-hosted. Open source. Works with React, Vue, and vanilla JS.
Quick start
npm install superdoc
React
npm install @superdoc-dev/react
import { SuperDocEditor } from '@superdoc-dev/react';
import '@superdoc-dev/react/style.css';
function App() {
return (
<SuperDocEditor
document={file}
documentMode="editing"
onReady={() => console.log('Ready!')}
/>
);
}
See the @superdoc-dev/react README for full React documentation.
Vanilla JavaScript
import 'superdoc/style.css';
import { SuperDoc } from 'superdoc';
const superdoc = new SuperDoc({
selector: '#superdoc',
toolbar: '#superdoc-toolbar',
document: '/sample.docx',
documentMode: 'editing',
});
Or use the CDN:
<link rel="stylesheet" href="https://unpkg.com/superdoc/dist/style.css" />
<script type="module" src="https://unpkg.com/superdoc/dist/superdoc.umd.js"></script>
For all available options and events, see the documentation or SuperDoc.js.
Using an AI coding agent?
Set up your project for AI agents and configure the MCP server:
npx @superdoc-dev/create # generates AGENTS.md for your framework
claude mcp add superdoc -- npx @superdoc-dev/mcp # connect agent to DOCX files
Features
- Real DOCX, not rich text — Built on OOXML. Real pagination, section breaks, headers/footers. Not a contenteditable wrapper with export bolted on.
- Self-hosted — Runs entirely in the browser. Your documents never leave your servers.
- Any framework — React, Vue, Angular, Svelte, vanilla JS. One component, zero lock-in.
- Real-time collaboration — Yjs-based CRDT. Multiplayer editing with comments, tracked changes, and automatic conflict resolution.
- Agentic tooling — Runs headless in Node.js. Bring your own LLM for document automation, redlining, and template workflows.
- Dual licensed — AGPLv3 for community use. Commercial license for proprietary deployments.
Examples
Starter projects to get you running quickly:
| Example | |
|---|---|
| React | Vue |
| Angular | Next.js |
| Vanilla JS | CDN |
| Comments | Track changes |
| Custom toolbar | AI redlining |
| Headless AI redlining |
Documentation
docs.superdoc.dev — installation, integration guides, collaboration setup, API reference, and more.
Roadmap
See the SuperDoc roadmap for what's coming next. DOCX import/export fidelity is always a top priority.
Contributing
Check the issue tracker for open issues, or read the Contributing Guide to get started. Bug reports with reproduction .docx files are especially valuable.
Community
License
- Open source: GNU Affero General Public License v3.0
- Commercial: Enterprise License
Acknowledgments
Built on ProseMirror, Yjs, JSZip, and Vite.
Community Contributors
Special thanks to these community members who have contributed code to SuperDoc:
Want to see your avatar here? Check the Contributing Guide to get started.
Created and maintained by Harbour and the SuperDoc community

























