Skip to main content

What's New in React 18 – Concurrent Features

React 18 brought major changes to how React works under the hood, focusing on better user experience and performance with concurrent rendering.

Key Features in React 18

  • Automatic Batching
    Multiple state updates inside events, timeouts, or native handlers are now batched by default. This reduces unnecessary re-renders.
setCount(c => c + 1)
setFlag(f => !f)
// These are now batched automatically
  • startTransition
    Marks updates as non-urgent, so React can keep the UI responsive.
import { startTransition } from 'react'

startTransition(() => {
  setSearchQuery(input)
})

Use this for things like filtering lists, background tab updates, or lazy-loaded components.

  • Improved Suspense
    Suspense works more broadly now. It’s especially useful with streaming server rendering in frameworks like Next.js.
<Suspense fallback={<Loading />}>
  <Comments />
</Suspense>
  • New Root API
    You must now use createRoot from react-dom/client.
import { createRoot } from 'react-dom/client'

const root = createRoot(document.getElementById('root'))
root.render(<App />)
  • Concurrent Rendering
    Under the hood, React 18 introduces a concurrent renderer. It enables React to interrupt rendering to prioritize urgent tasks and continue where it left off.

This means:

  • React can render updates in the background.
  • Low-priority updates won’t block more important ones.
  • UIs feel faster and more responsive.

Breaking Changes to Know

  • useEffect Timing
    Effects now run after the layout and paint phase, closer to how the browser handles rendering. This change avoids blocking the browser's ability to paint updated content.

  • Third-Party Library Compatibility
    Some older React libraries may need updates to fully support concurrent features.

Final Thoughts

React 18 doesn’t force you to change your code, but to take full advantage of the new features, you’ll need to gradually adopt the new APIs. If you're using a framework like Next.js or Remix, many of these features are already baked in.

More posts

  • Claude Code: Part 11 - Troubleshooting and Recovery

    August 9, 2025

    Master Claude Code troubleshooting with systematic approaches to common issues: installation problems, CLAUDE.md conflicts, performance optimization, custom commands, MCP servers, hooks, and emergency recovery procedures.

  • Claude Code: Part 10 - Common Issues and Quick Fixes

    August 8, 2025

    Solve the most common Claude Code problems: context overflow, conflicting rules, token optimization, and broken custom commands. Quick troubleshooting for experienced users.

  • Claude Code: Part 9 - Complete Development Workflows

    August 7, 2025

    Learn how to combine all Claude Code features into complete development workflows. From feature planning to deployment, see how CLAUDE.md, slash commands, MCP servers, subagents, IDE integration, and hooks work together for seamless development.