Seatmap Canvas
// est. 2016 · mit licensed · retired in honor
seatmap-canvas, our veteran
Released in 2016 and frozen in place, yet still quietly doing its job in production all over the world. Long may it run.
- MIT license
- @alisaitteke/seatmap-canvas
- D3.js · SVG
- TypeScript

Frozen, not forgotten
v1 is done, deliberately. Here is what that means for you.
Feature-frozen
No new features, no new releases: what is on npm is final. What you integrate today behaves the same tomorrow.
MIT, forever
The license never changes. Self-host it, ship it in anything you build, owe us nothing: no per-seat fees, ever.
Same addresses
Docs, examples and the demo keep their long-standing URLs on seatmap.io, so cited links and bookmarks keep working.
Up and running in minutes
Bring your own venue JSON and backend: v1 is the renderer and selection widget, not a ticketing stack.
Install
npm install @alisaitteke/seatmap-canvas adds the renderer and the TypeScript types.
Feed it your venue
Pass blocks and seats as plain JSON via replaceData(). Inventory, pricing and holds stay in your backend.
Catch the clicks
SEAT.CLICK fires on every tap; toggle selection, then read getSelectedSeats() at checkout.
Official wrappers
- Vanilla JS
- React
- Vue 3
- Next.js
- Angular
import { SeatmapCanvas } from "@alisaitteke/seatmap-canvas/react";import "@alisaitteke/seatmap-canvas/dist/seatmap.canvas.css";export function VenuePicker({ blocks }) {return (<SeatmapCanvasoptions={{legend: true,style: { seat: { hover: "#8fe100", selected: "#8fe100" } },}}data={blocks}onSeatClick={(seat) =>seat.isSelected() ? seat.unSelect() : seat.select()}/>);}
Don't want to hand-write venue JSON? Seatmap Studio is the visual chart editor of the maintained platform.
The original demo, still live
The same playground the community has used for years: zoom from the venue down to the seat, try shapes and selections.

Documentation and source
Documentation
Library intro and core concepts.
Getting started
Install the package and render a first chart.
API reference
Configuration, events, and public methods.
Examples
Basic usage and venue samples.
Live demo
The original v1 interactive demo.
GitHub
Source for github.com/alisaitteke/seatmap-canvas.
npm
Install @alisaitteke/seatmap-canvas from the public registry.
Compare
| seatmap-canvas v1 | Seatmap Canvas Next | |
|---|---|---|
| How far it can go | A hall of a few thousand seats | A stadium bowl that still pans and zooms |
| Above and below | One floor | Nine floors — balcony over stalls, cabin over cabin |
| What the night can hold | Seats in blocks | Seats, standing room, booths, banquet tables |
| The ground it can sit on | An indoor plan | A theatre, a festival field, a racetrack on a map |
| The path to a seat | Venue, then block, then the seat | From the map, through the floors, down to the seat |
| How the venue is born | You write it in JSON | You draw it in Studio. The map plays it back. |
| What a seat can say | A title and a note | Price, category, a picture — the offer on the seat |
| When the house fills | You send a new JSON | Sold and held land on the map as they happen |
| Without a pointer | — | Walk the map with a keyboard |
Technical
| seatmap-canvas v1 | Seatmap Canvas Next | |
|---|---|---|
| Renderer | D3.js · SVG | WebGL2 |
| Chart format | blocks[] + seats[] | Studio ChartDocument (blocks, objects, floors, geo) |
| Selection API | SEAT.CLICK, select / unselect | Same host-toggle events |
| Seat status | Host rewrites JSON | setSeatStatus, applyObjectAvailability |
| Tooltip | Title / note | resolveTooltipOffer |
| Framework packages | React, Vue 3, Next.js, Angular | Vanilla JS |
| Pretix parser | Built-in | Not shipped |
| License | MIT | Commercial |
| Install | npm i @alisaitteke/seatmap-canvas | Licensed bundle, not on npm |