← All reportsPublic report

excalidraw/excalidraw

Virtual whiteboard for sketching hand-drawn like diagrams

130k stars TypeScript View on GitHubprofiled 14d ago
Try GitZoid
31PRs this week
11Contributors
1444Deps scanned
0Issues found
01 · Repo overview

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

TypeScriptJavaScriptSCSS/CSS

Frameworks

React 19Vite 5JotaiDocusaurus 2.2 (dev-docs)i18next (browser language detection)Socket.IO client

Datastores

Firebase (Firestore + Storage, see firebase-project rules)Browser localStorageIndexedDB (via idb-keyval)

Infrastructure

Vercel (vercel.json)Docker (Dockerfile, docker-compose.yml)Firebase project config (firebase-project/)Sentry error tracking (@sentry/browser)PWA service worker (public/service-worker.js)Crowdin (crowdin.yml)

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.

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.

03 · Security check

Dependencies and code review

1444 dependencies scanned

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