# BroadcastChannel Resources

## Knowledge

- [MDN: BroadcastChannel](https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel)
  Interface overview: named same-origin channel, `postMessage`, `message` / `messageerror`, `close`. Use for: first-pass API map and browser support notes.
- [MDN: Broadcast Channel API](https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API)
  API landing: communication between browsing contexts and workers on the same origin. Use for: orientation and “who can join.”
- [MDN: BroadcastChannel() constructor](https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel/BroadcastChannel)
  Creating a channel by name. Use for: channel-name semantics.
- [MDN: BroadcastChannel.postMessage()](https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel/postMessage)
  Sending to other listeners; structured objects. Use for: message shape and fan-out mental model.
- [MDN: BroadcastChannel.close()](https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel/close)
  Disconnect so the object can be GC’d. Use for: lifetime and cleanup lesson.
- [MDN: BroadcastChannel message event](https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel/message_event)
  Incoming messages as `MessageEvent`. Use for: listener patterns (`onmessage` vs `addEventListener`).
- [WHATWG HTML: Broadcasting to other browsing contexts](https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts)
  Normative §9.5: constructor, destination matching (storage key + name), sender excluded, structured serialize (no transfer), closed → `InvalidStateError`, logout example, SharedWorker for elaborate cases. Use for: any claim when MDN is vague.
- [MDN: SharedWorker](https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker)
  Multi-context coordinator process. Use for: contrast “notify” vs “one shared process.”
- [MDN: StorageEvent](https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent)
  Storage-area change events (legacy multi-tab notify via `localStorage`). Use for: when people abuse storage as a bus.
- [MDN: Window.sessionStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
  Tab-isolated Web Storage. Use for: why sessionStorage is not a multi-tab bus.
- [MDN: Clients (Service Worker)](https://developer.mozilla.org/en-US/docs/Web/API/Clients)
  SW client messaging / claim. Use for: network/control plane vs light tab pub/sub.
- [MDN: The structured clone algorithm](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)
  What clones, what fails. Use for: message payload limits (BC has no transfer list).

## Wisdom (Communities)

- [Stack Overflow — [broadcastchannel]](https://stackoverflow.com/questions/tagged/broadcastchannel)
  Multi-tab logout patterns, Safari quirks, closed-channel errors. Use for: edge cases — verify against MDN/spec.
- [r/webdev](https://www.reddit.com/r/webdev/)
  Product-context tradeoffs (tab sync, logout UX). Use for: second opinions; treat as anecdotes.

## Gaps

- No single modern long-form “BroadcastChannel design guide”; most depth is MDN + HTML §9.5 + contrast docs (SharedWorker, StorageEvent). Teach the notify-vs-process split hard, then API.
- Exact cross-browser delivery/order edge cases under heavy load are implementation-defined within the spec’s partial ordering; design for best-effort notify, not a distributed commit log.
