The standard Python visualization stack hits a wall at a few hundred thousand points. Reflex AI just open-sourced XY under Apache 2.0, and the numbers are genuinely jarring: 0.071 seconds to render 10,000 points, and 0.081 seconds for 100 million. That’s not a typo. The secret is structural — instead of creating one drawable object per row like Matplotlib or Plotly, XY keeps exact f64 columns in Python and ships typed binary buffers from a native Rust core to a WebGL2 canvas in the browser. The browser only ever draws screen-bounded representations.
For teams drowning in tick data or genomic scans, the export size alone might justify switching. A 10-million-point interactive scatter exports to 258 KiB of HTML. Reflex says the Plotly equivalent weighs in at 259 MiB — a thousand-fold difference. Memory tells the same story: at 10 million points, XY uses 0.32 GiB against Plotly’s 1.86 GiB. Even with density decimation switched off, XY brute-forces 100 million exact markers in 1.343 seconds on 5.26 GiB of RAM. Reflex also claims it rendered the full OpenStreetMap dataset, all 10 billion points.
Version 0.0.1 is early alpha — Reflex is upfront about that — which makes the deployment calculus straightforward. Startups and mid-size data teams can use it today for notebooks and internal dashboards. Regulated enterprises should wait before putting it on a customer-facing critical path. The sweet spot is wherever sampling before plotting is the current default: quantitative finance, bioinformatics Manhattan plots, observability telemetry, astronomy, and geospatial work. Installation is a single pip install xy on Python 3.11 or newer.
The API should feel familiar to anyone who’s written Matplotlib. Fourteen chart families ship out of the box, and import xy.pyplot as plt runs common pyplot code, though the compatibility guide warns not everything is supported yet. Styling accepts CSS and Tailwind classes, and a separate adapter turns any chart into a Reflex component with no JavaScript. What I find most clever is the representation ladder: above 10,000 rows, XY auto-switches to M4 decimation for ordered lines; above 200,000 points, it moves to density grids. But because the exact values stay in Python, hover and selection still resolve the original rows. Zooming into a tight window returns exact visible points from a cached, padded window. Reflex is careful not to overclaim — density is GPU-rendered but binned, and ingest still scales with row count. This isn’t magic. It’s just the right tradeoffs, finally packaged for Python users who’ve been waiting years for interactive big-data viz that doesn’t collapse under its own weight.