Showkase: visualiza y organiza tus UI Compose fácilmente
¿Qué es Showkase?
Showkase es una librería Android basada en annotation processing que te ayuda a organizar, descubrir, buscar y visualizar elementos de UI construidos con Jetpack Compose. Genera automáticamente un navegador visual donde puedes explorar tus componentes composables, colores y tipografías.
Al detectar @Composable
, @ShowkaseColor
o @ShowkaseTypography
, Showkase genera vistas alternativas (modo oscuro, texto escalado, RTL, etc.), lo que permite detectar problemas visuales durante el desarrollo.
¿Por qué usarlo?
- Cuando tu base de UI crece, los componentes se vuelven difíciles de encontrar y reutilizar, lo cual puede provocar duplicación y baja consistencia.
- Showkase elimina el trabajo manual de construir un “component browser” propio.
- El navegador generado mejora la reusabilidad y consistencia del diseño en todo el equipo.
- Te permite visualizar elementos en múltiples configuraciones sin esfuerzo adicional, acelerando el ciclo de desarrollo.
- Soporta documentación KDoc, búsqueda por nombre o grupo, y multi-módulo.
Instalación
✅ En tu libs.toml
(Version Catalog)
[versions]
showkase = "1.0.5"
[libraries]
showkase = { group = "com.airbnb.android", name = "showkase", version.ref = "showkase" }
showkase-annotation = { group = "com.airbnb.android", name = "showkase-annotation", version.ref = "showkase" }
showkase-processor = { group = "com.airbnb.android", name = "showkase-processor", version.ref = "showkase" }
✅ En el módulo (KTS)
Para incluirlo solo en debug builds (recomendado):
dependencies {
debugImplementation(libs.showkase)
implementation(libs.showkase_annotation)
kspDebug(libs.showkase_processor)
}
Si necesitas que funcione también en release:
dependencies {
implementation(libs.showkase)
implementation(libs.showkase_annotation)
ksp(libs.showkase_processor)
}
Primeros pasos
1. Anota tus elementos UI
Composables:
Si ya usas @Preview
, no es necesario añadir @ShowkaseComposable
. Si no, agrega:
@ShowkaseComposable(name = "Button", group = "Buttons")
@Composable
fun MyButtonTemplate() { ... }
Colores:
@ShowkaseColor(name = "Primary", group = "Palette")
val primary = Color(0xFF6200EE)
Tipografías:
@ShowkaseTypography(name = «Heading», group = «Typography»)
val headingStyle = TextStyle(…)
2. Define el módulo raíz
En tu módulo principal, crea una clase:
@ShowkaseRoot
class RootModule : ShowkaseRootModule
3. Reconstrúyelo y lanza el navegador
Tras compilar, se genera automáticamente Showkase.getBrowserIntent(context)
o createShowkaseBrowserIntent(context)
. Luego:
startActivity(Showkase.getBrowserIntent(this))
Esto lanza la UI browser con todos los elementos anotados.
Nota: si no hay composables o colores anotados, el método getBrowserIntent()
podría no generarse
4. Ignorar previews privadas (opcional)
Si estás utilizando @Preview
en funciones private
, Showkase generará un error al procesarlas, ya que requiere que las composables sean accesibles públicamente. Para evitar esto sin cambiar la visibilidad, puedes añadir la siguiente configuración en tu build.gradle.kts
:
android {
...
ksp {
arg("skipPrivatePreviews", "true")
}
}
Esto le indica a Showkase que ignore las previews privadas durante el procesamiento de anotaciones, evitando errores sin afectar la estructura de tu código.
Ejemplo de uso mínimo
@ShowkaseRoot
class RootModule : ShowkaseRootModule
@ShowkaseComposable(name = "Greeting Card", group = "Cards")
@Composable
fun GreetingCardPreview() {
Card { Text("Hello!") }
}
@ShowkaseColor(name = "Accent", group = "Palette")
val accent = Color(0xFF03DAC5)
@ShowkaseTypography(name = "Body", group = "Typography")
val bodyStyle = TextStyle(fontSize = 16.sp)
...
// En Activity de debug:
startActivity(Showkase.getBrowserIntent(this))
Una vez lanzado, verás una UI que agrupa tus componentes por grupo y nombre, permite búsqueda, y muestra automáticamente variaciones (dark mode, RTL, escalado)…
Conclusión
Showkase es una herramienta poderosa si trabajas con Jetpack Compose y necesitas mantener un catálogo visual de tus componentes, colores y tipografías. Con configuración mínima, genera un navegador que agiliza la detección de errores visuales, mejora la documentación y promueve la reutilización de UI. Ideal para mantener consistencia en proyectos grandes o equipos que usan diseño basado en componentes.
Comentarios