Technical Documentation

Excalidraw Risk Register

Excalidraw Risk Register

IDRiskLikelihoodImpactMitigationOwner
R-01Upstream releases a breaking change to the <Excalidraw /> prop APIMediumMediumPin exact version; review CHANGELOG on upgrade; Playwright regression suite.Web platform
R-02Malicious .excalidrawlib uploaded by user contains script SVGMediumHighsvg-sanitizer.ts strips scripts, event handlers, javascript: URLs; file-type and magic-byte validation.Security
R-03Scene JSON contains BYOK API key text pasted by userMediumHighScene redaction on save and export; on-save warning banner if a secret pattern is detected.Security
R-04Excalidraw internal API changes break Rafa proposed-change applyMediumMediumRafa only speaks the public serialization envelope; wrapper isolates Excalidraw imperative API.AI
R-05Plan bypass via direct POST /rest/v1/diagramsLowHighServer trigger and RLS enforce plan caps; entitlement checks on every RPC.Backend
R-06Bundle size regressions leak Excalidraw into marketing pagesMediumMediumCI bundle-size budget; verify Whiteboard chunk is dynamic-only.Web platform
R-07Large scene DoS via 100k elementsLowMediumServer-side element cap; client warns above 4k; refuses save above cap.Backend
R-08Cross-user scene access via forged diagram_idLowHighRLS owner_id = auth.uid(); shared diagrams gated by diagram_shares policies.Backend
R-09Excalidraw font licensing changesLowLowFonts remain inside the upstream package; not redistributed.Legal
R-10Rafa applies destructive proposal without checkpointLowHighWrapper snapshots version before apply; UI requires explicit confirm on delete/replace.AI