# What changed in @assistant-ui/react-markdown

> 54 changes in @assistant-ui/react-markdown 0.12 to 0.14 from its official release notes, upgrade guides and advisories: 1 breaking, 1 deprecations, 12 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/@assistant-ui/react-markdown/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @assistant-ui/react-markdown 0.14

### Deprecations

- The existing unstable memoization API is deprecated in favor of the stable API. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.20)

### New APIs and options

- Preprocess helpers are now served from a dedicated subpath for direct imports. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.20)
- Exported a markdown preprocessing helper that escapes currency values so single-dollar math does not consume them. (0.14.4) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.4)
- Exported a markdown preprocessing helper for normalizing math delimiters before remark-math parsing. (0.14.4) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.4)
- Exported a markdown preprocessing helper that rewrites LaTeX bracket delimiters into remark-math syntax. (0.14.4) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.4)
- Streamed markdown primitives can defer re-parsing growing messages to keep typing and scrolling responsive; intermediate states may be skipped, but final text renders. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)
- The smooth prop now accepts boolean or SmoothOptions, enabling tunable streamed-text reveal behavior. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)
- The smooth prop now accepts boolean or SmoothOptions, enabling tunable streamed-text reveal behavior. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)
- SmoothOptions is now publicly exported for configuring streamed text reveal behavior. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)
- useSmooth is now publicly exported, allowing developers to use the smoothing hook directly. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)
- drainMs configures the backlog drain target for smooth text reveal, defaulting to 250. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)
- maxCharIntervalMs configures the slowest reveal interval, defaulting to 5. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)
- maxCharsPerFrame caps characters revealed per frame; the default is unlimited. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)

### Performance

- Keeps preprocessing linear for lines containing many triple-backtick or tilde runs. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.22)
- Avoids quadratic scans on long tilde runs and display bodies. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.22)
- Preprocessing no longer rescans to the paragraph end for every inline code span. (0.14.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.21)
- The package now re-exports the shared preprocess functions instead of carrying a separate copy. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.20)
- Unchanged Markdown nodes are no longer serialized during streaming comparisons. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.20)
- Parsing now occurs once per token with defer enabled, and inline remarkPlugins arrays no longer defeat renderer memoization. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.15)
- When defer is off, streamed tokens no longer incur a second render pass. (0.14.14) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.14)

### Behavior and default changes

- A stable API is now available for memoizing Markdown components. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.20)
- The shadcn kit's markdown-text enables deferred markdown processing by default. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)

### Fixes and other changes

- Existing fenced code blocks refresh when components.pre, components.code, or other renderer overrides change. (0.14.23) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.23)
- Preserves multiline display math in nested blockquotes and list items, including prose after closing delimiters. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.22)
- Keeps multiline display math inside same-line nested list items. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.22)
- Preserves repeated list and quote prefixes while processing display math. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.22)
- Keeps a second display opened on a closer's line inside its quoted list item. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.22)
- Preserves multiline display math inside marker-only list items. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.22)
- Keeps a math tag display opened on a bracket closer's line inside its quoted list item. (0.14.22) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.22)
- Keeps display math inside quoted list items and correctly rewrites display math containing code spans. (0.14.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.21)
- Keeps a $$ fence opened on a list item's marker line and the following paragraph inside that list item. (0.14.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.21)
- Preserves a list-item $$ fence when formula lines start with + or -, when nested in a blockquote, or when the body contains a code span. (0.14.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.21)
- Stops interpreting a list marker line inside an open $$ block as another math opener. (0.14.21) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.21)
- Headings, thematic breaks and HTML blocks inside nested list items are now recognized consistently. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.20)
- Preprocess helpers no longer rewrite text inside indented code blocks. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.20)
- A lone backtick no longer pairs with code in a later list item, heading or blockquote, preserving its dollar and LaTeX text. (0.14.20) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.20)
- Preserves currency and math delimiters inside HTML blocks during preprocessing. (0.14.18) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.18)
- Quoted code fences and $$ blocks now end at their own blockquote boundary, preventing deeper lines from closing them early or shallower lines from leaving them open. (0.14.17) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.17)
- preprocess no longer restarts smooth streaming when a rewrite changes already-revealed text. (0.14.16) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.16)
- A backtick run is treated as a fence only when it starts a line, preventing an info string from closing a fenced block. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.15)
- The currency walker now reads tilde fences and ends unclosed fences with their blockquote instead of consuming the rest of the input. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.15)
- Fenced display math now remains inside the list item or blockquote where it was written. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.15)
- Currency and math are now preserved inside indented tilde fences. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.15)
- Both Markdown renderers preserve rehype plugin markup in code blocks and pass complete code text to code headers. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.15)
- Sparse suggestions lists now compact to dense lists before per-suggestion lookup, preventing sparse-array holes from comparing as equal. (0.14.15) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.15)
- Bracket-delimited math no longer swallows the rest of the message. (0.14.14) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.14)
- Code spans and fences remain inert when math delimiters are normalized. (0.14.14) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.14)
- Structural comparison preserves code-block memoization when componentsByLanguage contains inline objects. (0.14.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.13)
- Raw pre blocks without a code child now retain their pre element. (0.14.13) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.13)
- Preserves currency inside one- and two-backtick code spans containing longer backtick runs. (0.14.12) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.12)
- Custom highlighters now receive the raw fence language instead of "unknown". (0.14.11) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.11)
- Inline math opening with a digit is kept out of currency escaping. (0.14.7) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.7)
- The hook now preserves the part type for reasoning parts instead of always returning type text. (0.14.3) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.14.3)

## @assistant-ui/react-markdown 0.12

### Breaking changes

- The aui-source export condition was removed from package.json exports, which may affect consumers relying on that condition. (0.12.8) — [release notes](https://github.com/assistant-ui/assistant-ui/releases/tag/%40assistant-ui/react-markdown%400.12.8)
