airbnb/epoxy

Epoxy is an Android library for building complex screens in a RecyclerView

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 25 minutes ago
Added to GitGenius on September 7th, 2026
Created on August 8th, 2016
Open Issues & Pull Requests: 312 (+0)
GitHub issues: Enabled
Number of forks: 734
Total Stargazers: 8,551 (+0)
Total Subscribers: 152 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Issue API getrepoissuespagesummary failed: 429 Rate limit exceeded. Please try again later.

Detailed Description

Epoxy is an Android library for building complex screens in a RecyclerView with automatically generated models and simplified item management.

Epoxy solves the problem of boilerplate-heavy RecyclerView development by automatically generating model classes from custom views or databinding layouts through annotation processing. Developers declare what items to show using an EpoxyController, which handles view holders, item diffing, payload changes, item types, item ids, and span counts automatically. The library also provides built-in support for saving view state and automatic detection of item changes, eliminating much of the manual work typically required when working with RecyclerViews that display multiple view types.

Epoxy suits teams building Android apps with complex, multi-type list screens who want to reduce boilerplate and improve maintainability. The library is particularly valuable for applications where RecyclerView screens are a significant part of the user interface. Developers should be aware that the tool requires annotation processing; Kotlin users can choose between KAPT or KSP for code generation, with KSP recommended for faster build times. However, if DataBinding model support is needed, KAPT must be used since Android's DataBinding library itself depends on KAPT. For library projects using layout resources in Epoxy annotations, additional configuration with Butterknife's gradle plugin is required.

The project maintains active development with regular releases published through Maven Central. The repository includes a dedicated sample app demonstrating usage patterns and a separate KSP sample module showing Kotlin Symbol Processing integration. Documentation is organized in the project wiki, covering topics like EpoxyController usage with Kotlin and model generation from view annotations. The codebase supports multiple annotation processing paths, indicating ongoing attention to build performance and tooling compatibility across different Kotlin and Android development setups.