Guides
SSR (Next.js / Nuxt / Angular Universal)
All wrappers are SSR-safe. Here's what each framework needs at the integration point.
SSR (Next.js / Nuxt / Angular Universal)
All wrappers are SSR-safe:
- Custom-element registration (
registerAtelierEditor()) runs only in the browser. - Angular additionally guards with
isPlatformBrowser. - The PDF engine (
html2pdf.js) is only imported in the browser via a dynamicimport(). - Vue guards
registerAtelierEditor()withtypeof window !== 'undefined'.
Next.js (App Router or Pages Router)
Mark any file rendering <AtelierEditor> with 'use client' at the top:
'use client';
import { AtelierEditor } from '@innosoft/atelier-editor-react';For a fully SSR-free mount (recommended for anything rendered above the fold), wrap the import
with next/dynamic and { ssr: false } instead of importing directly — this avoids any
server-side reference to the custom element entirely.
import dynamic from 'next/dynamic';
const AtelierEditor = dynamic(
() => import('@innosoft/atelier-editor-react').then(mod => mod.AtelierEditor),
{ ssr: false }
);Nuxt
The component is SSR-safe without <ClientOnly>, but wrapping it eliminates all hydration
mismatch risk:
<ClientOnly>
<AtelierEditor v-model="content" license-key="..." />
</ClientOnly>Angular Universal
The Angular wrapper uses isPlatformBrowser internally. No additional setup is required. The
editor renders nothing on the server and mounts on the client automatically.
