Skip to main content
Import the public API through your package’s configured SDK build adapter:
Notifications can return promises; they do not delay other subscribers or asset readiness. A guard returns true to allow or false to prevent your operation. Exceptions, asynchronous guards and invalid decisions prevent it. Validators must return synchronous booleans and should check all expected payload keys, lengths and nested types. Payloads are shallow copied and frozen before validation; the validator and subscribers receive the same snapshot. Event declarations and payloads reject accessor properties, symbols and non-enumerable properties without executing their getters. Use plain objects with enumerable data properties. Retain immutable nested values. Subscribe with { signal: anotherOwner.signal } to cancel just that registration. Every subscription also has its own idempotent unsubscribe function. Repeated callbacks registered by different owners remain independent. Callbacks added during delivery run on the next delivery. Recursive delivery of the same event is rejected. Error reports contain the event name and a reason, without submitted values or exceptions from your callback. These browser callbacks do not invoke PHP automatically and do not authorize a server write. Keep server validation and authorization on the application’s save path. Your component decides when to call allow() and notify(). Use owned effects instead of retaining timers or observers after removal:
Each method returns a release function. Completed one-shot effects release their bookkeeping. You can also pass { signal: parentSignal } to createResourceScope(); aborting the parent disposes the scope. Use effects.signal with cancellable asynchronous APIs and check effects.disposed before publishing an async result. Disposal cannot interrupt code that is already running. Shared workers or observers need a separate shared owner; tracking a resource here ends that supplied resource when this component closes.

Continue reading

Extension guides · Definition and registration reference
Last modified on October 17, 2026