← 홈으로 돌아가기

React 19 새로운 기능들

React 19에서 추가된 새로운 기능들과 사용법에 대해 알아보겠습니다.

React 19가 정식 출시되었습니다! 이번 버전에서는 많은 새로운 기능들이 추가되었는데, 오늘은 그 중에서도 가장 주목할 만한 기능들을 살펴보겠습니다.

React 19의 주요 개선사항

React 19는 성능, 개발자 경험, 그리고 새로운 기능 측면에서 큰 발전을 이루었습니다. 특히 Concurrent Features와 관련된 기능들이 많이 개선되었습니다.

1. 자동 배치 처리 (Automatic Batching)

React 18에서 도입된 자동 배치 처리가 React 19에서 더욱 개선되었습니다. 이제 모든 업데이트가 자동으로 배치 처리되어 불필요한 리렌더링을 줄여줍니다.

// React 19에서는 모든 업데이트가 자동으로 배치 처리됩니다
function handleClick() {
  setCount(c => c + 1); // 첫 번째 업데이트
  setFlag(f => !f);     // 두 번째 업데이트
  // 두 업데이트가 하나의 배치로 처리되어 한 번만 리렌더링됩니다
}

2. 새로운 Hooks

React 19에서는 몇 가지 새로운 Hooks가 추가되었습니다:

use() Hook

Promise나 Context를 더 쉽게 사용할 수 있게 해주는 새로운 Hook입니다.

import { use } from 'react';

function MyComponent() {
  const data = use(fetchData()); // Promise를 직접 사용할 수 있습니다
  return 
{data.title}
; }

useOptimistic Hook

낙관적 업데이트를 쉽게 구현할 수 있게 해주는 Hook입니다.

import { useOptimistic } from 'react';

function TodoList({ todos }) {
  const [optimisticTodos, addOptimisticTodo] = useOptimistic(
    todos,
    (state, newTodo) => [...state, newTodo]
  );
  
  async function addTodo(text) {
    addOptimisticTodo({ id: Date.now(), text, completed: false });
    await saveTodo(text);
  }
  
  return (
    
    {optimisticTodos.map(todo => (
  • {todo.text}
  • ))}
); }

3. 개선된 Suspense

Suspense가 더욱 강력해졌습니다. 이제 서버 컴포넌트와 함께 사용할 때 더 나은 로딩 상태를 제공할 수 있습니다.

import { Suspense } from 'react';

function App() {
  return (
    }>
      
    
  );
}

4. 서버 컴포넌트 개선

서버 컴포넌트가 더욱 안정적이고 성능이 개선되었습니다. 특히 하이드레이션 과정에서의 성능이 크게 향상되었습니다.

마이그레이션 가이드

React 18에서 React 19로 마이그레이션하는 것은 비교적 간단합니다. 대부분의 기존 코드는 그대로 작동하지만, 몇 가지 주의사항이 있습니다:

  • React.StrictMode의 동작이 변경되었습니다
  • 일부 deprecated된 API들이 제거되었습니다
  • 개발자 도구가 업데이트되었습니다

성능 개선

React 19에서는 전반적인 성능이 크게 개선되었습니다:

  • 번들 크기가 약 5% 감소했습니다
  • 메모리 사용량이 개선되었습니다
  • 하이드레이션 성능이 향상되었습니다
  • Concurrent Features의 성능이 개선되었습니다

마무리

React 19는 정말 흥미로운 업데이트입니다. 새로운 Hooks들과 개선된 성능으로 더 나은 사용자 경험을 제공할 수 있게 되었습니다.

앞으로 React 19의 새로운 기능들을 활용해서 더 나은 애플리케이션을 만들어보고 싶습니다. 특히 useOptimistic Hook과 개선된 Suspense 기능을 활용한 프로젝트를 만들어보고 싶네요.