framework
React
Headless domain bindings plus optional Chakra application and admin compositions, with server authority kept outside the client.
Carry stable application errors across server and client boundaries, report normalized failures, and retain framework-native recovery without leaking sensitive context.
available
Represent safe codes, causes, severity, and public details without coupling domain failures to HTTP or React.
Packages
available
Map thrown failures through one filter into safe responses and normalized reporting context.
Frameworks and integrations
available
Capture render failures, expose application-owned fallback UI, and preserve reset behavior without embedding a reporting vendor.
available
Scrub and normalize error, release, environment, trace, user, and account context before configured drivers receive it.
Packages
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
Report scrubbed Playstack errors through an initialized Sentry client without hiding SDK configuration or instrumentation.
integration
Adapt Basemarks track events with explicit property mapping; supply an application-owned transport for error reporting.
Domain code should not know whether a failure becomes an HTTP response, a React fallback, a queue retry, or a provider event. Stable error codes carry safe meaning while adapters translate them at the application edge.
import { PlaystackError, createErrorCode } from '@playstack/core/errors'
class ReleaseNotFound extends PlaystackError {
readonly code = createErrorCode('releases', 'not_found')
readonly retryable = false
constructor() { super('Release not found') }
}
throw new ReleaseNotFound()import { configureErrors } from '@playstack/errors'
export const errors = configureErrors({
environment: config.environment,
release: config.release,
drivers: [sentryDriver],
trace,
})
errors.captureError(error, {
accountId: request.account?.id,
tags: { operation: 'release.publish' },
})The reporter never throws into product behavior. Driver, trace, and input failures are isolated through a diagnostic callback, and sensitive context is scrubbed before any external provider receives it.
NestJS maps safe failures to transport responses. React renders an application-provided fallback and owns reset behavior. Both use the same portable error identity without forcing server concerns into the browser or UI choices into domain code.