Calendar is a highly customizable calendar library for Android and Kotlin Multiplatform that provides calendar views backed by RecyclerView for the traditional view system and LazyRow/LazyColumn for Compose.
The library solves the problem of building calendars with custom appearance and behavior by providing the underlying date logic and scrolling infrastructure while leaving all visual presentation to the developer. It supports week, month, or year display modes with single, multiple, or range date selection. Developers can disable specific dates, set boundary ranges, customize individual day cells, add headers and footers, and implement horizontal or vertical scrolling. The tool also includes a heatmap calendar mode suitable for visualizing data changes over time, similar to contribution charts.
The library suits projects where calendar appearance must match specific design requirements rather than conform to a standard widget. It works for both traditional Android View-based projects and modern Compose applications, with a separate multiplatform artifact supporting Android, iOS, JavaScript, WebAssembly, and Desktop platforms. The view artifact uses Java Time APIs, while the multiplatform variant uses kotlinx-datetime for cross-platform compatibility. Developers should review the sample applications and source code examples before adoption, as the library emphasizes that most common implementation patterns are already demonstrated there.
The project maintains separate, well-documented artifacts for different use cases and platforms, allowing developers to choose exactly what they need without unnecessary dependencies. The multiplatform sample is available as a live web application alongside its source code, providing immediate visibility into capabilities across different targets. The library's design philosophy centers on providing calendar logic and infrastructure while explicitly delegating all visual design to the developer, which requires more initial work but enables complete customization.