Signal drop!
Relay (operand.online) is unreachable.
Usually, a dropped signal means an upgrade is happening. Hold on!
Sorry, no connección.
Hang in there while we get back on track
gram: docs
> ./examples/nextjs/README.md
# Next.js example
`@eigenpal/docx-editor-react` in the Next.js App Router. The editor reads
the DOM and measures layout in the browser, so it cannot run during server
rendering. The fix is one `dynamic()` import with `ssr: false`.
## Run it
This example depends on the `@eigenpal/*` workspace packages, so build them
once first. From the repo root:
```bash
bun install
bun run build:packages
bun run dev:nextjs # http://localhost:3000
Or from this directory: bun run dev.
The SSR boundary
app/page.tsx keeps the route a Server Component shell and pulls the editor
in client-only:
'use client';
import dynamic from 'next/dynamic';
const Editor = dynamic(() => import('./components/Editor').then((m) => m.Editor), {
ssr: false,
loading: () => <div>Loading editor...</div>,
});
export default function Page() {
return <Editor />;
}
app/components/Editor.tsx is a 'use client' component that renders
<DocxEditor />. Without ssr: false the build fails on window/document
access during prerender.
Files
| File | What it does |
|---|---|
app/page.tsx |
Server shell, client-only editor import |
app/components/Editor.tsx |
'use client' editor component |
app/layout.tsx |
Loads the Material Symbols font |
next.config.ts |
Monorepo file tracing + build-time flags |
Use it in your own Next.js app
npm install @eigenpal/docx-editor-react @eigenpal/docx-editor-core
Always import DocxEditor through dynamic(..., { ssr: false }), or wrap it
in a 'use client' component that only renders after mount. Load the
Material Symbols font in app/layout.tsx.
Docs: https://www.docx-editor.dev/docs/1.x/react