Blog

Nov 19, 2025

Steve Ruiz

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!

You can build the canvas thing

Make it yours with custom shapes, extensions, and UI.

You can build the canvas thing

Make it yours with custom shapes, extensions, and UI.

You can build the canvas thing

Make it yours with custom shapes, extensions, and UI.

Product

Developers

Resources

Product

Developers

Resources

Product

Developers

Resources

Product

Developers

Resources