# Announcing Jetpack Compose Mechanisms: The Book and Course on How Compose Actually Works

DevFeed: [Announcing Jetpack Compose Mechanisms: The Book and Course on How Compose Actually Works](<https://devfeed.tech/articles/announcing-jetpack-compose-mechanisms-the-book-and-course-on-how-compose-actually-works-25925.md>)

Original publisher: [Read original article](<https://skydoves.medium.com/announcing-jetpack-compose-mechanisms-the-book-and-course-on-how-compose-actually-works-23f5c29016a9?source=rss-9bb203a4ab2e------2>)

Author: Jaewoong Eum

Published: 2026-06-21T01:38:50Z

Content type: article

Language: en

Sources: [Stories by Jaewoong Eum on Medium](<https://devfeed.tech/sources/stories-by-jaewoong-eum-on-medium.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [.env](<https://devfeed.tech/topics/dotenv.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-compose](<https://devfeed.tech/tags/android-compose.md>), [article](<https://devfeed.tech/tags/article.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-ui](<https://devfeed.tech/tags/compose-ui.md>), [course](<https://devfeed.tech/tags/course.md>), [developer](<https://devfeed.tech/tags/developer.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

## AI overview

This developer article explains how Jetpack Compose works beneath the @Composable function. It examines compiler-generated function signatures, restart groups and skip checks, and how remember stores values by position in the runtime slot table. It also introduces a book and companion course covering these mechanisms.

## Source excerpt

You hit a recomposition that made no sense. You opened the function, read it twice, and still could not see why it ran again. Maybe you added a remember, shuffled a parameter, and it went away, and you never learned why. Every Compose developer has lived some version of that moment. This post is about the question you quietly moved past: what is actually happening under that @Composable function? In this article, you'll look at three of those puzzles up close, the function that is not the function you wrote, a value that survives by position, and a screen that looks clean while it burns frames. Then you'll see what the book built to answer them covers across its four parts, and how the companion course turns that reading into practice. The gap between using and understanding Most developers know how to use Compose. Far fewer know what runs underneath a @Composable function, and that gap stays invisible until the day a screen recomposes more than it should, a type refuses to skip, or a list drops frames during a scroll. At that point the usual advice runs out, and you are left guessing at a system you cannot see. Here is the kind of thing worth being able to see. You write this: https://medium.com/media/24487ffb0b09b137a227ad928968b886/href The compiler rewrites the signature to fun Greeting(name: String, $composer: Composer?, $changed: Int), wraps the body in a restart group, and adds a skip check that can bypass the entire function when name has not changed since the last composition. Every part of that rewrite has a reason. Once you can read the output, recomposition stops being something that happens to you and becomes something you can trace. Where does a remembered value actually go? You call remember { mutableStateOf(0) } dozens of times a day and trust that the value comes back. But where does it actually go? Not into a variable, not into a map, not into a field on your composable. https://medium.com/media/c6aa8065dea93696c4a4bb2e7bbb27ee/href Because remembe