Technical Documentation
Excalidraw Performance Results
Excalidraw Performance Results
Measured against the Falcon Flowmira Whiteboard route on a mid-range laptop (Chromium, 4× CPU throttle disabled).
| Metric | Target | Observed |
|---|---|---|
| Whiteboard route JS (gzip) | < 400 KB | ~340 KB (Excalidraw chunk, lazy-loaded) |
| Marketing landing JS (gzip) | < 180 KB | Excalidraw excluded, meets target |
Time to interactive on /board/$id | < 2.0 s | ~1.4 s (cold) |
| Autosave debounce | 1500 ms | wired via autosaveMs prop |
| Scene with 1,000 elements — pan/zoom | 60 fps | 60 fps |
| Scene with 5,000 elements — pan/zoom | > 30 fps | ~40 fps |
| Scene with 10,000 elements — pan/zoom | > 20 fps | ~24 fps (Pro Plus cap) |
| Export 5,000-element scene to PNG (2×) | < 6 s | ~3.8 s |
| Autosave payload for 1,000 elements | < 500 KB | ~180 KB |
Rules that make this hold
- Excalidraw chunk is lazy behind
<ClientOnly>andReact.lazy. - The whiteboard route sets
ssr: false. - Autosave is debounced; scene writes are compressed by Supabase HTTP.
- Image binaries above 200 KB are lifted to Supabase Storage and referenced by signed URL rather than base64.
- Plan caps: Free has no Whiteboard; Pro cap 5,000 elements; Pro Plus 10,000.