top of page
droidcon+icon.png

7-9 OCT. 2026

BERLIN

DroidCon_icon_rotatet.png
Anita_Singh_edited.jpg

( SPEAKER )

Fábio Carballo

Software Engineer

Meta

I have been building Android apps for over ten years, and for the last few I have been working my way down the stack into how UI frameworks actually work. Most of my time now goes into the internals of Litho and Jetpack Compose, and into the harder question underneath both: why a screen is slow, and how you prove it rather than guess.

Session

Composing Ahead: Background Composition in a RecyclerView

Around two years ago, we started evaluating how Jetpack Compose would behave in one of Meta’s most performance-sensitive Android UI surfaces: Instagram Feed. Feed was built around a RecyclerView hosting Litho units, where Litho is Meta’s in-house declarative UI framework. Replacing individual units with Compose let us compare both approaches inside the same scrolling system, without changing the whole surface at once. That setup exposed a specific performance difference. Litho could prepare much of a row off the main thread. Our initial Compose integration used one ComposeView per view holder, so a row’s first composition often happened close to when it was needed during scroll. The result was a measurable scroll and app start regressions, and the question became how much of that cost we could move earlier or off the main thread. This session walks through the techniques we used to explore that question: precomposition with existing Compose APIs, different approaches to schedule work, and later background composition as newer APIs became available through collaboration with Google. On one path, we took a scroll regression above 30% and brought it to neutral. Attendees will leave with a practical model for where precomposition helps, where it falls short, and how to measure whether Compose performance work actually improves a real scrolling surface.

Session

From Trace to Fix: Framework-Aware AI for Android UI Performance

Modern AI agents can analyze large volumes of Perfetto trace data in parallel and uncover potential bottlenecks, but raw traces alone do not provide the framework knowledge needed to explain why an Android UI is slow. This talk presents a framework-aware optimizer that combines deterministic trace analysis with knowledge of Jetpack Compose, Android Views, and Litho to identify issues such as unnecessary recompositions, slow view traversals, and missed component reuse, then connect them to actionable code fixes. Attendees will learn how to combine a shared Perfetto analysis layer with framework-specific plugins and trust gates. Through practical examples, they will see how to turn trace signals into testable hypotheses, map them to source code, verify fixes with before-and-after traces, and recognize when the available evidence is not strong enough to reach a reliable conclusion.
bottom of page