Choose your framework above each example. Pass the Core example’s mappers to the Core inputs to enable the mappers explicitly. Components enable the same effects through streaming.effect and include their visual renderers.
import type { MapperPluggable } from '@fluxdown/core';import { Chunk } from '@fluxdown/core-plugins/plugins/mapper/chunk';const mappers: MapperPluggable[] = [[Chunk, { enabled: true }]];
import { Fluxdown } from 'fluxdown';type MessageProps = { text: string;};export function Message({ text }: MessageProps) { return ( <Fluxdown streaming={{ smooth: false, effect: 'chunk' }} text={text} /> );}
import { Fluxdown } from '@fluxdown/taro';type MessageProps = { text: string;};export function Message({ text }: MessageProps) { return ( <Fluxdown streaming={{ smooth: false, effect: 'chunk' }} text={text} /> );}
Always pass the complete Markdown received so far. Each group fades from transparent to opaque with an ease-out curve. An existing group's animation continues when another group arrives.
import type { MapperPluggable } from '@fluxdown/core';import { Chunk } from '@fluxdown/core-plugins/plugins/mapper/chunk';const mappers: MapperPluggable[] = [[Chunk, { enabled: true, duration: 300 }]];
With smooth: false, visible updates follow the chunks received by your application. Turning smoothing on creates smaller visible updates, making the entrance more continuous. The demo leaves smoothing off so the groups are easy to follow.
Inline formatting and Markdown layout are preserved. Inline code, code blocks, formulas, and replacement content retain their own rendering. Typography, line wrapping, and incoming timing come from your application.
Fade duration in milliseconds, using an ease-out curve. 0 reveals text immediately. Negative values become 0; non-finite values use the default. The animation respects reduced-motion preferences.
Changing the duration applies to new groups; existing groups keep their original timing.