Compose previews that behave like product tooling
Annotate composables, run KSP, and browse a generated preview catalog with live parameters, grouping, tags, deep links, and browser-level runtime controls.
Compile-time registry
No reflection. Previews are discovered during KSP and emitted as a typed registry your app can host directly.
Interactive parameter panels
Use simple @PreviewParam annotations for common cases, then opt into richer DSL-backed controls when a single preview needs more surface area.
App-level runtime controls
Theme, locale, font scale, density, accessibility state, wrappers, source links, and per-preview overrides live in the browser config rather than ad hoc glue code.
Composeum is optimized for teams that already treat previews as a review and debugging tool, not just as IDE thumbnails.
What you get
Section titled “What you get”- Generated preview discovery from
@ComposePreview - Group and tag browsing with type-based identity
- Favorites and recent previews in the browser UI
- Live parameter editing for strings, booleans, numbers, enums, Compose values, and custom widgets
- Per-group and per-preview configuration overrides
- Deep-linkable preview routes and source code links
@ComposePreview( name = "Primary Button", group = AppPreviews.Components::class,)@Composablefun PrimaryButtonPreview( @PreviewParam(label = "Label") label: String = "Continue",) { PrimaryButton(label = label)}Start with the Android path
Section titled “Start with the Android path”The most direct setup is still Android-first:
- Add
preview-annotationandpreview-kspto the module that declares previews. - Add
preview-runtimeto the host app or debug tools module. - Subclass
ComposeumBrowserActivityand return the generated registry.
Use the pages in this site for the full setup, API shape, and advanced registry/config patterns.