
Radiography
https://github.com/block/radiography- Category
- Developer Tools
- Rank
- No. 749Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- block
- GitHub
- 899 stars
- Latest release
- v2.10
- Date
About
Text-ray goggles for your Android UI. Print the view hierarchy or Jetpack Compose tree as a string for debugging and bug reports.
What it does
Radiography inspects a running Android app’s windows and walks their logical UI nodes. It produces an indented text tree containing details such as dimensions, identifiers, visibility, focus, selection, text length, and Compose semantics. Scans can cover every app-owned window, the focused window, one view, or tagged Compose content.
Why it's ranked here
Its strongest feature is controlled, readable diagnostics from live UI state. Scope selection, composable tags, combined filters, custom attribute renderers, and raw hierarchy access make it useful beyond simple printing. Privacy-aware defaults strengthen the case: text values stay excluded unless the caller explicitly includes them.
What's good
The default output captures useful state without exposing text content, while an explicit option can include and truncate text. Filters remove whole subtrees by Android identifier or Compose test tag. Custom renderers append domain-specific attributes. Raw nodes expose children, modifiers, semantic configurations, geometry, and Compose call-chain information for programmatic checks.
Tradeoffs
Compose support is experimental and depends on the tooling library. Internal Compose changes can prevent hierarchy rendering until Radiography or the dependency changes. Background-thread scans move work to the view’s looper and stop waiting after five seconds. Filtering a node also removes every descendant. Including actual text can expose personally identifiable information.
How to use it well
Use it in Android debugging, automated checks, and bug-report collection when a compact structural snapshot explains UI state better than prose. Keep the privacy-preserving renderers as the default, narrow scans to relevant windows or tags, and add custom attributes only when they answer recurring questions. It does not provide a visual image of the rendered screen.
Technical notes+
radiography/src/main/java/radiography/Radiography.kt resolves roots through ScanScope, switches traversal to each Android root’s looper when needed, waits up to five seconds, catches failures, and renders filtered nodes into a StringBuilder. radiography/src/main/java/radiography/ScannableView.kt models Android and Compose nodes and exposes children as Sequence<ScannableView>; Compose nodes also carry geometry, modifiers, semantics, and call groups. radiography/src/main/java/radiography/ViewStateRenderers.kt supplies PII-excluding and PII-including renderer lists. stoic-plugin/src/main/kotlin/Main.kt adds a Stoic command surface with --pii and --focused options.
Observed
- License
- Apache License 2.0
- Primary language
- Kotlin
- Packaging
- Published as the Maven dependency com.squareup.radiography:radiography
- Interfaces
- Android library API and Stoic command plugin
- Platform support
- Android Views, with experimental Jetpack Compose support
- Default privacy behavior
- Default renderers exclude text values and report text lengths
Read from README.md, stoic-plugin/src/main/kotlin/Main.kt, radiography/src/main/java/radiography/Views.kt, radiography/src/main/java/radiography/ScanScope.kt, radiography/src/main/java/radiography/ScanScopes.kt, radiography/src/main/java/radiography/ViewFilter.kt, radiography/src/main/java/radiography/Radiography.kt, radiography/src/main/java/radiography/ViewFilters.kt, radiography/src/main/java/radiography/ScannableView.kt, radiography/src/main/java/radiography/ViewStateRenderer.kt, radiography/src/main/java/radiography/ViewStateRenderers.kt, radiography/src/main/java/radiography/AttributeAppendable.kt, radiography/src/main/java/radiography/ExperimentalRadiographyComposeApi.kt, radiography/src/main/java/radiography/internal/Strings.kt, radiography/src/main/java/radiography/internal/Semantics.kt.
What it can do
Print Android view hierarchy as a string
Android UI view hierarchy → String representation of view hierarchy
Print Jetpack Compose tree as a string
Jetpack Compose UI tree → String representation of Compose tree
Generate debugging output for UI structure
Android UI components → Formatted debug text
Create bug report data from UI hierarchy
Android app UI structure → Bug report text with UI details
Inspect Android UI elements for debugging
Running Android application UI → Detailed UI structure information
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.