// the find
yuankunzhang/charming
A visualization library for Rust
Charming is a Rust API for Apache ECharts — you build charts with a typed builder API and it generates ECharts config JSON, which gets rendered via one of three backends: a browser HTML renderer, a server-side image renderer (via an embedded Deno/V8 runtime), or a WASM renderer. It's for Rust developers who want chart output without writing JavaScript.
The chart type coverage is genuinely wide — bar, line, scatter, candlestick, sankey, treemap, radar, heatmap, graph, calendar, and more, each with multiple gallery examples you can actually run. The three-renderer design is well thought out: the same Chart definition produces interactive HTML for browsers, static SVG/PNG for server-side report pipelines, or a WASM component for Leptos/Dioxus/Yew — and all four framework integration examples are included in the repo. Image output format support is broad (SVG, PNG, JPEG, AVIF, WebP, and a dozen more) which covers most report generation needs. The typed builder API catches misconfigured charts at compile time rather than producing silent ECharts errors at runtime.
The SSR image renderer embeds deno_core to execute ECharts' JavaScript — meaning your server-side chart binary drags in a V8 engine. Compile times are slow and the dependency is fragile; the repo explicitly states there is no MSRV because deno forces updates constantly, which breaks any team that pins their Rust toolchain. Custom themes are listed as 'future versions' twice in the README but never shipped; you're stuck with the 14 bundled themes. Because charming is ultimately a typed wrapper generating ECharts JSON, any ECharts feature not yet modelled in the Rust types requires falling back to RawString or JsFunction escapes, which lose all compile-time guarantees — and with an API surface as large as ECharts, you'll hit this ceiling sooner than expected.