0.56.0 (2026-10-14)
This release brings two major features:
- Layout blocks & block frames (preview): custom blocks that hold and arrange other blocks, such as tabs, steppers and alerts with a body. 💖 Sponsored by XWiki.
- Version history overhaul: a new history sidebar, version comparisons with author attribution, and a YHub storage backend. 💖 Sponsored by DINUM 🇫🇷.
See below for details. This release has breaking changes; see Breaking changes before upgrading.
🚀 Features
- Layout blocks & block frames (preview): custom blocks can now hold other blocks (
layoutOnly) and draw a frame around their content and children (renderFrame). (#3059) - Keyboard settings for custom blocks (experimental): set how Enter, Backspace and Shift-Tab work in a block with
experimental_keyboard. (#3059) - Toggles rebuilt: Enter in an open toggle adds a block inside it, a closed toggle keeps its children, you can drop blocks into a toggle (also an empty one), and the toggle button is accessible to screen readers. (#3059)
- Menus follow the schema: the slash menu and block type select show only the block types your schema supports, including only the configured heading levels. (#3059)
- Version history rebuilt, with customizable snapshot actions. (#3090)
- Side menu hover rewritten: the side menu now follows the block under the pointer, which fixes nested blocks, columns, scrolling containers and overlapping editors. New
hoverMarginanddropMarginoptions. (#3179) - Down arrow in a block without content at the end of the document creates a paragraph. (#3113)
- Better Backspace handling in nested blocks. (#3124)
- Mod+A shortcut changes. (#2995)
🔥 Performance
- Less layout shift when the Inter font loads. (#3130)
- Large version diffs show in one transaction. (#3090)
- Removed an unused source preview anchor. (#3099)
🩹 Fixes
- Suggestion menu: it opens below unless cramped, keeps its side and width while you filter, flips above when fewer than five items fit below, and doesn't jump when it scrolls. (#3188, #3190, #3198)
- Email exporter: text is escaped instead of being inserted as HTML. (#3100)
- Dropping a block into a toggle works with a real drag. (#3195)
- WebKit no longer scrolls when a block is dropped. (#3122)
- The formatting toolbar stays hidden when focus returns to editor UI. (#3187)
- A code block typed without a language uses the default language. (#3024)
- Inline code no longer clears comments. (#2832)
- Math previews open on the first click, and selected inline math is styled correctly. (#3129, #2983)
- Markdown autolinks round-trip. (#3115)
insertInlineContentno longer adds content after the cursor. (#3112)- No error when the placeholder style is already removed. (#3145)
- Block changes from before the view exists are no longer marked. (#3193)
⚠️ Breaking changes
Side menu
- By default, the side menu only shows while the pointer is over the editor (including its padding). Before, it also showed up to 250px around it. Set
sideMenu.hoverMarginto widen the area. (#3179)
Custom blocks & toggles
blockTypeSelectItems(dict)is nowblockTypeSelectItems(editor), because the items depend on the schema. (#3059)- Deprecated, still works:
meta.hardBreakShortcut. Useexperimental_keyboard.enterandexperimental_keyboard.shiftEnter. (#3059)
Behavior changes
- Mod+A now selects the current block first, and the whole document on the second press. Set
selectAllBehavior: "document"to select the whole document right away. (#2995) - Backspace at the start of a nested block now merges it into the block above, like a top-level block. It un-nests the block only when they can't merge. (#3124)
- A code block created without a language gets the configured
defaultLanguage("text"by default) instead of"". (#3024)
Imports
@blocknote/coreno longer exports the built-in extensions (including versioning) orUniqueIDfrom its root. Import them from@blocknote/core/extensions.getDefaultSlashMenuItems,filterSuggestionItems,insertOrUpdateBlockForSlashMenuandgetDefaultEmojiPickerItemsstay in the root. (#3090)- The versioning components (
VersioningSidebar,useVersionUsers) moved from@blocknote/reactto@blocknote/react/versioning. (#3090)
Versioning
- The versioning API is new. Apps using the previous API must migrate; see the versioning examples. (#3090)
Layout blocks & block frames (preview)
💖 This feature is sponsored by XWiki. Thanks for supporting BlockNote!
Layout blocks and block frames let you control how a block's children are rendered. With them, you can build block types that weren't possible before:
- Block frames:
renderFramedraws one frame around a block's content and its child blocks. - Layout blocks (
layoutOnly: true): blocks with no content of their own that hold and arrange other blocks. Columns are now built this way.
These APIs are a preview and can change before they're stable. We'd love your feedback in Discussions or an issue.
Tabs block
Stepper block
Alert block with a title and body
Version history overhaul
💖 This feature is sponsored by DINUM 🇫🇷
Version history has been rebuilt from the ground up:
- History sidebar: browse stored versions, newest first, and view any version read-only.
- Comparisons: compare a version with the previous one, with the start of the document, or with any other version. Hover a change to see who inserted, deleted or reformatted it, and when.
- Version actions: name, restore (the current content is saved first) and delete versions, or customize the actions with your own.
- YHub storage backend, faster diffs, and fixes for concurrent edits (nested blocks now merge correctly).
❤️ Thank you
- Matthew Lipski
- Yousef
- Nick Perez
- Adarshsm
- Rovshan Muradov
- Kevin Jahns (Yjs)