This roadmap describes the direction of DrawBox over the next 12–18 months. It is intended to give users, contributors, and partners a clear view of where the library is headed, why, and how to get involved.
The roadmap is a living document. Dates are targets, not commitments — major shifts are reflected in GitHub Milestones and announced in release notes.
DrawBox aims to be the canonical drawing SDK for Compose Multiplatform — a small, focused, accessible, and well-benchmarked canvas layer that any annotation, whiteboard, diagramming, or design tool can embed across Android, iOS, Web (Wasm), and Desktop.
We prioritize SDK primitives over end-user products: a strong foundation other tools depend on, rather than a feature-rich drawing application. The same primitive — a versioned, editable JSON scene format — is what makes DrawBox uniquely positioned to be the target format for LLM- and agent-driven drawing generation in the Kotlin ecosystem (see the natural-language drawing milestone below).
Latest published version: 2.1.0-alpha02 (KMP preview)
The 2.x line is a full rewrite on Kotlin Multiplatform with shared drawing logic and an MVI architecture. The 2.0 public surfaces (DrawBoxController, Mode, Intent, Event, State) are frozen and extended-only; 2.1.x adds image, text, and pen-pressure surfaces incrementally.
Goal: promote the frozen 2.0 surfaces to a stable 2.0.0 release and publish the accompanying migration path from 1.x.
- Public API freeze for
DrawBoxController,Mode,Intent,Event, andState— done, extended only in2.1.x - Migration guide from 1.x (Android-only) to 2.x (KMP) — published in CHANGELOG.md
- Public WASM playground at
akshay2211.github.io/DrawBox/sample/— live - Snapshot-based regression tests across platforms — Roborazzi harness landed for JVM; extend to Android and iOS
- Dokka API reference published alongside the user docs
Goal: make DrawBox the first KMP drawing SDK with serious accessibility and measurable cross-platform performance.
- Accessibility pass
- Semantic descriptions for the canvas, tool controls, and exported drawings
- Keyboard-only drawing and tool selection
- Screen reader support on Android (TalkBack), iOS (VoiceOver), and Web
- Performance benchmarks
- Frame time, gesture latency, and memory profile published per platform
- Reproducible benchmark harness in
benchmarks/ - Public baselines so regressions are visible
Goal: let third parties extend DrawBox without forking it.
- Pluggable tool API — community-contributed
Modes as separate artifacts - Pluggable exporters — beyond SVG/PNG/JSON (e.g. PDF, DXF)
- Stable extension contracts with semantic versioning
- A first example community plugin to validate the surface
Goal: turn structured visual intent (natural language, LLM tool calls, agent output) into editable DrawBox scenes — not throwaway raster images.
This is a Kotlin ecosystem gap: Compose Multiplatform apps that want to embed LLM-driven diagram or sketch generation currently either (a) render server-side SVG and lose editability, or (b) hand-roll their own translation layer. DrawBox already has the primitive an AI layer needs: a versioned, human-readable JSON scene format that round-trips through the SDK.
DrawBoxAioptional module — separate artifact so the core library stays offline and vendor-free.AiDrawingProviderinterface — provider-neutral; host apps supply their own OpenAI / Anthropic / local-model implementation. Keys, billing, and rate limits never touch the core SDK.- Validated scene output — models return
AiDrawingScene(versioned JSON), which is schema-validated and clamped (element count, coordinates, text length) before insertion. Preview-before-insert is required; the whole generation is a single undo step. - Reference implementations — sample OpenAI and Anthropic providers ship in
samples/, not in the core artifact. - Safety defaults — existing drawings are never sent to a provider without explicit user opt-in; no prompt / key / raw-response logging in the SDK.
See STRATEGY.md for the full design rationale.
Goal: unlock real-time and domain-specific use cases.
- CRDT-based collaborative drawing SDK primitive
- PDF annotation surface
- Reference integrations with adjacent Compose libraries (e.g. rich text, slides)
Work that runs in parallel across all phases:
- Triage and respond to issues within 7 days
- Track JetBrains Compose Multiplatform releases and bug-report blocker findings upstream
- Maintain
CONTRIBUTING.md,good first issuetriage, and quarterly release cadence - Publish a release blog post for every minor version
- Try it: the live WASM sample is at
https://akshay2211.github.io/DrawBox/sample/ - Report: open issues on GitHub — bug reports, feature requests, and accessibility findings are all welcome
- Contribute: see CONTRIBUTING.md. Start with issues tagged
good first issue - Propose: larger changes go through a short RFC in
docs/rfcs/before implementation - Sponsor: see the repository sidebar for sponsorship links
To keep the library small and focused, the following are explicitly not on the roadmap:
- A full vector editor UI — DrawBox stays an embeddable SDK, not an end-user product
- Server-side rendering of drawings
- Native rendering backends other than Compose
If your use case needs one of these, please open a discussion — we may be able to support it via the extensibility surface above.