GitHub

v0.54.0

Immutable release. Only release title and notes can be modified.

0.54.0 (2026-08-13)

💖 The math block and diagram block has been sponsored by DINUM 🇫🇷

Math Block

A long requested feature, you can now add block & inline math to a BlockNote editor. They are driven by Katex & support much of Latex for all your notation needs.

math-block.mp4

Link to demo

Diagram Block

We've also added support for a diagram block driven by Mermaid.js, allowing you to add diagramming to the editor.

diagram-block.mp4

Link to demo

Source Block with Preview

Both the Math block & Diagram block are built on a primitive that you can build your own custom blocks from. The Source Block with Preview primitive allows you to build a pair of a block which renders content with an inline editor for the content being rendered. This can enable other sorts of preview-like features in the future, exposed as an API for you to build your own custom blocks with.

a table being rendered from CSV source an inline CSS color picker

Link to demo

🚀 Features

  • Adds a Math block (2a34f7d70)
  • Adds a Diagram block (0fca0ee7a)
  • core: Source-with-preview, syntax highlighting & exporter images (503c796d3)

🩹 Fixes

  • ai: Operations on collaborative documents (#2952)
  • ai: Operations on blocks containing comments (#2953)
  • pdf: Add custom font and fontFamily options for CJK (#2945)
  • Expose first suggestion as active descendant (#2965)
  • xl-docx-exporter: Clamp list nesting to the levels DOCX defines (#2969)

❤️ Thank You

v0.53.0

Immutable release. Only release title and notes can be modified.

0.53.0 (2026-08-06)

🚀 Features

  • shadcn: ⚠️ Use base-ui instead of radix (BLO-1279) (#2913)

🩹 Fixes

  • getCellSelection throwing error in positions (BLO-1193) (#2911)
  • Multi-column slash menu items within a column (BLO-905) (#2914)
  • Suggestion menu behaviour (BLO-1283, BLO-955) (#2930)
  • Ignore useless block/inline content mutations (BLO-1224) (#2912)
  • slash-menu: Better overflow behavior (BLO-1192) (#2909)
  • Slash menu item selection behaviour (BLO-1222) (#2838)
  • HTML export/parse round trip ignoring empty blocks (BLO-873) (#2931)
  • core: Guard getBlock() calls to prevent TypeError on stale blocks (#2941)
  • Stop stale node view positions crashing the editor (#2938)
  • Multi-column trailing blocks, column hover borders & drop cursor left edge BLO-1226 (#2885)

⚠️ Breaking Changes

  • shadcn: ⚠️ Use base-ui instead of radix (BLO-1279) (#2913)

❤️ Thank You

v0.52.1

Immutable release. Only release title and notes can be modified.

0.52.1 (2026-07-20)

🩹 Fixes

  • react: Avoid importing yjs in the default UI (#2902)

❤️ Thank You

v0.52.0

Immutable release. Only release title and notes can be modified.

0.52.0 (2026-07-20)

🚀 Features

  • Migrate to Vite+ (#2745)
  • Decouple yjs from blocknote/core (#2741)
  • moveBlocks behaviour when leaving empty columns (BLO-1109) (#2842)
  • comments: Confirm before discarding an unsaved comment (blo-1197) (#2861)
  • core: Support "plain" block content (BLO-335) (#2868)

⚠️ Migration Guide

Yjs is now decoupled from @blocknote/core. Instead of passing a collaboration option directly to the editor, you now wrap your editor options with the withCollaboration helper imported from @blocknote/core/yjs.

Before (< 0.52.0):

const editor = useCreateBlockNote({
  // ...other editor options
  collaboration: {
    provider,
    fragment: doc.getXmlFragment("document-store"),
    user: {
      name: "My Username",
      color: "#ff0000",
    },
  },
});

After (>= 0.52.0):

// Import the helper from the decoupled Yjs entrypoint:
import { withCollaboration } from "@blocknote/core/yjs";
const editor = useCreateBlockNote(
  withCollaboration({
    // ...other editor options
    collaboration: {
      provider,
      fragment: doc.getXmlFragment("document-store"),
      user: {
        name: "My Username",
        color: "#ff0000",
      },
    },
  }),
);

The collaboration object itself (provider, fragment, user, showCursorLabels, etc.) is unchanged — you only need to:

  1. Import withCollaboration from @blocknote/core/yjs.
  2. Wrap your editor options object with withCollaboration(...), keeping the collaboration property inside it.

The same applies when creating an editor with BlockNoteEditor.create(withCollaboration({ ... })).

🩹 Fixes

  • Align side menu to tables (BLO-1117) (#2837)
  • Remove cursor flicker in trailing block (#2839)
  • table: Guard stale block after changes for table handles (#2821)
  • xl-ai: Remove 'use client' from server entry (BLO-1235) (57596cee6)
  • tables: Tab causing indent in last table cell (BLO-1211) (#2831)
  • core: Use dynamic propSchema when extending default block specs (#2882)
  • xl-pdf-exporter: Fix emoji rendering for ZWJ sequences in PDF export (#2871)
  • core: Ignore synthetic mousemove events without coordinates in side menu (#2895)
  • core: Read hardBreakShortcut from block spec impl (#2891)
  • xl-email-exporter: Update react-email deps to fix fresh install tests (#2898)
  • core: Call scrollIntoView() on Enter (#2802)

❤️ Thank You

v0.51.4

Immutable release. Only release title and notes can be modified.

0.51.4 (2026-06-02)

🩹 Fixes

  • add explicit type annotations for callback params losing contextual typing (#2815)
  • Comments emoji picker button issues (BLO-1199) (#2769)
  • core: add editor cleanup in BlockNoteEditor.test.ts to prevent unhandled DOMObserver errors (#2816)
  • table: prevent crash when pressing Enter in a table cell (#2793)

❤️ Thank You

v0.51.3

Immutable release. Only release title and notes can be modified.

0.51.3 (2026-05-26)

🩹 Fixes

  • table cell colors (BLO-1198) (#2770)

❤️ Thank You

v0.51.2

Immutable release. Only release title and notes can be modified.

0.51.2 (2026-05-20)

🩹 Fixes

  • color picker icons (BLO-1189) (#2762)

❤️ Thank You

v0.51.1

Immutable release. Only release title and notes can be modified.

What's Changed

  • fix: backslash newlines when copying from a code block by @nperez0111 in #2709

Full Changelog: v0.51.0...v0.51.1

v0.51.0

Immutable release. Only release title and notes can be modified.

0.51.0 (2026-05-14)

This release removes ~100 dependencies from @blocknote/core

This version we have completely rewritten the markdown ↔ html conversion primarily to remove ~80 dependencies from the package. This was a burden to everyone who does not rely on markdown conversion in their editor. If you run into issues with our new markdown parser & serializer, feel free to post an issue if it is obviously incorrect. We do ask however, if your issue is related to some edge case of the markdown format that you instead handle the markdown parsing in your application and invoke editor.tryParseHTMLToBlocks instead, as we do not intend to handle all markdown documents.

🚀 Features

  • Trailing block extension rewrite (#2733)
  • markdown: replace unified.js with custom markdown parser/serializer (#2624)
  • react: configurable portal targets for floating UI (#2729, #2692)

🩹 Fixes

  • Pasting plain text from VSCode (BLO-366) (#2713)
  • Parse new lines in text/plain as line breaks (BLO-1170) (#2712)
  • Code block PDF export (BLO-987) (#2725)
  • Formatting toolbar opening when inserting file block with trailingBlock: false (BLO-860) (#2704)
  • numbered list item decorations missed on initial render (#2734)
  • flicker-free mobile formatting toolbar via CSS custom properties (#2617, #2616)
  • add bn-thread-orphaned CSS class to distinguish orphaned threads (#2737, #2735)
  • set width attribute on image and video elements in editor render (#2740, #2726)
  • a11y: use figure/figcaption for media block captions (#2717)
  • ai: loosen serialization of blocks in columns (#2716, #2718)
  • core: trigger codeblock input rule on Enter and place cursor inside (#2686)
  • core: preserve list item type when pasting into empty list items (#2722, #2330)
  • core: unmount editors in transformPasted tests to prevent unhandled error (e62880b21)
  • drag-n-drop: support PDF block drag & drop (BLO-893) (#2714)
  • i18: improve french translation for empty toggle list (#2721)
  • markdown: emit tight lists when serializing blocks to markdown (#2715)
  • markdown: skip placeholder text for empty files (#434, #2719)
  • markdown: stable round-trip for tables, captions, and audio (#2720)

❤️ Thank You

v0.50.0

Immutable release. Only release title and notes can be modified.

0.50.0 (2026-05-04)

🚀 Features

  • Dark mode styling for file block wrapper component (BLO-866) (#2680)
  • Drag hendle menu delete button removes all other blocks in selection (BLO-1007) (#2683)
  • Enter moves selection to cell below in tables (BLO-1006) (#2685)
  • additional heading top padding (BLO-1008) (#2690)
  • Code mark input rule edge case (BLO-938) (#2698)
  • mantine: upgrade peer dep range for @mantine/core and @mantine/hooks to allow 9.x (#2655)

🩹 Fixes

  • Hardcoded strings in comment components (BLO-1033) (#2681)
  • Color naming & CSS (BLO-946) (#2684)
  • link HTML attributes (BLO-915) (#2687)
  • guard hideMenuIfNotFrozen against undefined view state (#2694, #2699)
  • Clicking comment overlapping link opens link (BLO-1091) (#2696)
  • prevent table row drag from moving an extra adjacent row (#2703)
  • clipboard: use ProseMirror selection state for Shadow DOM compatibility (#2677)

❤️ Thank You

Read the original on github.com ↗