## TL;DR

The Broadcast Channel API enables same-origin communication between browsing contexts (tabs, iframes, workers) with a simple pub/sub model. Messages are broadcasted to all listeners on a named channel.

## Core Explanation

`const bc = new BroadcastChannel('channel-name')`. `bc.postMessage(data)` sends; `bc.onmessage` receives. Data is structured-cloned. Simpler than SharedWorker or postMessage with window.opener. No persistence — messages are lost if no listeners are active. Ideal for login/logout synchronization across tabs.

## Further Reading

- [HTML Standard — BroadcastChannel](https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts)