Releases: TypeCellOS/BlockNote
v0.30.1
v0.30.0
0.30.0 (2025-05-09)
There was a change to prosemirror-model@1.25.1 that broke a lot of our assumptions around parsing content from HTML (and the clipboard), which users notified us about. We've now fixed them in this update. This resulted in a fairly significant change to how we parse content, but with a our test suite we are able to guarantee little changes in behavior, in some cases we actually are able to parse and correctly insert more content than prior versions.
There are also a number of bug fixes that have been addressed with this version, especially around collaborative editing, which should mean a better collaborative experience for users.
As always, we would like to thank our sponsors. We've recently updated our website to include a proper user auth and payment system. If your company relies on our open source software, please consider paying it forward by becoming a sponsor via our website: https://www.blocknotejs.org/pricing
🚀 Features
- expose
editor.prosemirrorStateagain (#1615) - add
undoandredomethods to editor API (#1592) - re-implement Y.js collaboration as BlockNote plugins (#1638)
- file:
previewWidthprop now defaults toundefined(#1664) - locales: add zh-TW i18n (#1668)
- locales: add slovak i18n (#1649)
🩹 Fixes
- Resolve formating toolbar regression (#1630)
- provide
blockIdtouploadFilein UploadTab (#1641) - do not close the menu on content/selection change (#1644)
- keep file panel open during collaboration (#1646)
- force pasting plain text into code block (#1663)
- updating HTML parsing rules to account for
prosemirror-model@1.25.1(#1661) - code-block: handle unknown languages better (#1626)
❤️ Thank You
- l0st0 @l0st0
- Lawrence Lin @linyiru
- Matthew Lipski @matthewlipski
- Nick Perez
- Quentin Nativel
v0.29.1
0.29.1 (2025-04-17)
🩹 Fixes
This resolves a dependency issue in 0.29.0
❤️ Thank You
- Nick the Sick
v0.29.0
0.29.0 (2025-04-17)
change event
This adds a new API which will tell you what blocks have been inserted, updated or deleted when you register a callback on the onChange API
transact API
This release adds a new low-level API for interacting with the prosemirror state, the transact API. This enables blocknote-level transactions, meaning that operations can operate on the same transaction, so now they are only one undo/redo step. We think this API provides a solid foundation for us to build anything that operates on the prosemirror level.
It is also accompanied by a couple of other low-level APIs exec and canExec for interoperability between blocknote and existing prosemirror commands
🚀 Features
changeevent allows getting a list of the block changed (#1585)
🩹 Fixes
- allow opening another suggestion menu if another is triggered #1473 (#1591, #1473)
- add quote to schema (aa16b15fe)
- update y-prosemirror to fix #1462 (#1608, #1462)
- dispatch suggestion menu as a separate transaction (#1614)
❤️ Thank You
- Nick Perez
- Nick the Sick
Please note that this version had issues being published, please use 0.29.1 instead
v0.28.0
v0.27.2
v0.27.0
0.27.0 (2025-04-04)
- Smaller bundle size: ~100 kB less, with more features
- Blockquote Block: You can now add quotes with this new block type
- Customizable Code Blocks: Control how code blocks do syntax highlighting, add more supported languages, smaller bundle size, theming
- Markdown pasting, and custom paste handlers: You can now paste markdown into the editor & it will be pasted as rich text! Support for custom paste handling behaviors with configurable callback
Breaking changes
Code block syntax highlighting removed
We no longer automatically include syntax highlighting for code blocks, this significantly reduces our bundle size and allows for more flexibility in terms of including the languages & themes your application may need. To see how to add syntax highlighting, read our guide for setting it up: https://www.blocknotejs.org/docs/advanced/code-blocks
Localizations are available from a new export
We no longer include locales as an export directly from @blocknote/core, the same locales are now available from @blocknote/core/locales, allowing you to import just the locales you need in your application. This significantly reduces the bundle size of blocknote, see more about localization in our example: https://www.blocknotejs.org/examples/basic/localization
Why?
To achieve a better bundle size, and reduce the number of dependencies of the package we were able to go from:
Before (v0.26.0):
dist/webpack-stats.json 14.11 kB │ gzip: 2.41 kB
dist/style.css 11.60 kB │ gzip: 2.82 kB
dist/comments.js 17.51 kB │ gzip: 3.54 kB │ map: 49.69 kB
dist/blocknote.js 422.01 kB │ gzip: 95.01 kB │ map: 1,116.10 kB
dist/webpack-stats.json 14.11 kB │ gzip: 2.41 kB
dist/style.css 11.60 kB │ gzip: 2.82 kB
dist/comments.cjs 11.83 kB │ gzip: 2.87 kB │ map: 47.56 kB
dist/blocknote.cjs 277.15 kB │ gzip: 73.99 kB │ map: 1,055.32 kBAfter (v0.27.0):
dist/webpack-stats.json 14.59 kB │ gzip: 2.53 kB
dist/style.css 11.76 kB │ gzip: 2.86 kB
dist/en-B7ycW7c8.js 8.06 kB │ gzip: 2.00 kB │ map: 14.54 kB
dist/comments.js 17.51 kB │ gzip: 3.54 kB │ map: 49.77 kB
dist/locales.js 141.51 kB │ gzip: 28.23 kB │ map: 249.57 kB
dist/blocknote.js 280.46 kB │ gzip: 66.76 kB │ map: 874.62 kB
dist/webpack-stats.json 14.61 kB │ gzip: 2.52 kB
dist/style.css 11.76 kB │ gzip: 2.86 kB
dist/en-D4taoCs4.cjs 5.54 kB │ gzip: 1.84 kB │ map: 12.80 kB
dist/comments.cjs 11.83 kB │ gzip: 2.87 kB │ map: 47.59 kB
dist/locales.cjs 98.00 kB │ gzip: 25.89 kB │ map: 220.20 kB
dist/blocknote.cjs 179.33 kB │ gzip: 48.15 kB │ map: 844.04 kBBy splitting out the localizations and code block, the main bundle (blocknote.js) went from 422 kB to 280 kB!
🚀 Features
- split out localization files for optimized bundle (#1533)
- remove shiki dep, add new @blocknote/code-block package for slim shiki build (#1519)
- Blockquote Block (#1563)
- markdown pasting & custom paste handlers (#1490)
🩹 Fixes
- Backspace in empty block deletes previous block (#1505)
- Selection when clicking past end of inline content (#1553)
- better expose setting a draghandlemenu's items #1525 (#1526, #1525)
- Multi-block links (#1565)
- Hard break keyboard shortcut not working in custom blocks (#1554)
- Overlapping marks in comments (#1564)
- some more sentry fixes (#1577)
❤️ Thank You
- Martinrsts @Martinrsts
- Matthew Lipski @matthewlipski
- Nick Perez
v0.26.0
Thanks to our sponsors!
💖 The threads sidebar has been sponsored by DINUM 🇫🇷 and ZenDiS 🇩🇪
Threads Sidebar
This release introduces the ThreadsSidebar component, which displays threads & comments in a separate section next to the editor. It's meant to be used as an alternative way of viewing and interacting with comments to the default UI, where threads float next to the content they're referring to. See the docs to find out how to use and customize the ThreadsSidebar!
Screen.Recording.2025-03-19.at.10.53.32-1.mp4
What's Changed
- fix: Drag & drop for blocks with iframes not working by @matthewlipski in #1531
- fix: table error in collaboration mode by @YousefED in #1536
- fix: resolve several sentry errors by @nperez0111 in #1524
- fix: improve markview setup by @YousefED in #1544
- docs: Added Agree sponsor by @matthewlipski in #1542
- chore: add unit test for table parsing by @YousefED in #1547
- fix: immediately add nodeviews to fix flushSync error by @YousefED in #1546
- feat: Threads sidebar by @matthewlipski in #1454
Full Changelog: v0.25.2...v0.26.0
v0.25.2
What's Changed
- fix: resolve unneeded error being thrown by @nperez0111 in #1503
- fix: check for undefined headerMatrix resolves #1506 by @nperez0111 in #1507
- fix: React custom blocks not valid drop targets by @matthewlipski in #1511
- fix: small issues related to comments by @YousefED in #1520
- fix: export react components #1509 by @nperez0111 in #1510
Full Changelog: v0.25.1...v0.25.2
v0.25.1
What's Changed
This is mostly a set of bug fixes around the 0.25.0 release
- docs: fix link to
DefaultThreadStoreAuthsource code by @BinaryMuse in #1489 - fix: peerDependenciesMeta typo by @YousefED in #1495
- fix: scope cursor caret CSS to be more specific by @nperez0111 in #1492
- fix: compatibility with new react-pdf by @YousefED in #1494
- fix: pull from the default export which is available in both ESM and CJS (#1468) by @nperez0111 in #1493
- fix: upgrade y-prosemirror and remove clientID hack by @YousefED in #1497
- fix: prefix the collaboration cursor classname by @nperez0111 in #1498
- fix: import emoji-mart dynamically like (#950) by @nperez0111 in #1491
- docs: add sentry to website for error detection by @nperez0111 in #1496
New Contributors
- @BinaryMuse made their first contribution in #1489
Full Changelog: v0.25.0...v0.25.1