whatisgithub

What is mavericks?

airbnb/mavericks — explained in plain English

Analysis updated 2026-06-26

5,933KotlinAudience · developerComplexity · 3/5Setup · easy

In one sentence

Airbnb's Android framework for building app screens faster, each screen holds its data in a state object, a ViewModel updates it, and the view redraws automatically whenever something changes.

Mindmap

mindmap
  root((mavericks))
    What it does
      State-driven screens
      Automatic redraws
      ViewModel pattern
    Tech stack
      Kotlin
      Android
      Gradle
      Maven Central
    Use cases
      Android screen building
      State management
      Airbnb-scale apps
    Audience
      Android developers
      Mobile engineers
      Kotlin developers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Build Android app screens with automatic redraws whenever the underlying data changes, without writing manual update logic

USE CASE 2

Separate your screen's data from its display code using a ViewModel and a plain state data class

USE CASE 3

Migrate an existing Android project to a predictable state-driven architecture by adding a single Gradle dependency

USE CASE 4

Build features the way Airbnb's mobile team does internally, using a battle-tested pattern from production use

What is it built with?

KotlinAndroidGradle

How does it compare?

airbnb/mavericksz-huang/innertunekotlin/kotlinx.serialization
Stars5,9335,9365,912
LanguageKotlinKotlinKotlin
Setup difficultyeasyeasymoderate
Complexity3/52/52/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 30min
License information was not provided in the explanation.

So what is it?

Mavericks is an Android app framework built by Airbnb and used internally for nearly all product development across their mobile app. It was previously called MvRx. The goal stated in the README was not to introduce another architecture pattern for its own sake, but to make building Android screens faster and less tedious. The framework centers on a pattern where each screen has a state object, which is a plain data class holding everything the screen needs to display. A ViewModel holds that state and exposes functions that can update it. A Fragment or other view layer listens for state changes and redraws itself whenever the state changes. This keeps the data and the display logic clearly separated. The code example in the README shows the pattern in a few lines: a data class called HelloWorldState with a title field, a ViewModel with a function that appends an exclamation mark to the title, and a Fragment that calls invalidate whenever the state changes and reads the latest state to update its views. Installation is done by adding a single line to your Android project's Gradle build file. The README is brief and points to a separate documentation site for full details, guides, and advanced usage. Legacy documentation for version 1.x remains in the GitHub wiki for teams that have not yet migrated to the current version. Mavericks is written in Kotlin and published to Maven Central under the package name com.airbnb.android:mavericks.

Copy-paste prompts

Prompt 1
Show me how to build a simple Android screen using Mavericks, a state data class, a ViewModel that updates it, and a Fragment that redraws when state changes.
Prompt 2
I have an existing Android Fragment that manually updates views. Refactor it to use the Mavericks pattern with a state object and a ViewModel.
Prompt 3
Add Mavericks to my Android project's Gradle build file and set up the initializer so it works with my Application class.
Prompt 4
My Mavericks ViewModel needs to load data from a network call and update the state when it completes. Show me the correct pattern for async state updates.
Prompt 5
Explain the difference between Mavericks 1.x and 2.x and what I need to change when migrating a project from the old MvRx API.

Frequently asked questions

What is mavericks?

Airbnb's Android framework for building app screens faster, each screen holds its data in a state object, a ViewModel updates it, and the view redraws automatically whenever something changes.

What language is mavericks written in?

Mainly Kotlin. The stack also includes Kotlin, Android, Gradle.

What license does mavericks use?

License information was not provided in the explanation.

How hard is mavericks to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is mavericks for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.