ScribbleDash
A highly interactive digital canvas drawing app exploring raw Android UI drawing performance in Jetpack Compose.
- Year
- 2025
- Type
- Community Challenge
The Overview
ScribbleDash is a drawing app that pushes Android's native drawing APIs through Jetpack Compose. Game modes like "One Round Wonder" raise the difficulty round by round, with real-time gesture capture, vector stroke rendering, and an Undo/Redo history stack.
The Challenge
Drawing in Compose means recalculating Bezier paths on every pointer event; without a careful rendering strategy, the draw loop stutters.
It gets harder once you hold paths in memory for an Undo/Redo stack of custom brush strokes — long sessions hit out-of-memory errors fast — while keeping the package layout clean enough to extend later.
Architecture & Technical Decisions
The drawing surface is a native Jetpack Compose Canvas in a layered, multi-package layout.
Instead of redrawing the whole canvas every frame, strokes are cached as Path objects so deep recomposition only fires when it has to. The Undo/Redo state keeps the last few strokes for fast cycles. The app is single-module, but packages like features/gamemodes/ and features/draw/ stay horizontally isolated, so a new game mode drops in without leaking logic across boundaries. Koin handles DI, keeping each game mode's state decoupled from the Compose UI.
Impact & Results
- A steady 60 fps draw loop, from narrowing recomposition scope under high-frequency pointer events.
- An Undo/Redo engine that holds up across long sessions without runaway heap growth.