Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

seatlayer/seatlayer-sdk

Open more actions menu

Repository files navigation

SeatLayer SDK

CI npm License: MIT

Official JavaScript and React SDKs for SeatLayer reserved seating. Embed the complete buyer picker or a headless seating chart, hold inventory in the browser, and complete the booking from your trusted server.

Website · Developer docs · Demo hub · Try the buyer experience · AI Toolkit

Choose a package

Package Use it for Documentation
@seatlayer/js Plain JavaScript, Vue, Svelte, Angular, and any DOM-based framework Install and embed
@seatlayer/react React applications and component-driven checkout flows SeatPicker reference
@seatlayer/core Low-level renderer and domain primitives for custom SDK authors Core package guide

Most buyer integrations should start with SeatPicker from @seatlayer/js or @seatlayer/react. Use SeatingChart only when your product intentionally owns the surrounding selection, pricing, confirmation, and hold UI.

Quick start

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

export function Tickets() {
  return (
    <SeatPicker
      event="ev_9f3a"
      style={{ width: '100%', height: 640 }}
      onCheckout={(_, __, handoff) => {
        beginCheckoutOnYourServer(handoff.holdId);
      }}
    />
  );
}

Plain JavaScript:

npm install @seatlayer/js
import { SeatPicker } from '@seatlayer/js';

const picker = new SeatPicker({
  container: '#picker',
  event: 'ev_9f3a',
  onCheckout: (_, __, handoff) => {
    beginCheckoutOnYourServer(handoff.holdId);
  },
});

await picker.render();

The embed container needs an explicit usable height. See the installation guide for hosted script, browser ESM, npm, React, and responsive-container examples.

Security boundary

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

  • Never expose a SeatLayer secret key in browser or mobile code.
  • Calculate the charge from server-inspected hold items, not client input.
  • Reuse your stable order id as bookingRef for safe retries.
  • Treat 409 inventory conflicts and expired holds as expected recovery paths.

Read how the integration works before building checkout.

Mobile SDKs

SDK Status Repository
React Native Public preview seatlayer/seatlayer-react-native
iOS Public release candidate seatlayer/seatlayer-ios
Flutter Public release candidate seatlayer/seatlayer-flutter

See the mobile SDK guide for the current installation and release status.

Examples and agent support

Development

pnpm install
pnpm sync:core
pnpm build
pnpm typecheck
pnpm test

The rendering engine is synced from SeatLayer's private platform source. Do not hand-edit packages/core/src/{core,engine,picker}; update the platform source and run pnpm sync:core. The public barrel in packages/core/src/index.ts is owned here.

Releasing

All npm packages and CDN channels use one version. Releases are created from a vX.Y.Z tag only after pnpm release:prep passes. The GitHub workflow builds, uploads and verifies the immutable CDN release, publishes all npm packages with provenance, and then promotes the compatible CDN alias.

Do not run npm publish manually. Follow RELEASING.md.

License

MIT © SeatLayer

About

Official SeatLayer Web and React SDKs — interactive seat maps, browser holds, server-booked checkout, and 3D venue views.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.