tldraw SDK 4.2
Highlights from the November release of the tldraw SDK.
Hey, this is Steve from tldraw.
We just landed this month’s release of the tldraw SDK. This release brings: custom transports for our multiplayer library, the ability to register additional tools at runtime, a secret new fill style, and more.
You can catch up on the full release notes here or read on for the highlights.
Dynamic tools
Tools can now be added or removed at runtime. This makes it easier to build editors where the available tools change based on context, user roles, or higher-level logic. You might use this system to create tools-as-plugins, advanced modes with additional tools, or bring in new tools based on user permissions. See the example here.
TipTap v3
We've upgraded TipTap to v3. If you built your own custom version of our rich text editor, you may need to adjust a few things. See TipTap's v2 to v3 upgrade guide has all the details.

Custom angle snap reference handles
Shapes can now define which handle should be used as a reference while when a user is shift+dragging a different handle. In the past, a dragging handle always used thier previous handle, based on the handles' sort order. This behavior worked for lines and splines, however more complex shapes require more complex control, and so now you can specify which handle should be the reference. Check out the example here.
Custom sync transports
You can now provide your own connect() function into useSync. If you're using our sync library for multiplayer collaboration, this change gives you more control over how your app establishes real-time connections. For example, if you're using your own backend that uses socket.io as a transport, you can use the new connect() to wire that up. Check out our socketio-server-example template to try it yourself.
New lined fill style
A new lined fill option is now available, joining the fill fill in our small category of secret fill styles. Users can select it by pressing Option+Shift+F but if you want to make it less secret then you can of course change that using our actions API.

Improved ink on iOS
Coalesced events are now disabled on iOS Safari. This fixes a bug that would occur when drawing on devices with 120fps screens. Coalesced points would be reported at identical positions, causing the ink algorithm to bunch up at those points. Stick to the spec, Apple!
And more!
Alt-Tab no longer navigates you away from the page on PC
Fixed pasting Excalidraw embeds
Fixed image uploads on Safari iOS
Fixed an bug where dragging could conflict with open menus
Added support for cross-realm clipboard (e.g. inside iframes)
Fixed Replit embeds when provided hash fragments
Improved sync's handling of persistence failures with retry logic
Improved sync's efficient string append diffs
As always, thanks to all of the developers this month who opened issues, submitted a PR, or built something awesome with the tldraw SDK. Follow us on Twitter/X or join us on Discord for more discussion and to share your work!
© 2025 tldraw
