top of page


20 NOVEMBER 2026
BANGALORE


( SPEAKER )
Sagar Malhotra
Android Developer
Sharechat
( SESSION )
The world's premier event for Android developers.
Everyone uses WorkManager for background tasks, but jobs still vanish silently in production. Android developers constantly battle Chinese OEM battery optimizations, constraint conflicts, scheduler confusion, and reboot edge cases that the documentation never prepares you for.
Instead of walking through the internal source code, this circle discussion is a real-world troubleshooting swap. Let's talk about some of our experiences with what actually breaks when your app hits the wild, how to handle aggressive force-stop behaviors, and how to manage threading bottlenecks without killing device performance.
( SESSION )
The world's premier event for Android developers.
Every Compose UI you have ever written is held together by modifiers, yet most of us still treat them as a black box: we chain them, reorder them when the padding looks wrong, and move on. This session opens that box.
We start with two identical composables where only the order of .padding() and .background() is swapped, producing two completely different UIs. To explain why, we follow the code all the way down: how a composable emits a LayoutNode, how the composition tree differs from the layout tree, and how Modifier.then() builds a CombinedModifier - an ordered, immutable linked list of Modifier.Elements that gets applied to a single LayoutNode, in order.
Then we look at why Google rewrote this system. Reading the real androidx source of Modifier.background before and after the migration (plus the AOSP change that introduced it), we will see why doing work inside a Modifier.Element meant redoing that work on every recomposition, and how the ModifierNodeElement + Modifier.Node split fixes it: a cheap element that only knows how to create() and update(), and a long-lived node that lives inside the LayoutNode's NodeChain and survives recomposition.
We finish by writing custom modifiers: a minimal DrawModifierNode built from scratch on stage, then a real one from a production open-source codebase - and why Modifier.composed is usually the wrong tool today.
Key takeaways:
1. Why modifier order changes your UI, explained through the modifier chain and the layout tree instead of trial and error.
2. A precise mental model of Modifier, Modifier.Element, CombinedModifier, ModifierNodeElement, Modifier.Node, LayoutNode and NodeChain, and how they connect.
3. The real cost of the old Modifier.Element design, read straight from androidx source history.
4. A repeatable recipe for writing your own custom modifier with Modifier.Node, including handling changing parameters in update().
5. Why Modifier.composed breaks recomposition skipping, and what to use instead.
bottom of page