perspective-dev /perspective

A data visualization and analytics component, especially well-suited for large and/or streaming datasets.

★ 11,388⑂ 1,356👁 128▤ 69
RustCreated 2017-11-03perspective-dev.github.io/
11,388
stars
+0+3+113
1,356
forks
128
watchers
–
prs
–
issues
69
releases
–
discussions

README

Perspective is an open-source data grid, pivot table and charting component for 
large, real-time and streaming datasets. Build user-configurable reports, 
dashboards, notebooks and embedded analytics applications, backed by a 
high-performance streaming query engine that runs in-browser via WebAssembly or 
server-side in Python, Node.js and Rust — or delegates to a database you 
already have.





    
    




 Features

- A data-reactive UI packaged as a
  Custom Element,
  with drag-and-drop query and layout configuration. Includes a virtual-scrolling,
  editable data grid, WebGL charting engine with 15+ chart types, tile-based
  geographic maps, full theme support, and React bindings.

- A fast, memory-efficient streaming query engine written in C++ and compiled
  for WebAssembly (including a 64-bit memory64
  build for in-browser datasets larger than 4GB, and support for paging
  columns to disk via OPFS in the browser or memory-mapped files natively),
  Python and Rust.
  Tables update incrementally and views tick in real time, with reactive
  joins across tables, a columnar expression language based on
  ExprTK, and read/write/streaming
  support for Apache Arrow, CSV and JSON.

- A symmetric client/server architecture — the same Client API connects to an
  engine in-process, in a Web Worker, or remotely over WebSocket, with server
  bindings for Python (aiohttp, Starlette, Tornado), Node.js and Rust.
  Datasets can be mirrored to the browser for fluid interaction or virtualized
  server-side, streaming only what's visible.

- Virtual servers that run Perspective's UI directly on external engines like
  DuckDB, ClickHouse,
  PostgreSQL and
  Polars, translating view configurations into native
  queries — no ETL or data copy required.

- A Jupyter widget built on
  anywidget and a Python client library for
  interactive data analysis in JupyterLab and other notebook environments.

 Documentation

- Project Site
- User Guide
- JavaScript API
    - @perspective-dev/react React Component
    - @perspective-dev/viewer Web Component
    - @perspective-dev/client Client (Browser)
    - @perspective-dev/client Client (Node.js)
    - @perspective-dev/client Clickhouse Virtual Server
    - @perspective-dev/client DuckDB Virtual Server
- Python API
    - perspective
    - perspective.widget
    - perspective.handlers.aiohttp
    - perspective.handlers.starlette
    - perspective.handlers.tornado
    - perspective.virtual_servers.clickhouse
    - perspective.virtual_servers.duckdb
    - perspective.virtual_servers.postgres
- Rust API
    - perspective


 Examples




SuperstoreWorkspaceWebcam







RaycastingMarketNYPD







MoviesEvictionsFractal









 Media



@timkpaine
@timbess
@sc1f







@texodus
@texodus









---











The Perspective project is a member of the
The OpenJS Foundation.

Copyright OpenJS Foundation and Perspective contributors.
All rights reserved. The OpenJS Foundation has registered
trademarks and uses trademark

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON