// the find
perspective-dev/perspective
A data visualization and analytics component, especially well-suited for large and/or streaming datasets.
Perspective is a high-performance data visualization component built on a C++ engine compiled to WebAssembly, with bindings for JavaScript, Python, and Rust. The core idea is a single query engine that works in-browser via WASM or remotely via WebSocket, with the same UI component connecting to either. It's aimed at dashboards and notebooks where you're dealing with millions of rows or live-streaming data.
The WASM approach is the real differentiator — you get near-native query performance in the browser without shipping data to a server, which matters when you're pivoting and filtering 10M rows interactively. The virtual server abstraction that proxies DuckDB or ClickHouse queries through the same viewer interface is genuinely useful; you get the Perspective UI without loading all your data into its in-memory store. Apache Arrow as the wire format is a good call — zero-copy transfers between the engine and chart layer, and it plays well with the rest of the modern data stack. The JupyterLab widget is well-maintained and the Python async handlers (aiohttp, Starlette, tornado) cover the common server frameworks without forcing you into one.
The build story is brutal — this is a C++/Rust/TypeScript/Python monorepo and getting a dev environment working requires coordinating emscripten, pnpm, cargo, and pip. The README punts to DEVELOPMENT.md and that document is long. If you just want to drop a chart into an existing app, the bundle size is non-trivial (WASM binary). The expression language is ExprTk, which is not something most developers already know — there's no SQL or pandas-style filtering, so power users hit a learning curve just to write a calculated column. The React integration exists but it's thin; you're mostly wrapping a web component and dealing with imperative lifecycle issues yourself rather than getting a proper React component with first-class props.