ANTIGRAVITY LABJP
Articles/App Development
App Development/2026-07-18Advanced

After Compose-First: Choosing Which View Screens to Migrate, Ranked by Churn Instead of Count

Google has declared Android development Compose-first. Here is how I rank View-based screens for migration using git history rather than screen counts, with the scoring script I actually ran and the three places partial migration quietly duplicates state.

android28jetpack-compose4migration13antigravity435agents129

Premium Article

When I read that Google had declared Android development Compose-first, the first thing on my mind was not the migration steps. It was the ordering.

My wallpaper apps still have View-based screens that have been running unchanged for years. Nothing is broken, so migration has always lost to "not right now." I have made that call many times myself.

But once new APIs and tooling are designed around Compose, the shape of the problem changes. The View side will not break. It just stops having room to grow. The cost of postponing does not spike; it accumulates quietly.

So: which screen goes first? That is the only question this article answers.

What Compose-first actually means for a small team

Compressed down to the part that hurts an indie developer, the declaration says this:

Your View-based screens will not break tomorrow. But the features arriving next will only arrive on one side.

That matters less for "should we migrate" and more for "when is the deadline." And the deadline is not something Google announces. It shows up locally, the moment the next feature you want to build requires a Compose-first API.

Which means migration priority comes from your own roadmap and your own change history — not from a blog post from Mountain View.

Counting screens tells you nothing

My first instinct was to count the View-based screens. It takes about one attempt to see why that fails.

Against a verification tree that mirrors my own layout (3 Activities, 1 Fragment, 1 DialogFragment, 1 settings screen — six screens total), scoring by View dependency alone produced this:

ScreenView dependency
MainActivity3
DetailFragment2
CategoryActivity2
PaywallDialog2
SettingsActivity2
AboutActivity2

Five of six screens tied. That is the expected outcome: dependency only measures how much View API a file touches. It cannot tell PaywallDialog, which sits directly on revenue, apart from AboutActivity, which users open once a year.

Rank by a metric that cannot separate things, and you end up with two options: migrate everything, or migrate nothing. I picked the second one for years, and now I understand why.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
You can turn a vague someday-we-will-migrate backlog into a specific decision about which screen to start on this week
You'll be able to run a churn-based scoring script against your own repository and get a ranked migration order out of it
You'll know the three places partial migration duplicates state, and how to set an exit line using staged rollout numbers
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Antigravity Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

App Dev2026-06-27
Before AI Studio's Gradle and AGP Versions Quietly Break Your Existing App
When you drop an AI Studio-generated Kotlin/Compose screen into an existing Android app, the AGP, Kotlin, and library versions drift and the build breaks silently. Here is how to pin a single source of truth with a version catalog and add a gate that inspects the generated declarations at the import boundary, with measurements and code.
App Dev2026-04-25
Gemma 4 × Antigravity — Complete Guide to On-Device AI for iOS and Android
A hands-on implementation guide for integrating Gemma 4 into both iOS (Core ML) and Android (TensorFlow Lite / AI Core) with Antigravity. Covers model conversion, quantization, battery management, and app store approval.
App Dev2026-03-29
Building Android UI with Antigravity and Jetpack Compose: A Practical Guide
Learn how to supercharge your Android UI development by combining Antigravity IDE with Jetpack Compose. From AI-generated composables and Material 3 theming to performance-optimized lists and type-safe navigation.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →