framework
React
Headless domain bindings plus optional Chakra application and admin compositions, with server authority kept outside the client.
Build waitlists, newsletters, release lists, and preference centers with explicit consent, segmentation, confirmation, and delivery boundaries.
available
Expose rate-limitable subscribe, double-opt-in confirmation, unsubscribe, and preference flows without leaking signed tokens.
available
Retain consent evidence and model list membership as an independent edge that can be removed, restored, and audited.
available
Evaluate application-owned tags and segment plans without placing business data or provider query languages in the core model.
Packages
available
Resolve recipients into suppression-aware queued sends while keeping audience authority separate from delivery providers.
framework
Headless domain bindings plus optional Chakra application and admin compositions, with server authority kept outside the client.
framework
Compose Playstack server contracts, React bindings, SSR handoff, and route adapters at the Next.js application edge.
framework
Connect portable Playstack capabilities to dependency injection, guards, decorators, request context, workers, and lifecycle hooks.
integration
Dispatch and process typed Playstack jobs through BullMQ with explicit Redis ownership and native queue access.
integration
Dispatch portable Playstack queue jobs through Inngest and serve the generated functions from Next.js, NestJS, or another supported framework.
integration
Deliver rendered messages and SES templates through an application-configured AWS SDK client.
integration
Deliver rendered messages or stored Mailgun templates through an explicit regional provider client.
integration
Deliver rendered Playstack mail or Postmark provider templates through an explicit driver and native client escape hatch.
integration
Deliver transactional mail and synchronize consent-aware audience contacts through explicit Resend adapters.
integration
Deliver rendered messages and dynamic templates through an isolated SendGrid mail client.
integration
Deliver portable rendered email through an application-configured Nodemailer transport.
integration
Persist Playstack capabilities through explicit application-owned Prisma clients, transactions, and managed schema fragments.
A launch waitlist, changelog list, customer newsletter, and product announcement audience share the same subscription lifecycle. The application decides what each list means; Playstack supplies portable membership, consent, token, preference, and delivery seams.
import { createAudiences } from '@playstack/audiences'
export const audiences = createAudiences({
persistence,
tokens,
emailNormalizer,
abuseGate,
delivery,
events,
clock,
})
await audiences.subscribe('launch-list', {
email: input.email,
consent: {
source: 'homepage',
recordedAt: Date.now(),
},
})The public Nest controller returns a uniform result and never exposes the confirmation token. The application passes that trusted token to its queued confirmation notification.
A local audience updates inside the application's transaction. A provider-owned audience is eventually consistent through an outbox command and remains pending until the provider confirms it. The package never pretends an external API participated in the database transaction.
Audience expansion resolves subscription edges into recipient references, then hands sends to the delivery layer. Suppressions, bounces, complaints, and provider history stay shared with transactional messages without allowing a marketing send to reuse transactional reputation accidentally.