Compose Preview в Android Studio кажется магией: поставил @Preview — и UI уже рендерится в IDE. Но под капотом там довольно сложный пайплайн. @Preview — это не поведение, а просто метаданные, которые Studio считывает из байткода. Дальше IDE собирает synthetic XML, прокидывает его в ComposeViewAdapter, поднимает фейковый lifecycle, а сам composable вызывается через reflection с учётом скрытых параметров, которые добавляет Compose compiler. Самое интересное — почему preview иногда “ломается”. В preview-среде есть только имитация Android runtime: например, lifecycle переводится сразу в RESUMED, но попытка запустить ActivityResult специально падает с ошибкой, потому что реальной Activity нет. Ещё статья хорошо показывает, откуда берётся LocalInspectionMode.current == true и как Studio потом связывает отрисованные пиксели с конкретными строками исходников через ViewInfo. Полезный разбор для тех, кто хочет не просто пользоваться Compose Preview, а понимать, почему он работает именно так —