Excalidraw
Virtual whiteboard for sketching hand-drawn style diagrams
Alternative to: Miro, FigJam, Google Jamboard
v0.17.0
2023-11-14v0.17.0 (2023-11-14)
Features
-
Added support for disabling
imagetool (also disabling image insertion in general, though keeps support for importing from.excalidrawfiles) #6320.For disabling
imageyou need to set 👇UIOptions.tools = { image: false } -
Support
excalidrawAPIprop for accessing the Excalidraw API #7251. -
Export
getCommonBoundshelper from the package #7247. -
Support frames via programmatic API #7205.
-
Export
elementsOverlappingBBox,isElementInsideBBox,elementPartiallyOverlapsWithOrContainsBBoxhelpers for filtering/checking if elements within bounds. #6727 -
Regenerate ids by default when using transform api and also update bindings by 0.5px to avoid possible overlapping #7195
-
Add onChange, onPointerDown, onPointerUp api subscribers #7154.
-
Support props.locked for setActiveTool #7153.
-
Add
selectedprop forMainMenu.ItemandMainMenu.ItemCustomcomponents to indicate active state. #7078
Fixes
- Double image dialog on image insertion #7152.
Breaking Changes
-
The
Refsupport has been removed in v0.17.0 so if you are using refs, please update the integration to use theexcalidrawAPI#7251. -
Additionally
readyandreadyPromisefrom the API have been discontinued. These APIs were found to be superfluous, and as part of the effort to streamline the APIs and maintain simplicity, they were removed in version v0.17.0 #7251. -
useDevicehook’s return value was changed to differentiate betweeneditorandviewportbreakpoints. #7243
Build
-
Support Preact #7255. The host needs to set
process.env.IS_PREACTtotrueWhen using
viteor any build tools, you will have to make sure theprocessis accessible as we are accessingprocess.env.IS_PREACTto decide whether to use thepreactbuild.Since
Vite removes env variables by default, you can update the Vite config to ensure it’s available :point_down:define: { "process.env.IS_PREACT": process.env.IS_PREACT, },
Excalidraw Library
This section lists the updates made to the excalidraw library and will not affect the integration.
Features
-
Allow D&D dice app domain for embeds #7263
-
Remove full screen shortcut #7222
-
Make adaptive-roughness less aggressive #7250
-
Render frames on export #7210
-
Support mermaid flowchart and sequence diagrams to excalidraw diagrams 🥳 #6920
-
Support frames via programmatic API #7205
-
Make clipboard more robust and reintroduce contextmenu actions #7198
-
Support giphy.com embed domain #7192
-
Renderer tweaks #6698
-
Closing of “Save to..” Dialog on Save To Disk #7168
-
Added Copy/Paste from Google Docs #7136
-
Remove bound-arrows from frames #7157
-
New dark mode theme & light theme tweaks #7104
-
Better laser cursor for dark mode #7132
-
Laser pointer improvements #7128
-
Initial Laser Pointer MVP #6739
-
Export
iconFillColor()#6996 -
Element alignments - snapping #6256
Fixes
-
Image insertion bugs #7278
-
ExportToSvg to honor frameRendering also for name not only for frame itself #7270
-
Can’t toggle penMode off due to missing typecheck in togglePenMode #7273
-
Replace hard coded font family with const value in addFrameLabelsAsTextElements #7269
-
Perf issue when ungrouping elements within frame #7265
-
Fixes the shortcut collision between “toggleHandTool” and “distributeHorizontally” #7189
-
Allow pointer events when editing a linear element #7238
-
Make modal use viewport breakpoints #7246
-
Align input
:hover/:focuswith spec #7225 -
Dialog remounting on className updates #7224
-
Don’t update label position when dragging labelled arrows #6891
-
Frame add/remove/z-index ordering changes #7194
-
Element relative position when dragging multiple elements on grid #7107
-
Freedraw non-solid bg hitbox not working #7193
-
Actions panel ux improvement #6850
-
Better fill rendering with latest RoughJS #7031
-
Fix for Strange Symbol Appearing on Canvas after Deleting Grouped Graphics (Issue #7116) #7170
-
Attempt to fix flake in wysiwyg tests #7173
-
Ensure
ClipboardItemcreated in the same tick to fix safari #7066 -
Wysiwyg left in undefined state on reload #7123
-
Ensure relative z-index of elements added to frame is retained #7134
-
Memoize static canvas on
props.renderConfig#7131 -
Regression from #6739 preventing redirect link in view mode #7120
-
Update links to excalidraw-app #7072
-
Ensure we do not stop laser update prematurely #7100
-
Remove invisible elements safely #7083
-
Icon size in manifest #7073
-
Elements being dropped/duplicated when added to frame #7057
-
Frame name not editable on dbl-click #7037
-
Polyfill
Element.replaceChildren#7034
Refactor
-
DRY out tool typing #7086
-
Refactor event globals to differentiate from
lastPointerUp#7084 -
DRY out and simplify setting active tool from toolbar #7079
Performance
- Improve element in frame check #7124