excalidraw/excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
How excalidraw is put together
Excalidraw is a Yarn 1 workspaces monorepo building an open-source virtual hand-drawn whiteboard. The primary deliverable is the npm package '@excalidraw/excalidraw' under packages/excalidraw (React 19 + TypeScript canvas editor), consumed by the 'excalidraw-app' showcase PWA which adds real-time collaboration over socket.io-client and end-to-end-encrypted scene/file persistence in Firebase, plus local-first storage in localStorage and IndexedDB (idb-keyval). Supporting packages (common, element, math, fractional-indexing, laser-pointer, utils) are built as ES modules and shared across apps via @excalidraw/* imports. Data flows from user input into element/state models, persisted locally or synced through the collab Portal to Firebase storage, with shareable links encoding scene id + decryption key in the URL fragment.
Languages
Frameworks
Datastores
Infrastructure
Major components
packages/excalidraw
The core editor npm package: canvas rendering, elements, clipboard, history, snapping, i18n, analytics, and the public Excalidraw React component API.
excalidraw-app
The hosted excalidraw.com application wiring the editor package to collaboration, Firebase persistence, shareable links, PWA support, and Excalidraw+ iframe export.
excalidraw-app/collab
Real-time collaboration: Collab.tsx orchestrates rooms and reconciliation while Portal.tsx manages the socket.io connection to the collab server.
excalidraw-app/data
Persistence layer: FileManager, LocalData (IndexedDB file storage), Locker, localStorage helpers, tabSync, and Firebase load/save of encrypted scenes and files.
packages/common
Shared utilities (debounce, version helpers, environment detection, resolvable promises) used across all workspace packages.
packages/element
Element model library: element creation/mutation (newElementWith), type predicates, and element type definitions.
packages/math, fractional-indexing, laser-pointer, utils
Supporting libraries for geometry math, ordering indices, laser pointer trails, and misc utilities, each independently buildable to ESM.
dev-docs
Docusaurus-based developer documentation site (docs.excalidraw.com) with live code blocks embedding the published package.
A quieter week of refinements, headlined by letting users customize their favorite color swatches.
4 weeksWeek of 2026-08-10
Week of 2026-08-10latest
A quieter week of refinements, headlined by letting users customize their favorite color swatches.
Week of 2026-08-03
The busiest week of the month, centered on shipping a new bucket fill tool with eyedropper support plus a batch of UI and stability fixes.
Week of 2026-07-27
A small week focused on text-to-arrow binding and input validation improvements.
Week of 2026-07-20
The marquee week for drawing features, with freehand sketches now auto-converting into clean shapes.
Over the past month, Excalidraw's development focused heavily on drawing and coloring tools, with the biggest additions being a new bucket fill feature (with eyedropper support) and automatic shape detection that turns freehand drawings into clean shapes. Alongside these headline features, the team shipped a steady stream of polish and bug fixes: better text handling on arrows, improved selection tools, mobile-friendly UI adjustments, and crash prevention. The final week was quieter, mostly small refinements like color input validation and translation updates.
Week by week
2026-08-10A quieter week of refinements, headlined by letting users customize their favorite color swatches.latest4 changes
Feature
Customizable color top picks
Users can now choose which colors appear as their quick-pick favorites in the color picker.
Fix
Lasso selection respects box mode
The lasso tool now correctly distinguishes between selecting items fully inside the drawn area versus anything it touches.
Fix
Localized sign-in menu labels
The 'Sign up' and 'Sign in' menu buttons are now translated into all supported languages instead of showing English everywhere.
Chore
Translation updates
Community-contributed translations from Crowdin were synced into the app.
2026-08-03The busiest week of the month, centered on shipping a new bucket fill tool with eyedropper support plus a batch of UI and stability fixes.6 changes
Feature
Bucket fill tool
A new paint-bucket-style tool lets users fill enclosed shapes and regions with a chosen color.
Feature
Eyedropper improvements
The color-picker eyedropper received fixes and improvements for smoother color sampling.
Feature
Viewport status frame
A new on-screen status frame component was added, including clickable labels, mobile layout fixes, and an option to show collaborators without deduplicating them.
Fix
Arrow editing fixes
Several crashes and glitches when editing arrows with attached text were fixed, including flickering outlines and issues after pasting arrows.
Fix
Selection and capture fixes
Custom tools now properly track pointer input, and container-plus-text pairs stay correctly ordered when reopening saved files.
Chore
Translation updates
Crowdin translations were refreshed across the app.
2026-07-27A small week focused on text-to-arrow binding and input validation improvements.4 changes
Feature
Bind text to hovered arrow endpoint
Labels can now attach directly to whichever end of an arrow you hover over.
Feature
Invalid hex color warning
Typing an invalid hex color code now shows a clear error message instead of failing silently.
Fix
Escape key fix on macOS
Pressing Escape while a dialog is open no longer accidentally exits fullscreen mode on Macs.
Fix
Autoresize handle threshold
The auto-resize handle stays visible longer before hiding, making it easier to grab.
2026-07-20The marquee week for drawing features, with freehand sketches now auto-converting into clean shapes.6 changes
Feature
Draw-to-shape auto-detection
Freehand drawings are now automatically recognized and converted into tidy shapes like rectangles and circles.
Feature
Autoshape text and line improvements
Text and line handling within the autoshape feature were refined for better results.
Fix
Eyedropper preview overflow
The eyedropper's color preview no longer spills outside the visible screen area.
Fix
Diamond hit test shortcut
Clicking near a diamond shape now registers more reliably.
Fix
Dangling deleted bound text
Deleted text that was bound to a shape no longer leaves stray remnants behind.
Fix
Focus point transition fix
Fixed a bug where the camera focus point was lost during certain zoom transitions.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 1444 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required