Adit Lal

Practical mobile engineering from the trenches — Android, KMP, Compose

  • Home
  • About
Introducing Rebound: context-aware recomposition budgets for Compose

Introducing Rebound: context-aware recomposition budgets for Compose

We had stable data in prod for months. One feature change broke it. We shipped it. Nobody caught it because the recomposition count didn't look unusual — it just looked unusual for that composable. No existing tool makes that distinction. So we built one. Introducing Compose Rebound.

  • Adit Lal
    Adit Lal
11 min read
The Compose Styles API: Building 8 Labs to Master Declarative Styling
Android

The Compose Styles API: Building 8 Labs to Master Declarative Styling

Hands-on exploration of compose-foundation 1.11.0-alpha06's experimental Styles API. 8 interactive labs covering interaction states, transforms, and more.

  • Adit Lal
    Adit Lal
14 min read
Hunting the Play Store Heisenbug: R8, ART Verify Mode, and Firebase Init Races
Android

Hunting the Play Store Heisenbug: R8, ART Verify Mode, and Firebase Init Races

App crashes with "FirebaseApp is not initialized" only in Play Store Pre-Launch Reports? Fresh installs run in ART's interpreted mode, turning a 1ms race into 100ms+. A deep dive into verify mode, R8 Full Mode, and the latch fix.

  • Adit Lal
    Adit Lal
13 min read
Building StickerExplode(Part 1): Gestures, physics, and making stickers feel real

Building StickerExplode(Part 1): Gestures, physics, and making stickers feel real

Part 1 of three. This one covers the gesture system, spring physics, peel-off animation, and die-cut rendering. Part 2 gets into the holographic shader, tilt sensing, haptics, and cross-platform architecture. I built a

  • Adit Lal
    Adit Lal
4 min read
Building StickerExplode(Part 2): The peel-off effect and holographic shimmer

Building StickerExplode(Part 2): The peel-off effect and holographic shimmer

Part 2 of three. Part 1 covers what the app is and the tech stack. This one goes deep on two features. Part 3 is the full end-to-end build. Two things people ask

  • Adit Lal
    Adit Lal
7 min read
Building StickerExplode(Part 3): The full end-to-end build

Building StickerExplode(Part 3): The full end-to-end build

Part 3 of three. Part 1 covers what the app is. Part 2 goes deep on the peel-off effect and holographic shimmer. This one walks through everything else: die-cut rendering, tilt sensors, haptics,

  • Adit Lal
    Adit Lal
10 min read
Introducing Lumen: Transparent Coachmarks for Jetpack Compose

Introducing Lumen: Transparent Coachmarks for Jetpack Compose

Spotlight your UI, not a screenshot of it. Onboarding is where first impressions are made. A well-guided tour can mean the difference between a user who churns after day one and one who

  • Adit Lal
    Adit Lal
2 min read
Compose Performance Bottlenecks: Anti-Patterns That Ship Bugs

Compose Performance Bottlenecks: Anti-Patterns That Ship Bugs

Jetpack Compose is elegant. It's also a landmine. The same reactive model that makes Compose declarative can silently swallow your coroutines, fire effects multiple times, and leave users staring at frozen

  • Adit Lal
    Adit Lal
4 min read
The OkHttp API You're Not Using

The OkHttp API You're Not Using

Your logging interceptor is lying. Here is what actually happens inside OkHttp - and how to finally see it.

  • Adit Lal
    Adit Lal
6 min read
Building a Design System with Jetpack Compose - Andromeda

Building a Design System with Jetpack Compose - Andromeda

Blog series explaining the thought process of how to build a custom design system and what went into building a new Jetpack compose open-source library called Andromeda.

  • Adit Lal
    Adit Lal
4 min read
Learning from failures at scale
Testing

Learning from failures at scale

Some fun and interesting bits of how do we manage a super app at @gojek - What goes into making and maintaining large projects. - How does a developer cater to new features. - What are some of the troubles they face. - How do junior developers collaborate with senior

  • Adit Lal
    Adit Lal
1 min read
Ad-hoc polymorphism in JSON with Kotlin
Json

Ad-hoc polymorphism in JSON with Kotlin

This post describes a way of using the GSON and Mosi library with Kotlin data classes with Polymorphic JSON data with null-safety and default values.

  • Adit Lal
    Adit Lal
5 min read
Kotlin DSL - let's express code in "mini-language" - Part 5 of 5
Dsl

Kotlin DSL - let's express code in "mini-language" - Part 5 of 5

In this post, we take a look at building our test cases by using a simpler language-like DSL. I wanted a “simple” low overhead way of setting up, expressing and testing many combinations of inputs and outputs.The goal is simple , create DSL for expressing the tests clearly and to

  • Adit Lal
    Adit Lal
4 min read
Kotlin DSL - let's express code in "mini-language" - Part 4 of 5
Dsl

Kotlin DSL - let's express code in "mini-language" - Part 4 of 5

In this post, we take a look at building a simpler API to work with Broadcast receiver, which will automatically unregister itself when the Activity pauses, and register again when it resumes. Broadcast Receiver To build this , we first create a class which observes  lifecycle events class Broadcas

  • Adit Lal
    Adit Lal
3 min read
Kotlin DSL - let's express code in "mini-language" - Part 3 of 5
Dsl

Kotlin DSL - let's express code in "mini-language" - Part 3 of 5

In this post , we take a look at some of the use cases of DSLs in Android.

  • Adit Lal
    Adit Lal
4 min read
Kotlin DSL - let's express code in "mini-language" - Part 2 of 5
Dsl

Kotlin DSL - let's express code in "mini-language" - Part 2 of 5

Part 2 of series on how to work with Kotlin DSLs

  • Adit Lal
    Adit Lal
6 min read
Kotlin DSL - let's express code in "mini-language"  - Part 1 of 5
Dsl

Kotlin DSL - let's express code in "mini-language" - Part 1 of 5

In this series , we will take a look at what DSLs are and how to build our custom Kotlin DSLs and apply them to multiple use cases for Android. What is DSLThe concept of DSL or domain-specific language is pretty simple. A domain specific language is a construct that allows

  • Adit Lal
    Adit Lal
2 min read
Kotlin — Quick Shared Element transition trick
Android

Kotlin — Quick Shared Element transition trick

Shared Element Transition : Having a view that moves from one activity to another in a smooth motion. Let’s say you have more than one view to do a shared element transition in your app, how do you do it in Kotlin ? We would like to transition multiple views like

  • Adit Lal
    Adit Lal
2 min read
Adit Lal © 2026
Latest Posts Facebook Twitter Ghost