Markstream Nuxt
Overview
Integrate markstream-vue into Nuxt while keeping hydration, browser-only peers, workers, and streaming behavior on the correct side of SSR boundaries.
When to Use
Use for Nuxt 3 or 4 pages, components, or plugins. Use markstream-vue for non-Nuxt Vue applications and markstream-install when the framework is not yet known.
Workflow
Before changing dependencies or source files, inspect the existing package manager and project conventions, preview the intended edits, and obtain explicit user approval.
- Confirm Nuxt 3 or 4 and install only requested peers.
- Put browser-only peers behind
<ClientOnly>,.clientplugins, dynamic imports, or guarded initialization. - Import
markstream-vue/index.cssexplicitly from a client-safe shell or plugin. - Start with
content:mode="chat"for AI streams,docsfor rich documents, andminimalfor lightweight non-chat surfaces. - Keep smooth streaming in
automode for SSR; do not forcetrueon first-screen server content. - When a chat row completes, keep its mode stable, set
final, disable pacing/cursor, and enable fade only if desired. - Keep HTML safe and Mermaid strict. Put optional code, diagram, and worker runtimes behind client boundaries.
- Validate build/typecheck, hydration, and one incremental client update.
Example
<script setup lang="ts">
import MarkdownRender from 'markstream-vue'
import 'markstream-vue/index.css'
defineProps<{ markdown: string; done: boolean }>()
</script>
<template>
<MarkdownRender
mode="chat"
:content="markdown"
:final="done"
:fade="done"
:typewriter="!done"
:smooth-streaming="done ? false : 'auto'"
html-policy="safe"
/>
</template>
Limitations
- Browser-only peers cannot run during SSR.
- Hydration depends on correct host plugin/component boundaries.
- This skill does not configure deployment adapters.
Security & Safety Notes
Do not expose trusted HTML or loose Mermaid settings to untrusted model output. Review dependency and runtime-boundary changes.