streamdown@2.5.0

zjunlp/OmniThinkstreamdown@2.5.0Mar 17, 2026

AI Summary

A minor update introducing new props for code blocks and streaming animations, alongside performance optimizations for re-renders and CSV export compatibility.

Key Highlights

  • Added `lineNumbers` prop to disable line numbers in code blocks
  • Added `meta` prop to `CustomRendererProps` for accessing raw code fence metadata
  • Implemented staggered animation-delay for streaming content (configurable via `stagger` option)
  • Enabled horizontal scrolling on code blocks to handle long lines
  • Fixed unnecessary re-renders of code blocks during streaming updates

New Features

  • `lineNumbers` prop to disable line numbers
  • `meta` prop for custom renderers to receive raw metastring
  • `stagger` option for sequential streaming animations
  • Horizontal scrolling for code blocks
  • UTF-8 BOM prepending for CSV downloads
  • Tailwind CSS v3/v4 compatibility fixes

Full Release Notes

### Minor Changes

-   d6666b6: Add `lineNumbers` prop to disable line numbers in code blocks
-   d4ec6c0: Add `meta` prop to `CustomRendererProps`. Custom renderers now receive the raw metastring from the code fence (everything after the language identifier, e.g. ```` ```rust {1} title="foo" ```` → `meta = '{1} title="foo"'`). The prop is optional (`meta?: string`) and is `undefined` when no metastring is present. Existing custom renderers are unaffected.

### Patch Changes

-   ac8d839: Add staggered `animation-delay` to streaming word/character animations so new content cascades in sequentially instead of all animating simultaneously. Configurable via the new `stagger` option (default 40ms). Set `stagger: 0` to restore the previous behavior.

-   add5374: Enable horizontal scrolling on code blocks so long lines are accessible instead of being clipped by `overflow-hidden`.

-   75845c0: Fix unnecessary re-renders of code blocks during streaming updates.

    **Problem:** In streaming mode, when new content arrives (e.g. a paragraph is appended), completed code blocks that haven't changed were still re-rendering. This happened because the `Streamdown` component used inline object literals as default parameter values for `linkSafety` (`{ enabled: true }`). Every time `children` changed and `Streamdown` re-rendered, these inline defaults created new references, which caused the `contextValue` useMemo to recompute a new `StreamdownContext` object. Since React propagates context changes through `memo` boundaries, any context consumer inside a memoized `Block` (such as `CodeBlock`) would re-render even though the block's own props were unchanged.

    **Fix:** Extract the inline default values for `linkSafety` into module-level constants (`defaultLinkSafetyConfig`). This ensures referential stability across renders, so `contextValue` only recomputes when the actual values change — not just because `children` updated.

-   8b1c262: fix: prepend UTF-8 BOM to CSV downloads for Excel compatibility

    -   `save()` now prepends `\uFEFF` for `text/csv` string content so Excel on
        Windows detects UTF-8 encoding instead of falling back to ANSI.
    -   `TableDownloadButton` refactored to use `save()` instead of inline Blob
        creation, ensuring the public API also gets the BOM fix.

-   b105c64: Fix custom tag content being prematurely split when content follows the opening tag on the same line and contains double newlines (`\n\n`). The preprocessor now ensures proper HTML block structure so the parser treats the entire tag as a single unit.

-   9e6f991: Increase dropdown z-index for table copy and download menus to prevent clipping by surrounding elements.

-   9c18748: docs: document required CSS custom properties (shadcn/ui design tokens) in README

-   7b62e9a: Replace Tailwind v4-only `*:last:` and `*:first:` variant syntax with `[&>*:last-child]:` and `[&>*:first-child]:` arbitrary variants for compatibility with both Tailwind CSS v3 and v4. Fixes caret rendering on every line instead of only the last child in v3.

-   Updated dependencies [e50b0c4]

-   Updated dependencies [716a5f0]
    -   remend@1.3.0