Published Product3 min read
Reflex open-sources xy, a Rust-backed charting library that sends only what the screen can show
The library moves level-of-detail work into Rust and holds render time near 80 milliseconds whether you plot 10,000 points or 10 million, according to Reflex.
Not a builder's beat, but builders have a standing stake in it.See today for builders

What happened
- Reflex has newly open-sourced a Python charting library called xy, whose stated advantage is massive scalability.
- Most Python charting libraries today, such as Plotly, Bokeh, or Matplotlib, serialize every data point and send it to the browser, where it is usually parsed by JavaScript.
- GPU acceleration can help, but portraying thousands to millions of rows can hog memory, slow interactions and frequently lead to crashes.
- The xy library shifts heavy data processing to Rust-built libraries, where the rendering job is matched to the pixel/density surface of the screen, and the core sends to the screen only what the screen can physically display.
- xy keeps chart values in a ColumnStore format; the Rust-compiled libraries compute the level of detail and transfer the results out as typed binary buffers.
Compiled by The Product DeskSomething wrong?How this is made
Why it matters
Reflex has open-sourced xy, a Python charting library that pushes the decision about which points to draw into Rust and then sends the browser only what the screen can physically display [1][4]. That is a narrow fix for a familiar failure mode: charting stacks that serialise every row to JavaScript and then hog memory, slow interactions, and crash [2][3].
The mechanics are the interesting part. Most Python charting libraries, Plotly, Bokeh and Matplotlib among them, serialise each data point and hand it to the browser for JavaScript to parse, and GPU acceleration only softens the problem rather than removing it [2][3]. xy keeps chart values in a ColumnStore format, has Rust-compiled libraries compute the level of detail, and transfers the result out as typed binary buffers [5]. The rendering job is matched to the pixel and density surface of the display, so data the browser cannot use is never shipped [4].
The headline number Reflex reports is a flat render time of roughly 80 milliseconds whether the chart holds 10,000 points or 10 million [6]. The company says the reduction preserves peaks, troughs and overall shape, including outliers and tail behaviour [7], and that zoom recalculates the region of interest down to individual data points [8]. For time series work, the documentation says the library "renders the full series in one pass with every spike and drop intact, and zoom resolves them without a second query" [15].
The export claim is the one operators will want to test first. Reflex calculated that a 10-million-point interactive scatter chart exports to 258 KiB of HTML, against 259 MiB for the Plotly equivalent [13]. That is a factor of roughly 1,000 [14], and it is the difference between a chart you can attach to an email and one you cannot. On the live-data side, a chart.append() method updates an existing chart, so a dashboard can be wired to a running source without a rebuild [12], and whole datasets can be plotted without a sampling step in front [11].
Adoption cost looks low. Installation is pip install xy or uv add xy, data goes in through a Python container, and NumPy is optional [16]. xy is built as a drop-in replacement for Matplotlib workflows, so existing pyplot charts can be rerendered [9], and any xy chart can become a component inside Reflex, the company's open source Python web framework, with no JavaScript, iframe or separate chart service [17].
The limits are stated plainly by the developers: this first release handles two-dimensional charts only, with no polar or 3D output, and Plotly, Bokeh and Matplotlib cover more chart types [10]. So xy is a specialist for wide, dense 2D data, not a replacement for a general plotting library.
Worth watching: whether the 80 millisecond figure and the 258 KiB export hold up on other people's hardware and datasets, since both are Reflex's own measurements [6][13]; whether the Matplotlib drop-in path survives contact with real pyplot code [9]; and how quickly the chart-type gap closes [10]. Until then the honest read is that a single-vendor benchmark has been published alongside the code, which at least makes it checkable.
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
Reflex has newly open-sourced a Python charting library called xy, whose stated advantage is massive scalability.
- [2]
Most Python charting libraries today, such as Plotly, Bokeh, or Matplotlib, serialize every data point and send it to the browser, where it is usually parsed by JavaScript.
- [3]
GPU acceleration can help, but portraying thousands to millions of rows can hog memory, slow interactions and frequently lead to crashes.
- [4]
The xy library shifts heavy data processing to Rust-built libraries, where the rendering job is matched to the pixel/density surface of the screen, and the core sends to the screen only what the screen can physically display.
- [5]
xy keeps chart values in a ColumnStore format; the Rust-compiled libraries compute the level of detail and transfer the results out as typed binary buffers.
- [6]
The time to render a chart stays about the same, around 80 milliseconds, regardless of whether 10,000 or 10 million points are plotted.
Sources & coverage · 1 publisher
The reporting this story was synthesized from, earliest first. Every link goes to the original.
- devops.comJoab JacksonAug 13Reflex’s Newly Open-Sourced XY Library Offers Faster Python Charting
Cited in this coverage: devops.com
Cited in this coverage: devops.com, reporting Reflex's figures
Cited in this coverage: Reflex, via devops.com
Cited in this coverage: xy documentation, quoted by devops.com



