Skip to content

React 18 Concurrency: Transitions, Interruptible Rendering, and Why INP Improves

How React 18 scheduling works: urgent vs non-urgent updates, useTransition, interruptible rendering, and how these tools improve responsiveness (INP).

Rajesh DhimanMarch 01, 20261 min read
On this page

What you’ll learn

  • What “concurrent rendering” actually means (practically)
  • Urgent vs non-urgent updates
  • useTransition and why it helps typing feel responsive
  • The connection to INP (Interaction to Next Paint)

The mental model: priority lanes

React 18 can schedule work with different priorities.

  • Urgent updates: typing, clicking, direct feedback
  • Non-urgent updates: rendering a huge filtered list, loading extra details

If expensive work blocks urgent feedback, the UI feels laggy → INP suffers.


Example: keep typing responsive with useTransition

import { useMemo, useState, useTransition } from 'react';
 
export function SearchList({ items }: { items: string[] }) {
  const [query, setQuery] = useState('');
  const [isPending, startTransition] = useTransition();
  const [deferredQuery, setDeferredQuery] = useState('');
 
  const filtered = useMemo(() => {
    // pretend this is expensive
    return items.filter((x) => x.toLowerCase().includes(deferredQuery.toLowerCase()));
  }, [items, deferredQuery]);
 
  return (
    <div>
      <input
        value={query}
        onChange={(e) => {
          const next = e.target.value;
          setQuery(next); // urgent
          startTransition(() => {
            setDeferredQuery(next); // non-urgent
          });
        }}
      />
      {isPending ? <div>Updating…</div> : null}
      <ul>
        {filtered.map((x) => (
          <li key={x}>{x}</li>
        ))}
      </ul>
    </div>
  );
}

What this does:

  • The input stays responsive (urgent update)
  • The expensive list update can be interrupted

Interview questions

Q1) What’s a transition?

30-second answer: A transition marks updates as non-urgent so React prioritizes urgent user feedback and can interrupt/restart rendering.

Q2) How does this relate to INP?

30-second answer: INP is about interaction responsiveness. If your main thread is busy rendering expensive updates, clicks/typing feel delayed. Transitions reduce that contention.


Quick recap

  • Concurrency is about scheduling priorities
  • useTransition helps keep interactions responsive
  • Use it when expensive UI updates block input
Companion Book

Looking for structured, offline interview prep?

Free online lessons • Portable Amazon Kindle / Paperback

Frontend Interview Guide (2025 Edition) cover
Recommended for React & Frontend Rounds

Frontend Interview Guide (2025 Edition)

By Rajesh Dhiman

Comprehensive preparation covering React internals, Web Performance, CSS architecture, and system design questions.

View on Amazon ↗Kindle & Paperback
JavaScript Interview Guide cover
Recommended for Core JS Rounds

JavaScript Interview Guide

By Rajesh Dhiman

Deep dive into the Event Loop, microtask draining, closures, prototypal inheritance, and asynchronous execution patterns.

View on Amazon ↗Kindle & Paperback

Note: All lessons on Frontend Interview remain completely free to read online. As an Amazon Associate, we may earn from qualifying purchases.

RD

Written by Rajesh Dhiman

Authored by Rajesh Dhiman and engineered at Eunix Tech. Focused on deep-dive frontend engineering, JavaScript runtime internals, React architecture, and web performance.