toeverything/AFFiNE · error · Error

Mobile preview handler "${String(name)}" is unavailable.

Error message

Mobile preview handler "${String(name)}" is unavailable.

What it means

getRequiredNativeHandler throws when the native (mobile) runtime provides no preview handlers or lacks the requested handler, meaning the mobile bridge cannot render this preview type (mermaid/typst).

Source

Thrown at packages/frontend/core/src/modules/code-block-preview-renderer/platform-backend.mobile.ts:9

import { getNativePreviewHandlers } from './runtime-config';
import type { PreviewRenderRequestMap, PreviewRenderResultMap } from './types';

function getRequiredNativeHandler<
  Name extends keyof NonNullable<ReturnType<typeof getNativePreviewHandlers>>,
>(name: Name) {
  const handler = getNativePreviewHandlers()?.[name];
  if (!handler) {
    throw new Error(`Mobile preview handler "${String(name)}" is unavailable.`);
  }
  return handler;
}

export async function renderMermaidSvgBackend(
  request: PreviewRenderRequestMap['mermaid']
): Promise<PreviewRenderResultMap['mermaid']> {
  return getRequiredNativeHandler('renderMermaidSvg')(request);
}

export async function renderTypstSvgBackend(
  request: PreviewRenderRequestMap['typst']
): Promise<PreviewRenderResultMap['typst']> {
  return getRequiredNativeHandler('renderTypstSvg')(request);
}

View on GitHub (pinned to b4c8548c09)

Solutions

  1. Register the mobile preview handler before requesting a preview.
  2. Use a supported preview type on mobile.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown when a mobile code block preview render (mermaid or typst) is requested but the native preview handler returned by getNativePreviewHandlers is absent.

Common situations: Occurs on the mobile app when native preview capabilities are not registered or unavailable; verify the native runtime config provides the preview handlers before rendering code block previews.


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