# Excalidraw changelog
> A virtual whiteboard for hand-drawn style diagrams.
- Vendor: Excalidraw
- Category: Design Tools
- Official site: https://excalidraw.com
- Tracked by: What's New (https://whatsnew.fyi/product/excalidraw)
- Harvested from: GitHub (excalidraw/excalidraw)
- Entries below: 10 (newest first)
What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog.
## Releases
### v0.18.1
- Date: 2026-04-21
- Version: v0.18.1
- Original notes: https://github.com/excalidraw/excalidraw/releases/tag/v0.18.1
- Permalink: https://whatsnew.fyi/product/excalidraw/releases/v0.18.1
- **security** — Address upstream Mermaid XSS vulnerability CVE-2025-54881 / GHSA-7rqq-prvp-x9jh by updating @excalidraw/mermaid-to-excalidraw to 2.2.2
- **changed** — Pin @types/d3-dispatch for compatibility with the 0.18.x TypeScript version
Security patch release for `@excalidraw/excalidraw@0.18.x`, addressing upstream Mermaid XSS vulnerability CVE-2025-54881 / GHSA-7rqq-prvp-x9jh.
- Backports Mermaid XSS mitigation by updating `@excalidraw/mermaid-to-excalidraw` to `2.2.2`
- Pins `@types/d3-dispatch` for compatibility with the 0.18.x TypeScript version
### v0.18.0 — v0.18.0 (2025-03-11)
- Date: 2025-03-11
- Version: v0.18.0
- Original notes: https://github.com/excalidraw/excalidraw/releases/tag/v0.18.0
- Permalink: https://whatsnew.fyi/product/excalidraw/releases/v0.18.0
##### Excalidraw Library
##### 0.18.0 (2025-03-11)
###### Highlights
- Command palette [#7804](https://github.com/excalidraw/excalidraw/pull/7804)
- Multiplayer undo / redo [#7348](https://github.com/excalidraw/excalidraw/pull/7348)
- Editable element stats [#6382](https://github.com/excalidraw/excalidraw/pull/6382)
- Text element wrapping [#7999](https://github.com/excalidraw/excalidraw/pull/7999)
- Font picker with more fonts [#8012](https://github.com/excalidraw/excalidraw/pull/8012)
- Font for Chinese, Japanese, and Korean [#8530](https://github.com/excalidraw/excalidraw/pull/8530)
- Font subsetting for SVG export [#8384](https://github.com/excalidraw/excalidraw/pull/8384)
- Elbow arrows [#8299](https://github.com/excalidraw/excalidraw/pull/8299), [#8952](https://github.com/excalidraw/excalidraw/pull/8952)
- Flowcharts [#8329](https://github.com/excalidraw/excalidraw/pull/8329)
- Scene search [#8438](https://github.com/excalidraw/excalidraw/pull/8438)
- Image cropping [#8613](https://github.com/excalidraw/excalidraw/pull/8613)
- Element linking [#8812](https://github.com/excalidraw/excalidraw/pull/8812)
###### Breaking changes
###### Deprecated UMD bundle in favor of ES modules [#7441](https://github.com/excalidraw/excalidraw/pull/7441), [#9127](https://github.com/excalidraw/excalidraw/pull/9127)
We've transitioned from `UMD` to `ESM` bundle format. Our new `dist` folder inside `@excalidraw/excalidraw` package now contains only bundled source files, making any dependencies tree-shakable. The package comes with the following structure:
> **Note**: The structure is simplified for the sake of brevity, omitting lazy-loadable modules, including locales (previously treated as JSON assets) and source maps in the development bundle.
```
@excalidraw/excalidraw/
├── dist/
│ ├── dev/
│ │ ├── fonts/
│ │ ├── index.css
│ │ ├── index.js
│ │ ├── index.js.map
│ ├── prod/
│ │ ├── fonts/
│ │ ├── index.css
│ │ ├── index.js
│ └── types/
```
Make sure that your JavaScript environment supports ES modules. You _may_ need to define `"type": "module"` in your `package.json` file or as part of the `` attribute.
###### Typescript: deprecated "moduleResolution": `"node"` or `"node10"`
Since `"node"` and `"node10"` do not support `package.json` `"exports"` fields, having these values in your `tsconfig.json` will not work. Instead, use `"bundler"`, `"node16"` or `"nodenext"` values. For more information, see [Typescript's documentation](https://www.typescriptlang.org/tsconfig/#moduleResolution).
###### ESM strict resolution
Due to ESM's strict resolution, if you're using Webpack or other bundler that expects import paths to be fully specified, you'll need to disable this feature explicitly.
For example in Webpack, you should set [`resolve.fullySpecified`](https://webpack.js.org/configuration/resolve/#resolvefullyspecified) to `false`.
For this reason, CRA will no longer work unless you eject or use a workaround such as [craco](https://stackoverflow.com/a/75109686).
###### New structure of the imports
Depending on the environment, this is how imports should look like with the `ESM`:
**With bundler (Vite, Next.js, etc.)**
```ts
// excalidraw library with public API
import * as excalidrawLib from "@excalidraw/excalidraw";
// excalidraw react component
import { Excalidraw } from "@excalidraw/excalidraw";
// excalidraw styles, usually auto-processed by the build tool (i.e. vite, next, etc.)
import "@excalidraw/excalidraw/index.css";
// excalidraw types (optional)
import type { ExcalidrawImperativeAPI } from "@excalidraw/excalidraw/types";
```
**Without bundler (Browser)**
```html