top of page
droidcon+icon.png

20 NOVEMBER 2026

BENGALURU

DroidCon_icon_rotatet.png
Anita_Singh_edited.jpg

( SPEAKER )

Sagar Malhotra

Android Developer

Sharechat

Sagar Malhotra is an Android developer, educator, and content creator with a focus on the internals of the Compose and Android framework. On his YouTube channel he publishes deep-dive breakdowns for a community of 4k+ developers, walking through AndroidX source code to explain how Android actually behaves beneath the API surface, from low-level apis to the dev tools and best architectural practices.

He is a founder and organiser of the D4 Community, an inclusive group for developers, where he organises and speaks at events on modern Software development. He also contributes to some well-known open-source Android projects(Signal-android) and is an active voice in developer forums and technical blogs.

Sagar's goal on stage is to make advanced Android topics genuinely approachable: fewer buzzwords, more real source code, and a mental model the audience can apply the next day.

unconference-roundtable

WorkManager Today: Why Did Your Background Job Actually Stop?

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

Compose Modifiers Under the Hood: Modifier.Node, the Node Chain & Custom Modifiers

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