top of page
droidcon+icon.png

7-9 OCT. 2026

BERLIN

DroidCon_icon_rotatet.png
Anita_Singh_edited.jpg

( SPEAKER )

Chris Banes

Software Engineer

The Trade Desk

Chris is an engineer who has worked on Android UIs for 10+ years, last working as the Technical Lead of the Client UI Android team at Twitter. He previously worked in the Android Developer Relations at Google, where he worked on libraries in Android Jetpack, most notably AppCompat, Design and Palette.

Session

A (N)ode to Modifiers: The Imperative Side of Declarative Compose

Jetpack Compose is a declarative UI toolkit. Modifiers fit nicely into that model: add one to a chain and it adds some behaviour. That sounds simple, right up until you need to build one yourself. Something still has to keep state, respond to layout and drawing, manage resources, and tell Compose when work needs to happen again. For modifiers, Modifier.Node is where much of that imperative work lives. I’ve spent a lot of time in this part of Compose while building Haze, a visual-effects library for Compose Multiplatform. Haze’s public API is a couple of modifiers, but behind them is a rendering system which captures content, tracks coordinates, retains graphics layers, and coordinates source and effect nodes. In this talk, we’ll use real problems from Haze to explore state ownership, lifecycle, ordering, and invalidation. You’ll leave with a better understanding of the imperative machinery underneath Compose’s declarative APIs, and a practical way to decide when Modifier.Node is worth the extra complexity.
bottom of page