Build a complex Android scrolling screen with many different content types without writing RecyclerView boilerplate code.
Auto-diff your list data so RecyclerView updates smoothly without manually tracking which items changed.
Use annotation-generated models with DataBinding layouts to define your UI items declaratively.
Replace a manual RecyclerView adapter with an EpoxyController to eliminate a category of data-sync bugs.
| airbnb/epoxy | google/tsunami-security-scanner | facebook/buck | |
|---|---|---|---|
| Stars | 8,560 | 8,568 | 8,546 |
| Language | Java | Java | Java |
| Setup difficulty | moderate | hard | hard |
| Complexity | 3/5 | 4/5 | 4/5 |
| Audience | developer | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Annotation processing must be configured in Gradle, generated model classes only appear after the first successful build.
Epoxy is an Android library that Airbnb built and open-sourced to make it easier to build complex scrolling screens on Android phones and tablets. In Android development, scrolling lists of content are managed by a component called RecyclerView. Building screens with many different types of content in that list requires a lot of repetitive code: managing different view types, assigning unique IDs, figuring out what changed when data updates, and rebinding data to visible items. Epoxy handles all of that automatically. The way it works is that you define your individual pieces of content as models. Instead of writing the boilerplate code for each one, Epoxy generates it for you based on annotations you add to your existing views or layout files. For example, if you annotate a custom view class, Epoxy reads the annotation and generates a corresponding model class automatically during your build step. You then use these generated models inside an EpoxyController, which is where you describe the full list of items that should appear on screen and in what order. When your data changes, you just rebuild that list in the controller and Epoxy compares it to what was previously shown, computing the minimum set of changes needed to update the screen smoothly. This automatic diffing is one of the main reasons Airbnb built Epoxy: it removes a category of bugs that come from manually telling RecyclerView which items changed. Epoxy supports several ways to define views: custom view classes with annotations, Android DataBinding layouts, or traditional view holder patterns. It integrates with both Java and Kotlin and is added to a project through Gradle. Airbnb says it now uses Epoxy for most of the main screens in their own Android app.
An Android library from Airbnb that removes RecyclerView boilerplate by auto-generating model classes from annotations and automatically computing the minimum set of changes needed when your list data updates.
Mainly Java. The stack also includes Java, Kotlin, Android.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.