Skip to content

Repository files navigation

compose-raven

Maven Central License API

On-device debug tools for Jetpack Compose. No USB cable. No Android Studio. No setup code.

Drop it in as a debugImplementation dependency and a floating toolbar appears in your debug builds automatically — powered by androidx.startup. Tap elements, measure spacing, catch recompositions, and verify grid alignment, all on a real device.

debugImplementation("io.github.dracovin:compose-raven:0.1.0-alpha03")

Features

Recomposition Heatmap

Add Modifier.recompositionHeatmap() to any composable and watch it flash on every recomposition. A badge in the corner tracks the count and changes color — green → yellow → red — so heavy recomposers stand out instantly.

Text(
    text = "Count: $counter",
    modifier = Modifier.recompositionHeatmap(showCount = true)
)


Element Inspector

Tag composables with Modifier.ravenInspectable(), then tap them in the overlay to instantly see:

  • Color — sampled directly from the screen pixel
  • Size — exact dp dimensions
  • Position — coordinates on screen
  • Tag & group — your own labels

Double-tap to pin the card so it stays while you scroll or interact. Elements that share a group all highlight together — great for nav tabs, chip rows, or any repeated pattern. The inspector automatically clears when navigating away from the screen.

Box(
    modifier = Modifier
        .size(120.dp)
        .background(Color(0xFF6200EE))
        .ravenInspectable(
            tag = "hero-card",
            group = "cards",
            config = InspectorConfig(highlightColor = Color.Cyan)
        )
)


Ruler

Measure the distance between any two elements without opening Layout Inspector.

  • Tap element 1 → highlighted in pink
  • Tap element 2 → gap or inset lines drawn with dp labels

Gap mode — elements are separate: shows horizontal and/or vertical distance with tick marks. When both axes have a gap, a single combined label (H: 24dp V: 16dp) appears at the line crossing — no overlap.

Inset mode — elements overlap or nest: auto-detects inner/outer and shows all four insets (left, right, top, bottom).

A hint chip at the top guides you through each step. Tap again to reset and start a new measurement. Measurements automatically clear when navigating away from the screen.



Grid Overlay

Draws an 8dp grid with Material Design keylines over the entire screen. Instantly catch misaligned spacing without measuring manually.

Color Keyline
Cyan 16dp
Orange 24dp
ComposeRaven.setGridConfig(
    GridConfig(
        gridSpacing = 8.dp,
        showKeylines = true
    )
)


Installation

Add to your app's build.gradle.kts:

dependencies {
    debugImplementation("io.github.dracovin:compose-raven:0.1.0-alpha03")
}

debugImplementation keeps the overlay out of release builds automatically.

Make sure mavenCentral() is in your settings.gradle.kts:

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
    }
}

That's it. No Application subclass. No manifest changes. No init code.

A draggable FAB appears in the bottom-right corner. Tap it to expand toggle chips for each tool. Drag it anywhere if it overlaps your UI.


Requirements

Min SDK 26
Compile SDK 35
Kotlin 2.0+
Jetpack Compose BOM 2024.09.00+

License

Apache License 2.0


Releases

Packages

Contributors

Languages