github excalidraw/excalidraw v0.16.0
v0.16.0 (2023-09-19)

latest releases: v0.16.4, v0.17.6, v0.16.3...
14 months ago

0.16.0 (2023-09-19)

Features

  • Support creating containers, linear elements, text containers, labelled arrows and arrow bindings programatically #6546

  • Added props.validateEmbeddable to customize embeddable src url validation. #6691

  • Add support for opts.fitToViewport and opts.viewportZoomFactor in the ExcalidrawAPI.scrollToContent API. #6581.

  • Sidebar component now supports tabs — for more detailed description of new behavior and breaking changes, see the linked PR. #6213

  • Exposed DefaultSidebar component to allow modifying the default sidebar, such as adding custom tabs to it. #6213

    BREAKING CHANGES

    • props.renderSidebar is removed in favor of rendering as children.
    • appState.isSidebarDocked replaced with appState.defaultSidebarDockedPreference with slightly different semantics, and relating only to the default sidebar. You need to handle docked state for your custom sidebars yourself.
    • Sidebar props.dockable is removed. To indicate dockability, supply props.onDock() alongside setting props.docked.
    • Sidebar.Header is no longer rendered by default. You need to render it yourself.
    • props.onClose replaced with props.onStateChange.
    • restore()/restoreAppState() now retains appState.openSidebar regardless of docked state.

Excalidraw Library

This section lists the updates made to the excalidraw library and will not affect the integration.

Features

  • Properly sanitize element link urls. #6728.

  • allow avif, jfif, webp, bmp, ico image types #6500

  • Zen-mode/go-to-plus button style tweaks #7006

  • Holding down CMD/CTRL will disable snap to grid when grid is active #6983

  • Update logo #6979

  • Export changeProperty() and getFormValue(). #6957

  • Partition main canvas vertically #6759

  • Add support for simplePDF in Web-Embeds #6810

  • Introducing Web-Embeds (alias iframe element)#6691

  • Add support for val.town embeds #6821

  • Render bold lines in grid #6779

  • Adds support for stackblitz.com embeds #6813

  • Cache most of element selection #6747

  • Support customizing what parts of frames are rendered #6752

  • Make appState.selectedElementIds more stable #6745

  • Overwrite confirmation dialogs #6658

  • Simple analitycs #6683

  • Introduce frames #6123

  • Add canvas-roundrect-polyfill package #6675

  • Polyfill CanvasRenderingContext2D.roundRect #6673

  • Disable collab feature when running in iframe #6646

  • Assign random user name when not set #6663

  • Redesigned collab cursors #6659

  • Eye dropper #6615

  • Redesign of Live Collaboration dialog #6635

  • Recover scrolled position after Library re-opening #6624

  • Clearing library cache #6621

  • Update design of ImageExportDialog #6614

  • Add flipping for multiple elements #5578

  • Color picker redesign #6216

  • Add "unlock all elements" to canvas contextMenu #5894

  • Library sidebar design tweaks #6582

  • Add Trans component for interpolating JSX in translations #6534

  • Testing simple analytics and fathom analytics for better privacy of the users #6529

  • Retain seed on shift-paste #6509

  • Allow avif, jfif, webp, bmp, ico image types (#6500

Fixes

  • Improperly disabling UI pointer-events on canvas interaction #7005

  • Several eyeDropper fixes #7002

  • IsBindableElement to affirm frames #6900

  • Use device.isMobile for sidebar trigger label breakpoint #6994

  • Export to plus url #6980

  • Z-index inconsistencies during addition / deletion in frames #6914

  • Update size-limit so react is not installed as dependency #6964

  • Stale labeled arrow bounds cache after editing the label #6893

  • Canvas flickering due to resetting canvas on skipped frames #6960

  • Grid jittery after partition PR #6935

  • Regression in indexing when adding elements to frame #6904

  • Stabilize selectedElementIds when box selecting #6912

  • Resetting deleted elements on duplication #6906

  • Make canvas compos memoize appState on props they declare #6897

  • Scope --color-selection retrieval to given instance #6886

  • Webpack config exclude statement to system agnostic #6857

  • Remove embeddable from generic elements #6853

  • Resizing arrow labels #6789

  • Eye-dropper not working with app offset correctly on non-1 dPR #6835

  • Add self destroying service-worker.js to migrate everyone from CRA to Vite #6833

  • Forgotten REACT_APP env variables #6834

  • Refresh sw when browser refreshed #6824

  • Adding to selection via shift box-select #6815

  • Prevent binding focus NaN value #6803

  • Use pull request in semantic workflow for better security #6799

  • Don't show canvasBackground label when UIOptions.canvasActions.changeViewBackgroundColor is false #6781

  • Use subdirectory for @excalidraw/excalidraw size limit #6787

  • Use actual dock state to not close docked library on insert #6766

  • UI disappears when pressing the eyedropper shortcut on mobile #6725

  • Elements in non-existing frame getting removed #6708

  • Scrollbars renders but disable #6706

  • Typo in chart.ts #6696

  • Do not bind text to container using text tool when it has text already #6694

  • Don't allow binding text to images #6693

  • Updated link for documentation page under help section #6654

  • Collab username style fixes #6668

  • Bound arrows not updated when rotating multiple elements #6662

  • Delete setCursor when resize #6660

  • Creating text while color picker open #6651

  • Cleanup textWysiwyg and getAdjustedDimensions #6520

  • Eye dropper not accounting for offsets #6640

  • Color picker input closing problem #6599

  • Export dialog shortcut toggles console on firefox #6620

  • Add react v17 useTransition polyfill #6618

  • Library dropdown visibility issue for mobile #6613

  • withInternalFallback leaking state in multi-instance scenarios #6602

  • Language list containing duplicate en lang #6583

  • Garbled text displayed on avatars #6575

  • Assign the original text to text editor only during init #6580

  • I18n: Apply Trans component to publish library dialogue #6564

  • Fix brave error i18n string and remove unused #6561

  • Revert add version tags to Docker build #6540

  • Don't refresh dimensions for text containers on font load #6523

  • Cleanup getMaxContainerHeight and getMaxContainerWidth #6519

  • Cleanup redrawTextBoundingBox #6518

  • Text jumps when editing on Android Chrome #6503

Styles

  • Removes extra spaces #6558

  • Fix font family inconsistencies #6501

Refactor

  • Factor out shape generation from renderElement.ts pt 2 #6878

  • Add typeScript support to enforce valid translation keys #6776

  • Simplify ImageExportDialog #6578

Performance

  • Limiting the suggested binding to fix performance issue #6877

  • Memoize rendering of library #6622

  • Improve rendering performance for Library #6587

  • Use UIAppState where possible to reduce UI rerenders #6560

Build

  • Increase limit for bundle by 1kb #6880

  • Update to node 18 in docker #6822

  • Migrate to Vite 🚀 #6818

  • Migrate to Vite 🚀 #6713

  • Increase limit to 290 kB for prod bundle #6809

  • Add version tags to Docker build #6508


Don't miss a new excalidraw release

NewReleases is sending notifications on new releases.