all speakers

Vinay Gaba

Vinay Gaba

Android @ Airbnb

Vinay is a Google Developer Expert for Android and has been building Android apps since 2011. He spends a lot of his time playing with Jetpack Compose and is the creator of resources like JetpackCompose.app and Learn Jetpack Compose By Example.

He’s a Technical Lead at Airbnb and works on the UI Systems team that's responsible for maintaining the Design System and UI Infrastructure . While at Airbnb, he authored and open-sourced Showkase, a popular library for visualizing, discovering and screenshot testing UI components built using Jetpack Compose.

Prior to Airbnb, Vinay worked at Snapchat & Spotify and got his MS in Computer Science from Columbia University. He likes to spend his weekends working on his side projects, surfing and making elaborate travel plans.

Showkase: Automated UI Infrastructure in Jetpack Compose using KSP

Declarative UI frameworks encourage the creation of reusable components that can be used in different parts of the app. We all know that reusability is a good engineering practice but what often ends up happening is a little more nuanced:

  • As developers add new UI components, the codebase often ends up with hundreds of components that are hard to visualize.
  • Discovery is hard and there is no easy way to search for all your components. As a result, your codebase often ends up with duplicate components that offer similar functionality.
  • The same problems extend to other aspects of your design system like colors, typography, icons, etc.
  • In order to get around this, most mobile teams build their version of a “Component Browser” that lets you visualize your design system. This is often maintained manually with little to no tooling around it.

In order to solve these problems for our team and for the broader Android community, we (Airbnb) built and open-sourced Showkase. Showkase is an annotation-processor based Android library that helps you organize, discover, visualize and automatically screenshot test Jetpack Compose UI elements.

In this talk, we will dive deeper into how we used a KSP based system to solve the problems listed above. We will look into the internals of Showkase and how all this "magic" works. Lastly, we'll look at what to expect from the next few versions of Showkase and how we plan to extend it.

Github - https://github.com/airbnb/Showkase