// the find
patrykandpatrick/vico
A powerful and extensible chart library for Compose Multiplatform.
Vico is a chart library for Compose Multiplatform covering Android, iOS, desktop, and web from a single Kotlin codebase. It handles cartesian charts (line, column, candlestick, combo) and pie charts with animation, zoom, scroll, and marker support. The target audience is Kotlin developers who want production-quality charts without dropping to Canvas primitives or reaching for a web view.
The multiplatform story is genuine — sample targets for Android, iOS, desktop, and WASM are all present and the library itself lives in commonMain with platform-specific actuals where needed, not just an Android lib with a KMP badge. The ModelProducer pattern for data updates is well-thought-out: it decouples data from the composable lifecycle and handles coroutine-safe updates without the caller having to think about recomposition timing. Material 2 and Material 3 theme adapters ship as separate artifacts so you don't drag in both design systems. Screenshot tests with reference images are checked into the repo, which is a real commitment to catching regressions that most UI libraries skip.
Web/WASM support exists in samples but the pie chart stability page in the guide flags known issues, and candlestick support on non-Android targets is unclear from the structure alone — the 'compose-glance' module only wraps cartesian and pie, suggesting some features trail the Android implementation. The extensibility model requires understanding several layered abstractions (CartesianLayer, Component, Fill, Shape, Decoration) before you can do anything custom; the guide is thorough but the learning curve is steeper than the README implies for anything beyond the starter examples. There are no server-side or headless rendering paths, so if you need chart images in a backend pipeline you're out of luck. Sponsored by a React Native agency, which is fine, but worth noting the maintainer dependency is a single person (patrykandpatrick) — not a red flag at 3k stars but something to weigh for a long-lived production dependency.