toeverything/AFFiNE · error · Error

Preview renderer returned invalid SVG.

Error message

Preview renderer returned invalid SVG.

What it means

renderMermaidSvg throws when sanitizing the backend-rendered Mermaid SVG yields an empty string, meaning the sanitizer rejected the markup and no safe preview SVG can be returned to the code-block renderer.

Source

Thrown at packages/frontend/core/src/modules/code-block-preview-renderer/bridge.ts:26

} from '@affine/core/modules/mermaid/renderer';
import type {
  TypstRenderRequest,
  TypstRenderResult,
} from '@affine/core/modules/typst/renderer';
import { sanitizeSvg as sanitizeSvgDocument } from '@blocksuite/affine-shared/utils';

export function sanitizeSvg(svg: string): string {
  return sanitizeSvgDocument(svg);
}

export async function renderMermaidSvg(
  request: MermaidRenderRequest
): Promise<MermaidRenderResult> {
  const rendered = await renderMermaidSvgBackend(request);

  const sanitizedSvg = sanitizeSvg(rendered.svg);
  if (!sanitizedSvg) {
    throw new Error('Preview renderer returned invalid SVG.');
  }
  return { svg: sanitizedSvg };
}

export async function renderTypstSvg(
  request: TypstRenderRequest
): Promise<TypstRenderResult> {
  const rendered = await renderTypstSvgBackend(request);

  const sanitizedSvg = sanitizeSvgDocument(rendered.svg);
  if (!sanitizedSvg) {
    throw new Error('Preview renderer returned invalid SVG.');
  }
  return { svg: sanitizedSvg };
}

View on GitHub (pinned to b4c8548c09)

Solutions

  1. Check the preview renderer output; ensure it returns well-formed SVG.
  2. Update the renderer or the preview handler to produce valid markup.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown in renderMermaidSvg when the backend-rendered SVG is empty after sanitizeSvg processing, so no valid SVG preview can be returned.

Common situations: Occurs when a Mermaid (or code block) preview fails to render or the SVG is stripped by sanitization. Check the diagram syntax and retry rendering.


AI-assisted analysis of toeverything/AFFiNE@b4c8548c09 (2026-08-18). Data as JSON: /api/errors/42f8e31392de65e6. Report an issue: GitHub.