Jorge Castillo
banner
jorgecastillo.dev
Jorge Castillo
@jorgecastillo.dev
Android at Disney+. Author of Jetpack Compose internals.

πŸ‘¨β€πŸ« Compose course composeinternals.com
πŸ“– Compose book jorgecastillo.dev/book
Pinned
🚨 Jetpack Compose Internals Course goes unchained. No more cohorts. No waiting.
Cheapest than ever πŸ”₯

βœ… One time payment
βœ… Lifetime access to all content
βœ… Lifetime access to private Discord community
βœ… Compiler, runtime, slot table, recomposition, more

effectiveandroid.gumroad.com/l/dfedea
Jetpack Compose and Internals course
Award winning course ⭐️⭐️⭐️⭐️⭐️ Master Compose and its internals.Created and delivered by Jorge Castillo: Disney+ engineer, ex-Twitter (X), author of the Jetpack Compose Internals book. Jorge has led ...
effectiveandroid.gumroad.com
When the next frame finally starts, the Recomposer wakes up and recomposes everything flagged as invalid, so it applies all changes in one go.

No matter how many state updates happened before, you still get one recomposition pass per frame πŸ’―
January 8, 2026 at 12:08 PM
While Compose is waiting for that frame, more state changes can happen, and more invalidations pile up. All the changes are ultimately coalesced.
January 8, 2026 at 12:08 PM
That is where withFrameNanos comes in. Calling withFrameNanos means β€œwake me up at the start of the next frame”. On Android this is wired into Choreographer, so it lines up perfectly with the rendering pipeline.
January 8, 2026 at 12:08 PM
Compose is smarter than that. When state changes, the snapshot system marks things as invalid and notifies the Recomposer. But the Recomposer doesn’t jump into recomposition right away. It goes: β€œCool. I’ll deal with all this on the next frame.”
January 8, 2026 at 12:08 PM
Compose does not really β€œreact” to state changes immediately. State can change at any time. If Compose tried to recompose every single time something changed, it would be a big performance mess.
January 8, 2026 at 12:08 PM
Something not many devs are familiar with is how Compose batches state changes and stays in sync with the rendering pipeline πŸ‘‡
January 8, 2026 at 12:08 PM
iOS devs explaining the complexities of device fragmentation to Android devs
January 2, 2026 at 4:22 PM
The most impactful change in Android development in the recent years has been Jetpack Compose.

It is a clear statement on how even the most foundational and established things can be changed if there is a good reason.

And how an opinionated team can sometimes help pushing a full industry forward.
January 2, 2026 at 6:54 AM
Yep
January 1, 2026 at 9:41 PM
Some of the diagrams in the Compose internals cohort course 🀩

These took a while to create, but really had a blast. There is some beauty on turning complex concepts into intuitive diagrams.
January 1, 2026 at 8:48 AM
If you are starting a new Android app in 2026, pick Jetpack Compose.

No reason to pick Views anymore.
January 1, 2026 at 8:43 AM
People asked for the code, here it is composeinternals.com/agsl-shaders...
December 29, 2025 at 4:05 PM
I don’t think many people are aware of how many things you can do with shaders.

We are too focused on day to day examples and APIs and almost nobody explores much beyond that.

You can do delightful things if you put just a bit of interest.
December 29, 2025 at 10:01 AM
course discount has been performing great. It was meant to end on Xmas day, but quite a few people asked yesterday and today about it and I see no reason to not extend it until end of the year.

Price will get back to normal on Jan 1.

effectiveandroid.gumroad.com/l/dfedea/ddw...
December 27, 2025 at 2:04 PM
Take it easy, keep adapting based on actual needs. If you eventually hit a wall you’ll quickly know what you need to learn. Then go ahead and learn it.

Trust yourself a bit, we are not that dumb
December 27, 2025 at 11:42 AM
It has never been possible nor realistic to learn all the tools, don’t worry. Almost nobody does that anyway.

It just feels that way because there are lots of people using different things out there. You just happen to see a very diverse group in your timeline.
December 27, 2025 at 11:42 AM
Android devs milliseconds after typing β€œgradle build”
December 26, 2025 at 7:37 AM
Liquid Glass shader in Jetpack Compose using AGSL ✨
December 24, 2025 at 3:53 PM
I’ll be 50 in a couple years. Time flies man
December 24, 2025 at 2:11 PM
Best part of life just started!
December 24, 2025 at 9:19 AM
I’m 40 now. Some people love to say there is a max age to be a developer.

Hehe, nope. πŸ™‚β€β†”οΈ
December 24, 2025 at 7:55 AM
One more Jetpack Compose + AGSL warping effect shader
December 23, 2025 at 5:15 PM
Reposted by Jorge Castillo
The Book of Shaders is a good starting point on GLSL... there is extremely little difference from there to AGSL: mostly where the origin is, how colour spaces are handled, and some keywords
December 23, 2025 at 5:04 PM
You can do cool things with shaders in Compose using RuntimeShader and AGSL (Android Graphics Shading Language).

Here is a warping effect shader πŸ˜΅β€πŸ’«

This code runs directly on the GPU using Android's RenderEngine.
December 23, 2025 at 4:30 PM
Strong skipping has been enabled by default for a while in Compose, yet official docs still say things like unstable params make Composables not skippable.

Very confusing if you ask me, especially for people starting with Compose.

developer.android.com/develop/ui/c...
December 23, 2025 at 3:10 PM