Server-Sent Events (SSE) is a standard web technology that enables servers to push real-time updates to browser clients over a persistent HTTP connection using the text/event-stream content type. Unlike WebSockets, SSE provides unidirectional server-to-client streaming using familiar HTTP infrastructure, making it simpler to implement and deploy for scenarios like live notifications, dashboards, LLM token streaming, and progress updates. The key advantage is automatic reconnection: when a connection drops, the browser's EventSource API automatically attempts to reconnect, optionally resuming from the last event using the Last-Event-ID header. With HTTP/3 (QUIC) now prevalent, SSE benefits from eliminated head-of-line blocking and no connection limits — making it the default transport for most AI streaming APIs and real-time feeds in 2026.
What This Cheat Sheet Covers
This topic spans 15 focused tables and 121 indexed concepts. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
Table 1: Core Concepts & EventSource API
The EventSource interface is SSE's browser-native client; it abstracts connection management, event parsing, and reconnection so you only need to handle incoming events. Understanding what the API does automatically — and where it falls short — determines when to use it versus a fetch-based alternative.
| Concept | Example | Description |
|---|---|---|
const es = new EventSource('/events') | • Browser API that opens a persistent HTTP connection and receives server-pushed events • handles parsing, reconnection, and event dispatching automatically. | |
Content-Type: text/event-stream | • Required HTTP response header that signals SSE protocol • charset UTF-8 is implicit and should not be explicitly added as it can break some implementations. | |
Browser reconnects on disconnect | • EventSource automatically attempts to reconnect if the connection drops• configurable via the retry field sent from server. | |
Server → Client only | • SSE is server-to-client only • client sends regular HTTP requests if bidirectional communication is needed (contrast with WebSocket's full-duplex design). |