The core data structure of the Compose runtime is the Slot Table. It is a gap buffer implementation that acts as a linear array capable of insertion and deletion at arbitrary positions.
Title: Jetpack Compose Internals: From @Composable to Pixel
Subtitle: Understanding the Compiler, Runtime, and Layout Engine
Target Audience: Senior Android Engineers / Architects jetpack compose internals pdf download
Instead of 50 pages of prose, internalize this single sequence diagram (save it as a .png if you like): The core data structure of the Compose runtime
User clicks Button
↓
MutableState.value = newValue
↓
Snapshot.sendApplyNotifications()
↓
Composer.invalidate(scope)
↓
Recomposer.scheduleRecompose()
↓
[on next frame] Recomposer.performRecompose()
↓
Composer.startRecompose(true)
↓
Your @Composable function (maybe skipped via $changed mask)
↓
Composer.endRecompose()
↓
Difference found? → LayoutNode.markDirty()
↓
AndroidComposeView.dispatchDraw() → frame rendered
Memorize that, and you’re ahead of 90% of Compose developers. Groups: The table is organized into "groups," representing
As of 2026, Compose is no longer "new." It is mature. Recent updates to the internals include:
Ensure the PDF you download is dated 2025 or later. An internals guide from 2022 is dangerously outdated.