finds.dev← search

// the find

yuankunzhang/charming

★ 2,556 · Rust · Apache-2.0 · updated Jan 2026

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →