Skip to content
matthewcm.dev

    ↑ ↓ move · ↵ open · tab scopeopen graph →

    $ cd ./topics/realtime-ui

    Real-time UIs

    Interfaces that stay smooth under a firehose. Streaming transports, 60fps rendering, state that doesn't thrash, and connections that heal themselves.

    13 notes🌱 1 seed🌿 10 growing🌳 2 evergreen

    Some interfaces can’t afford to be even a little late. When data arrives many times a second, as on a trading screen, a network map or a live dashboard, the UI has to decide what to render, what to batch and what to drop, and still feel calm to the person using it.

    I build real-time trading interfaces for a fintech, and before that I built large network-graph visualisations. The lesson from both: the network is rarely the bottleneck. What you do with each message is. Patterns only here. The ideas travel, the specifics of any one system don’t.

    Start here

    Choosing a transport

    You need…Read
    Both sides talking oftenWebSockets
    Server pushes only: feeds, progress, token streamsServer-Sent Events (SSEs)
    A fallback when long-lived connections are blockedHTTP Long Polling
    Rare updates, simplest infrastructureAJAX Polling

    Keeping connections honest

    Rendering under pressure

    Open questions I’m exploring

    • What’s the right backpressure story in the browser: drop, coalesce or slow the producer?
    • When is it worth moving parsing and aggregation to a worker, and what does that do to latency?
    • How do you test a real-time UI deterministically, with replayable message streams as fixtures?
    • Will WebTransport change any of this for browser apps, or just for games?

    hover to explore · click to open

    Case studies

    🌳 Start here

    Still growing (9)

    On the radar

    Coming up