Skip to content

Renderer performance

Measured pan, zoom, focus and selection frame cost at 13,784 and 53,018 seats, the method behind the numbers, what is withheld, and how to reproduce it.

Updated View as Markdown

Large charts are the question everyone asks before committing to a seating layer, so the answer here is a measured run rather than a claim: the numbers, the machine they came from, the spec that produced them, and the parts we are not publishing.

At 53,018 seats the buyer renderer measured 17.6 ms p95 frames while panning, zooming and selecting in this desktop run. The venue is on screen in 348 ms and every seat is drawn within 4.3 s while it stays interactive; the flat-to-3D transition measured a 34.2 ms p95 frame.

Open the chart and test it yourself, no signup: the 53,018-seat public demo.

Method

The run compares two published charts on the same machine in the same session, so the second column is a scale comparison rather than a lone number.

Measured 27 August 2026, commit 84380e3b (fixture waits for the progressive reveal to finish before probing)
Machine Apple Silicon laptop, Chromium via Playwright, 1280x800, foregrounded window, load average ~4
Fixture e2e/fixtures/renderer-13k-benchmark.html?venue=mega (53,018 seats) against ?venue=uber (13,784 seats)
Spec e2e/renderer-50k-benchmark.spec.ts

Two details in that row do the real work. The window is foregrounded, because a hidden tab freezes requestAnimationFrame and a background run measures a renderer that is not drawing. And the fixture waits for every seat to land before it probes — probing mid-reveal measures the reveal, not the renderer.

Numbers

The chart is progressive, so readiness has two milestones: the venue is usable when its sections are on screen, and every individual seat lands after that without the map going unresponsive in between.

Measurement 13,784 seats 53,018 seats
Venue on screen 182 ms 348 ms
Every seat drawn 1,630 ms 4,260 ms
JS heap 53.5 MB 121.9 MB

Interaction is reported as the 95th-percentile frame duration and the frame rate recorded by the probe. The FPS value is a separate observation, not a mathematical conversion of the p95 duration. p95 exposes the slower end of the recorded frames that a mean can hide.

Interaction 13,784 seats 53,018 seats
Flat-to-3D transition 17.7 ms · 58 FPS 34.2 ms · 49 FPS
Focus a section 17.7 ms · 59 FPS 17.3 ms · 54 FPS
Pan, focused 17.6 ms · 60 FPS 17.4 ms · 60 FPS
Zoom, focused 17.6 ms · 55 FPS 17.6 ms · 46 FPS
Selection burst of 32 seats 17.7 ms · 60 FPS 17.6 ms · 52 FPS

The p95 frame is flat across a 3.8x difference in seat count for every interaction except the flat-to-3D transition, which is the one moment the whole venue is rebuilt in a new projection. What scales is the one-off cost — time to draw every seat, and resident memory — not the cost of a frame once the chart is up.

What this run does not publish

Camera-glide numbers measured while the progressive seat reveal was still running are not published; the fixture now waits for every seat before probing (an earlier same-day run mid-reveal showed 150-349 ms frames, which measured the reveal, not the renderer).

The viewport-culling probe reports 0 culled section groups at the 53,018-seat focus endpoint on this build and on the previous day’s build alike; the fitted camera for a stadium-sized section stays below the live-seat threshold, so the venue paints from the cached overview bitmap there. Frame timings above are unaffected; the probe needs a zoomed-in endpoint to count culled groups.

No maximum seat count is published either. 53,018 is the largest chart measured, not a ceiling, and these figures describe the buyer renderer rather than an end-to-end authoring session. The machine and build are stated above precisely because a number without them is not reproducible; validate an unusually large or unusual venue against your own chart.

How to reproduce

pnpm exec playwright test e2e/renderer-50k-benchmark.spec.ts

The spec drives both fixtures, waits for the reveal to settle, records short probes for each interaction, and prints the same tables. Run it foregrounded on a quiet machine; a laptop under load, a hidden window, or a probe that starts before the reveal finishes will not reproduce these numbers.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close