Atelier Logo

Atelier

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 dynamic import().
  • Vue guards registerAtelierEditor() with typeof 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.

On this page