@seatlayer/react

SeatLayer's official React seating chart and seat map SDK — live availability, seat selection, temporary holds, and a typed TypeScript API for ticketing apps.


Keywords
seat map, seating chart, seat-map, seating-chart, seat-picker, seat-selection, seat-reservation, reserved-seating, seat-booking, event-ticketing, ticketing, live-inventory, seating, seatlayer, react, typescript, angular, javascript, npm, sdk, vue
License
MIT
Install
npm install @seatlayer/react@0.86.12

Documentation

SeatLayer Seat Map SDK for Reserved Seating — React, Vue, and Angular

CI npm @seatlayer/react npm @seatlayer/vue npm @seatlayer/angular License: MIT

The official framework wrappers for SeatLayer reserved seating. Add an interactive seating chart and seat picker to a ticketing app, show live seat availability, and let buyers take temporary holds on the inventory they choose.

Each wrapper is a real component for its framework with a typed imperative handle: the browser selects and holds, and your trusted server books.

Start with the package-specific guide after installation: React, Vue, or Angular. Choose the complete picker when you want SeatLayer's ready buyer flow; choose the seating chart when your application owns the surrounding controls and sends the opaque hold to its trusted checkout server.

SeatLayer reserved-seating platform · Buyer SDK documentation · Buyer seat-map demo · SeatLayer JavaScript seat map SDK · SeatLayer React Native SDK · SeatLayer iOS seat map SDK · SeatLayer Android seat map SDK · SeatLayer Flutter seat map SDK · SeatLayer AI Toolkit

Packages in this repository

Package Use it for README
@seatlayer/react React applications packages/react
@seatlayer/vue Vue 3 applications packages/vue
@seatlayer/angular Angular applications packages/angular

Plain JavaScript and the browser runtime API live in @seatlayer/js, which every wrapper here depends on.

Install

npm install @seatlayer/react   # or @seatlayer/vue, @seatlayer/angular

React quick start

import { SeatPicker } from '@seatlayer/react';

export function Tickets() {
  return <SeatPicker event="ev_9f3a" style={{ width: '100%', height: 640 }} />;
}

Each package README carries the framework's own quick start, props, events, and imperative handle.

Choose the buyer surface

Surface Use it for Framework support
SeatPicker Complete buyer flow with map, legend, priced tray, holds, and checkout hand-off React component; SeatPickerWidget modal re-exported by all three packages
SeatingChart Lower-level chart inside controls and checkout UI owned by your application React, Vue, and Angular components
SeasonPicker Fixed-inclusion Season selection and returning-holder intent React, Vue, and Angular components
SeatManager / EmbeddedDesigner Event-scoped organizer operations and hosted chart editing React components

The complete picker can opt into buyer WebMCP seat-selection tools with webMcp: true. This registers describe, find, select, and read-selection tools in compatible browsers. webMcp: { holds: true } separately enables the hold tool; payment and booking remain on the trusted checkout path.

Security boundary

The browser selects and holds inventory. Your trusted backend inspects and books the hold after payment or order validation.

  • Never expose a SeatLayer secret key in browser or mobile code.
  • Send only the holdId and your normal checkout context to your backend.
  • Calculate the charge from server-inspected hold items, not from browser input.
  • Reuse your stable order id as bookingRef so a retried booking is idempotent.

Read how the integration works before connecting checkout, and see SECURITY.md for private vulnerability reporting.

Public/private boundary

This repository contains the reviewable React, Vue, and Angular integration layers. The production renderer, designer, 3D engine, inventory implementation, and runtime build pipeline are proprietary SeatLayer components maintained in a private repository and distributed as compiled npm and CDN artifacts.

The boundary is enforced in CI. A contribution that introduces core renderer, designer, 3D source, or public source maps fails pnpm boundary:check.

Frequently asked questions

What is the best JavaScript library for seat maps and seat booking?

That depends on what you need to own. SeatLayer ships a browser runtime plus first-party React, Vue, and Angular components, a matching set of native mobile SDKs, and server SDKs for the booking half — so the same event and inventory can be reused across supported clients while booking stays on your server. If you only need a drawing surface, a generic canvas library is lighter; if you need live availability, temporary holds, and inventory that cannot be double-sold, that is the part SeatLayer provides.

Which package should I install?

Install the wrapper for your framework — @seatlayer/react, @seatlayer/vue, or @seatlayer/angular. Use @seatlayer/js directly for plain JavaScript or a framework without a first-party wrapper. It provides the shared browser runtime; your application owns the framework lifecycle around it.

Are TypeScript types included?

Yes. Every package ships its own declarations — no @types/* package to add. React and Vue publish both ESM (dist/index.d.ts) and CommonJS (dist/index.d.cts) declarations; Angular ships an Angular Package Format build with dist/index.d.ts. Types are checked at release by publint and arethetypeswrong.

How do temporary seat holds work?

When a buyer commits to a selection, the SDK reserves that inventory against concurrent buyers for a limited checkout window and returns an opaque holdId. The hold lapses on its own if checkout never completes, and it can be resumed after a checkout navigation or reload. Your server then books the hold with a secret key, which is what prevents double-selling without locking seats forever.

Can I use my own payment provider?

Yes. Nothing in the browser takes a payment. Your backend receives the holdId and priced line items, charges through whatever provider you already use, and books the hold through the server-side checkout flow.

Continue your JavaScript integration

SeatLayer SDK ecosystem

Surface Package or source
JavaScript @seatlayer/js
React @seatlayer/react (this repository)
Vue @seatlayer/vue (this repository)
Angular @seatlayer/angular (this repository)
React Native @seatlayer/react-native
iOS seatlayer-ios
Flutter seatlayer
Android seatlayer-android
Server SDKs Node.js, Python, PHP, Ruby, .NET, Java, and Go

Development

pnpm install
pnpm verify

pnpm verify runs the public boundary check, builds every package, typechecks, runs the test suite, and lints the published package manifests.

The wrappers resolve the released @seatlayer/js runtime from npm. Runtime changes are released independently before wrapper dependency versions move. See MIGRATION.md for repository ownership, release order, artifact rules, and the 0.52.x to 0.53.0 migration boundary, and CONTRIBUTING.md before opening a pull request.

Licence

The framework wrapper source in this repository is MIT licensed. The separately distributed SeatLayer runtime is not covered by this repository's MIT licence.