---
name: fetcher-eventbus
description: >
  Use when implementing a typed event bus — serial/parallel execution, BroadcastChannel or storage cross-tab messaging, handler ordering, and once-only handlers.
---

# fetcher-eventbus

## Use This Skill When

- The task mentions event bus, event handlers, broadcasts, or cross-tab communication.
- The task needs serial versus parallel event execution semantics.
- The task involves `BroadcastChannel`, storage fallback messaging, or cross-tab sync.
- The task needs handler ordering, duplicate-name prevention, or once-only handlers.

## Workflow

1. Choose `SerialTypedEventBus` when ordering and sequential side effects matter.
2. Choose `ParallelTypedEventBus` when handlers are independent and latency matters.
3. Choose `BroadcastTypedEventBus` or a cross-tab messenger for browser-tab synchronization.
4. Give handlers stable names and explicit order values when behavior must be predictable.
5. Load `references/api.md` for interface details, messenger fallback behavior, and examples.

## Key Practices

- Use one event type per focused bus unless a multi-type router materially reduces duplication.
- Treat handler names as identifiers, not labels; duplicate names are rejected.
- Call cleanup functions or `destroy()` for long-lived UI and test code.

## References

- `references/api.md`: Detailed package API, examples, and edge-case guidance. Load it only when the task needs TypedEventBus contracts, event handler fields, serial/parallel/broadcast examples, messenger APIs, and fallback chains.

## Related Skills

- $fetcher-storage: Use when eventing is tied to persistent key-value state.
- $fetcher-react-hooks: Use when React components subscribe to event buses.
- $fetcher-cosec-auth: Use when auth token or device storage changes must broadcast.
