v5.1.0
This release redesigns the page menu around inline interaction, adds a keyboard shortcut to copy styles from a hovered shape, and adds a selectLockedShapes option for inspecting locked shapes, along with new public translation APIs, canvas performance improvements, and various rendering and UI bug fixes.
What's new
Page menu redesign (#8836)
The page menu no longer has an explicit edit mode. Reorder pages by dragging a row directly, rename inline by double-clicking the label or pressing Enter, and drag the new resize handle at the bottom of the popover to adjust the list height — the height is persisted across sessions and a double-click on the handle resets it to the default. The current page is now indicated by a subtle background pill, the row submenu trigger reveals on hover, and the "Create new page" button is pinned to the footer of the popover.
API changes
- Add a
selectLockedShapesoption toTldrawOptions. When enabled, locked shapes can be selected by left click or by brush/scribble selection while remaining protected from edits, moves, and deletes. (#8860) - Export
TldrawUiTranslationProvider,AssetUrlsProvider, anduseAssetUrlsas public API so components likeTldrawSelectionForegroundcan be rendered without the fullTldrawUiContextProvider. (#8909) - Add
FontManager.dispose(),OverlayManager.dispose(), andOverlayUtil.dispose()for cleaning up manager state across editor lifecycles. (#8896)
Improvements
- Improve performance on busy canvases —
getRenderingShapes()now skips its sort step when only shape props, not the set of shape ids, have changed. (#8784) - Improve drawing performance on pages with many shapes by skipping spatial index and culling recomputation when only shape props change. (#8799, #8804)
Bug fixes
- Fix a misleading "license expired" console warning for perpetual licenses on covered versions. (#8791)
- Fix inconsistent tooltip behavior on the video toolbar by using
TldrawUiToolbarButtonfor the replace and download buttons. (#8794) - Fix the missing open-state hint on the page menu and zoom menu triggers when rendered outside the main toolbar. (#8813)
- Mark the tldraw UI layer with
role="document"so toolbars, menus, and dialogs stay reachable to mobile screen readers like VoiceOver and TalkBack, which do not announce the outer canvasrole="application". (#8901) - Fix selection edge resize handles overlapping corner handles, which made corners hard to grab on small shapes. (#8926)
- Fix a bug where deleting a shape inside a group could move the group to a different z-index. (#8925)
- Avoid console errors from calling
preventDefaulton non-cancelable events. (#8910) - Only log the missing-translation warning once per session instead of once per
useTranslationconsumer. (#8909) - Catch
image.decode()rejections from the icon preload effect so they no longer surface as uncaught promise errors in the console. (#8824)