Jetpack Compose and Kotlin for modern Android apps

Lycrosys team, 1 November 2026, 5 min read

Node.jsPythonapp.get("/leads",async (req, res) => {res.json(leads);});@app.get("/leads")def leads():return find_all()

Jetpack Compose is Google's recommended way to build Android app interfaces, written entirely in Kotlin. For years Android screens were designed in XML layout files and controlled from code, and many apps still work that way. If you are planning a new Android app or updating an old one, it helps to understand what Compose changes and what it costs to adopt.

Kotlin, Compose and the XML view system

A few terms are worth separating.

Kotlin is the programming language Google recommends for Android. It is concise, safer than older Java code in several ways and works alongside existing Java, so older projects can adopt it file by file.

The XML view system is the traditional approach. Developers describe each screen's layout in an XML file, then write Kotlin or Java code that finds each element and updates it when data changes. It is mature and well understood, but screens often need a lot of code to keep the display in step with the data.

Jetpack Compose replaces XML layouts with Kotlin functions. Developers describe what the screen should show for the current state, and Compose redraws the right parts when that state changes. This declarative style is similar to SwiftUI on iOS and to React or Flutter elsewhere.

Compose vs XML views compared

Factor Jetpack Compose XML view system
Where the UI lives Kotlin code XML files plus Kotlin or Java code
Updating the screen Automatic when state changes Manual updates in code
Amount of code Usually less Usually more
Previews and theming Built-in previews, flexible theming Layout editor, styles and themes
Custom animations Simpler to express Possible but more verbose
Existing libraries and examples Growing fast, now widely available Very large, built over many years
Mixing with the other Can host XML views Can host Compose screens

Benefits of Jetpack Compose for Android apps

For most new Android apps, Compose is the sensible starting point. The practical benefits are easy to explain to a non-technical stakeholder.

  • Faster development of standard screens. Lists, forms, cards and navigation take less code, so features reach testing sooner.
  • Fewer display bugs. Because the screen is driven by data, it is harder to show outdated information after something changes.
  • Easier design systems. Colours, typography and reusable components can be defined once in Kotlin and applied everywhere, which helps keep a branded app consistent.
  • Better fit with current Android guidance. Google's newer samples, tools and Material Design components focus on Compose, so your team works with the platform's direction rather than against it.
  • Reusable skills. The same declarative thinking applies to Compose Multiplatform, which can share interface code with other platforms if that becomes useful later.

When the XML system still makes sense

The older view system is still fully supported, and switching has a cost.

  • Large existing apps. If an app has many stable XML screens, rewriting them all rarely benefits users. Adding new screens in Compose is usually the better plan.
  • Specialised views. Some older third-party components, maps, video players or custom drawing code were built for views. Compose can host them, but it adds a little complexity.
  • Team experience. A team that has never used declarative UI will need time to learn how state and recomposition work. Poorly managed state can cause sluggish screens in any framework.
  • Very old devices. Check the minimum Android version your audience needs and confirm the Compose libraries support it.

Moving an existing app to Compose

Compose and XML views can share one app, and screens can be converted one at a time. A common approach looks like this.

  1. Set up a shared theme in Compose that matches the current app's colours and fonts.
  2. Build all new screens and features in Compose.
  3. Convert old screens when they need redesign or major changes anyway.
  4. Leave stable, rarely touched screens alone until there is a reason to change them.

This keeps the app shippable at every step and avoids a long freeze while a rewrite happens.

How to choose

Answer these questions before your team writes code.

  • Is this a new app? Start with Kotlin and Jetpack Compose unless you have a specific reason not to.
  • Do you have a large XML codebase? Keep it, and adopt Compose for new work.
  • Do you need both Android and iOS? Compare native development with cross-platform options first. Our article on SwiftUI vs UIKit covers the iOS side of a native build.
  • What does your team know? Budget some learning time if Compose is new to them, and make sure someone reviews state handling early.
  • Which devices must you support? Confirm the minimum Android version against the libraries you plan to use.

Frequently asked questions

Is Jetpack Compose ready for production apps?

Yes. Compose is stable and is Google's recommended toolkit for building Android interfaces. Many apps in the Play Store use it fully or in part.

Do we have to rewrite our app to use Compose?

No. Compose can sit inside an existing XML-based app, and XML views can be placed inside Compose screens. Most teams migrate gradually as screens change.

Is Kotlin required for Jetpack Compose?

Yes. Compose is written for Kotlin. Existing Java code can stay in the project, but the Compose screens themselves are written in Kotlin.

If you are planning a new Android app or modernising an older one, our mobile app development team builds with Kotlin and Jetpack Compose and can plan a safe migration path.

Tell us what you want to build

Chat on WhatsApp