On this page
Overview
Mavericks is an Android MVI framework from Airbnb. Screen data lives in MavericksState, MavericksViewModel updates it through setState, and Fragment or Compose UI observes the resulting state.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Update screen state through immutable State and ViewModel
Screen data is collected in a MavericksState data class, and MavericksViewModel creates new states through setState and copy, centralizing state transitions in the ViewModel layer.
Best fit
Fits Android screens with growing state and asynchronous behavior
Applications can use one convention for the source of truth and state updates when screens combine multiple values, API results, and user events. Mavericks builds on Android Jetpack and Kotlin Coroutines.
Sources: [3]
Before adoption
Initialize the framework and define boundaries with existing architecture
Setup includes the Mavericks dependency, connecting a LifecycleOwner or view layer, and calling Mavericks.initialize(this) from the Application. Define migration boundaries when existing ViewModel, navigation, or dependency-injection responsibilities overlap.
Official sources
- [1]airbnb/mavericks — GitHub repository(2026-10-06)
- [2]Mavericks 3.1.1 — README(2026-10-06)
- [3]Mavericks 3.1.1 — Documentation overview(2026-10-06)
- [4]Mavericks 3.1.1 — Setup(2026-10-06)
- [5]Mavericks 3.1.1 — Jetpack Compose(2026-10-06)
- [6]Mavericks 3.1.1 release(2026-10-06)
- [7]Mavericks Apache-2.0 license(2026-10-06)
Supplemental curator note
Mavericks centralizes screen data in immutable State so complex update paths are easier to trace. Review boundaries with existing ViewModels, navigation, and dependency injection, and start with state-heavy screens when evaluating adoption.
Try it in 3 steps
- 1
Add Mavericks 3.1.1
Add the reviewed stable release to the Android application dependencies.
implementation("com.airbnb.android:mavericks:3.1.1") - 2
Connect the view lifecycle with MavericksView
Follow the second setup step and implement MavericksView on the existing base Fragment.
abstract class BaseFragment : Fragment(), MavericksView - 3
Initialize Mavericks from the Application
Initialize Mavericks once from Application.onCreate before using MavericksViewModel and state subscriptions.
override fun onCreate() { super.onCreate() Mavericks.initialize(this) }
Growth
Growth trends · Last 30 days
5,926 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 2
- Open PRs
- 4
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
- Stars
- 5,926
- Forks
- 510
- Watchers
- 100
- Open issues
- 57
- Contributors
- 64
- Owner type
- Organization
- Primary language
- Kotlin
- License
- Apache-2.0
- Repository last updated
- Sep 25, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Glide35,020 Stars
2 shared tag(s) · 2 shared category(s)
load Android images, GIFs, and video stills with caching and resizing in one pipeline
Java - Avalonia31,625 Stars
2 shared tag(s) · 2 shared category(s)
build cross-platform C# and XAML interfaces for desktop, mobile, and WebAssembly from one .NET UI framework
C# - Kotlin53,479 Stars
2 shared tag(s) · 1 shared category(s) · Same language
keep Java interoperability while extending one language from JVM to Android, iOS, desktop, and web
Kotlin - LeakCanary30,005 Stars
2 shared tag(s) · 1 shared category(s) · Same language
trace retained Android objects to the references causing memory leaks
Kotlin - Circuit1,857 Stars
4 shared tag(s) · 2 shared category(s) · Same language
separate Presenter, Ui, and Screen on a Compose foundation for Kotlin application state and navigation
Kotlin - Horologist699 Stars
4 shared tag(s) · 2 shared category(s) · Same language
fill common Wear OS gaps with libraries for media, volume, pickers, DataLayer, and more
Kotlin
Report incorrect information
Tell us if any listing information is incorrect or outdated.