React vs. Real-Time: Build Real-Time Features Without Fighting the Framework

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2026
November 17 - 20, 2026
New York, US & Online
Upcoming event
React Summit US 2026
React Summit US 2026
November 17 - 20, 2026. New York, US & Online
Bookmark
Rate this content
Sentry
Promoted
Code breaks, fix it faster

Crashes, slowdowns, regressions in prod. Seer by Sentry unifies traces, replays, errors, profiles to find root causes fast.

Get started

Most React applications treat state as the single source of truth. But what happens when time itself lives outside React?

While building a production multi-track timeline engine, we discovered that the Web Audio transport, not React state had to become the canonical timeline. In this talk, we will explore how we designed a channel-based audio graph and canvas-rendered editor around an external high-precision clock, enabling deterministic synchronization of externally generated audio and media, 60fps rendering, and zero-reload state updates without letting React’s reconciliation interfere with real-time guarantees.

This talk has been presented at React Summit 2026, check out the latest edition of this React Conference.

Shubham Gautam
Shubham Gautam
20 min
16 Jun, 2026

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Shubham, a senior software engineer at Headout, discusses challenges when React meets real-time systems while working on an internal tool for audio doors. React's flexibility clashes with real-time systems' fixed schedules, causing issues like audio drift. Redefining React's role in real-time systems improves playhead smoothness by shifting architecture. React transitions to an observer, using an external clock for stability. Optimizations in React's rendering architecture include layered rendering for enhanced UI performance. Real-time feedback bypasses React for instant responses, with cache invalidation critical in real-time systems.

1. React and Real-Time Systems

Short description:

Shubham, senior software engineer at Headout, works on DeX Studio, an internal tool for creating audio doors. Building a door-style template editor inside it, encountering challenges when React meets real-time systems. Discussing Fourier mode, architectural shift, resulting patterns, and trade-offs. Story begins with audio track issues caused by React framework's architectural limitations. React's render cycle design features like concurrent rendering, time slicing, and suspense provide flexibility in work execution.

Hi everyone, I'm Shubham. I'm a senior software engineer at Headout. I work on DeX Studio, which is an internal tool for creating audio doors. So, creators use it to script, edit, and publish doors. And recently, we started building something much more ambitious inside it, which is a door-style template editor. So, think of multi-track playbacks, scrubbing, feeds, a 60fps canvas playhead. So, basically, all the things that you would expect from a desktop audio editor, except this one runs inside a React app in the browser.

And while building it, I spent a lot of time running into this one very specific problem, which is what happens when React meets real-time systems? And that's also what this talk is about, which is what happens when you ask a reconciliation engine to behave like a clock, and more importantly, how to architect your way around that fight. So, over the next 15 to 20 minutes, I'm going to walk through four things. First, the exact Fourier mode that we had. Second, the architectural shift that fixed it. Third, the patterns that actually fall out of that model. And finally, we'll discuss the trade-offs, because this architecture absolutely works, but it comes with real costs.

So, now, here's where this story actually started for me. I want you to imagine three audio tracks, a red playhead moving smoothly across the screen. It's supposed to glide at 60 frames per second, but it just doesn't. It's jittering, the audio between the tracks is drifting, and every scrub is actually introducing a new lag. And the weird part was, this wasn't a hardware issue. This wasn't a bundler-on-a-network issue either. This was React 19 running on a fast machine, and here, the framework was fighting us at the architectural level. In hindsight, the mistake was obvious. We're asking React to be a real-time clock, and it isn't one. It was never designed to be one. And today, I want to show you what to do instead. So, let's dive in. If we talk about React, React's render cycle is eventually consistent by design. And honestly, that's actually a feature, not a flaw. So, if you think about things like concurrent rendering, time slicing, transitions, suspense, and even the new activity boundary, they all make the same trade. React gives itself freedom to decide when the work happens. It's the framework which chooses the exact moment.

2. React's Flexibility and Real-Time Systems

Short description:

React's flexibility for smooth load handling clashes with real-time systems' fixed schedule requirements. Mismatch arises when React's deferred work conflicts with real-time systems' immediacy, causing issues like audio drift and jitter. Implementing a DOS 10 editor in a React app exposed challenges with playhead jittering and audio track drift due to React's batching mechanisms.

And that flexibility is exactly how React stays so smooth under the load, even instead of collapsing. But honestly, real-time systems cannot make that trade. And when I say real-time, I just don't mean audio. Audio playback is obviously one of the examples, but the same problem shows up everywhere. So, think of a 60 hertz Canvas playhead. Think of a financial ticker that's updating prices live. Think of a robot control loop. All of these systems have one thing in common. They depend on a clock that advances on a fixed schedule. And that sort of creates a fundamental mismatch.

So, if you think about React's model, React's model is allowed to defer, reorder, or even interrupt work. But real-time systems do not have that flexibility. So, when you combine these two models naively together, React eventually wins. This is because it's React who decides when your updates are being committed. And because of this, users experience that mismatch directly. They hear it as audio drifts, they feel it as C clags, they see it as drop frames, and even jittering motions. This gap between two models, between eventually consistent and must happen now, that's the entire problem that we are going to discuss.

So, let's see what's the exact problem that we ran into. So, we were actually building a DOS 10 editor inside a React app. So, think of three audio tracks, a Canvas playhead running at 60 FPS. We had scrubbing, we had fade, we had click to see. And at first, we implemented it the obvious way. We had a use state that was keeping a track of current time and we also had a set interval that was taking every 16 milliseconds to maintain at least 60 frames per second to work on a 60 FPS display. And React was re-rendering the UI on every update. But it actually failed in three very specific ways. First, the playhead started jittering. It was happening because React was batching some of our 60 FPS updates together to prioritize some other work. So, our playhead started skipping things. Second, the audio between tracks started to drift. This was happening because each basically track component subscribed to React state independently.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Scaling Up with Remix and Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Understanding React’s Fiber Architecture
React Advanced 2022React Advanced 2022
29 min
Understanding React’s Fiber Architecture
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Thinking Like an Architect
Node Congress 2025Node Congress 2025
31 min
Thinking Like an Architect
Top Content
In modern software development, architecture is more than just selecting the right tech stack; it involves decision-making, trade-offs, and considering the context of the business and organization. Understanding the problem space and focusing on users' needs are essential. Architectural flexibility is key, adapting the level of granularity and choosing between different approaches. Holistic thinking, long-term vision, and domain understanding are crucial for making better decisions. Effective communication, inclusion, and documentation are core skills for architects. Democratizing communication, prioritizing value, and embracing adaptive architectures are key to success.
Full Stack Components
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
The Dark Side of Micro-Frontends
React Advanced 2025React Advanced 2025
29 min
The Dark Side of Micro-Frontends
In the Talk, various key points were discussed regarding micro-front-end architecture. These included challenges with micro-intents, common mistakes in system design, the differences between micro-intents and components, granularity in software architecture, optimizing micro-front-end architecture, efficient routing and deployment strategies, edge computing strategies, global state and data sharing optimization, managing data context, governance and fitness functions, architectural testing, adaptive growth, value of micro-frontends, repository selection, repo structures, and web component usage.
The Eternal Sunshine of the Zero Build Pipeline
React Finland 2021React Finland 2021
36 min
The Eternal Sunshine of the Zero Build Pipeline
For many years, we have migrated all our devtools to Node.js for the sake of simplicity: a common language (JS/TS), a large ecosystem (NPM), and a powerful engine. In the meantime, we moved a lot of computation tasks to the client-side thanks to PWA and JavaScript Hegemony.
So we made Webapps for years, developing with awesome reactive frameworks and bundling a lot of dependencies. We progressively moved from our simplicity to complex apps toolchains. We've become the new Java-like ecosystem. It sucks.
It's 2021, we've got a lot of new technologies to sustain our Users eXperience. It's time to have a break and rethink our tools rather than going faster and faster in the same direction. It's time to redesign the Developer eXperience. It's time for a bundle-free dev environment. It's time to embrace a new frontend building philosophy, still with our lovely JavaScript.
Introducing Snowpack, Vite, Astro, and other Bare Modules tools concepts!

Workshops on related topic

AI on Demand: Serverless AI
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
High-performance Next.js
React Summit 2022React Summit 2022
50 min
High-performance Next.js
Workshop
Michele Riva
Michele Riva
Next.js is a compelling framework that makes many tasks effortless by providing many out-of-the-box solutions. But as soon as our app needs to scale, it is essential to maintain high performance without compromising maintenance and server costs. In this workshop, we will see how to analyze Next.js performances, resources usage, how to scale it, and how to make the right decisions while writing the application architecture.
Model Context Protocol (MCP) Deep Dive: 2-Hour Interactive Workshop
AI Coding Summit 2025AI Coding Summit 2025
86 min
Model Context Protocol (MCP) Deep Dive: 2-Hour Interactive Workshop
Workshop
Stepan Suvorov
Stepan Suvorov
Join a focused 2-hour session covering MCP's purpose, architecture, hands-on server implementation, and future directions. Designed for developers and system architects aiming to integrate contextual data with ML models effectively. Agenda:- Introduction & Why MCP? Key challenges MCP solves and core benefits.- Architecture Deep Dive: components, interactions, scalability principles. - Building Your Own MCP Server: guided walkthrough with code snippets and best practices; live demo or code review.- Future of MCP Developments: potential enhancements, emerging trends, real-world scenarios.
Key Takeaways:- Clear understanding of MCP's rationale.- Insight into design patterns and scaling considerations.- Practical steps to implement a prototype server.- Awareness of upcoming trends and how to apply MCP in projects. 
From Async Chaos to Deterministic React: Hands-On State Machine Architecture for Real-Time Systems
React Summit 2026React Summit 2026
86 min
From Async Chaos to Deterministic React: Hands-On State Machine Architecture for Real-Time Systems
Workshop
Rajni Gediya
Rajni Gediya
Mentorship available
As React apps move into real-time systems — streaming data, AI workflows, hardware devices — async complexity grows quickly. Reducers and scattered async handlers often work at first, but once concurrency and lifecycle interruptions enter the picture, things start to break in subtle ways.
In this hands-on workshop, we’ll take a fragile async React setup and redesign it into a deterministic, state-machine-driven architecture. The goal isn’t to teach a specific library, but to show how explicit state modeling makes complex systems easier to reason about and more reliable in production.
Node's Concurrency With the Strength of a Bull With BullMQ
Node Congress 2026Node Congress 2026
95 min
Node's Concurrency With the Strength of a Bull With BullMQ
Workshop
Edy Silva
Douglas Marques
2 authors
Node's concurrent nature is powerful already, but often we need to push work out of the main server for several reasons. In this work, we will explore a few scenarios in which work is cleverly pushed to another Node process to resolve.
Once we use a queue to distribute workloads, we need to identify the nature of the work to be done. For either I/O- or CPU-intensive work, the first is already perfectly covered by a single Node.js process; we will need to tweak the worker setup to match the available resources and throughput.