코딩

React 19 새로운 훅 대공개! 개발자의 삶이 바뀐다

A PENGUIN 2025. 2. 10. 20:30

리액트 공식 홈페이지 이미지

 

React 19가 드디어 등장했고, 이번에도 개발자의 삶을 편하게 만들어 줄 새로운 훅들이 추가됐어요. 솔직히 React 팀이 매번 "개발자 경험 개선"을 내세우지만, 정작 써보면 "이걸 왜 이제야 넣어줬지?" 싶은 기능들이 많죠. 이번에도 그런 신박한 훅들이 등장했는데, 하나씩 파헤쳐 보겠습니다. 🧐

 

새로운 훅 요약표 📝

훅 이름 역할 및 특징
use 렌더링 중 프로미스 및 컨텍스트를 쉽게 가져오기
useActionState 액션 처리 및 상태 관리를 더욱 직관적으로 수행
useOptimistic 낙관적 업데이트(Optimistic UI) 지원
useFormState 폼 상태를 쉽게 관리
useFormStatus 폼의 제출 상태를 확인

 

이제 각 훅이 얼마나 강력한 기능을 가지고 있는지 차근차근 살펴볼까요? 👀

 

🔥 use: "useEffect 안 써도 됨!"

use 훅은 렌더링 중에 데이터를 가져올 수 있도록 해주는 마법 같은 기능을 합니다. 기존에는 useEffect를 이용해 데이터를 가져오고 상태를 관리해야 했지만, 이제는 한 줄이면 끝납니다.

const comments = use(commentsPromise);
const theme = use(ThemeContext);

 

👆 보이시죠? 그냥 use 안에 프로미스를 넣으면 끝! useEffect + useState 콤보로 데이터를 관리하던 번거로움을 날려버릴 수 있어요.

 

💡 개발자의 현실적인 생각:

  • "React가 드디어 SSR(Server Side Rendering)과의 궁합을 더 신경 쓰기 시작했구나."
  • "이거 혹시 Suspense랑 찰떡궁합 아니야?"
  • "이제 useEffect 줄일 수 있다! 🎉"

 

🚀 useActionState: 액션 처리도 간편하게!

기존의 useFormState를 개선한 훅으로, 단순히 폼뿐만 아니라 모든 액션 상태를 관리할 수 있도록 만들어졌어요.

const [state, action, isPending] = useActionState(async (_, formData) => {
  const newName = await updateName(formData.get("name"));
  return newName;
}, "");

 

기존에는 폼을 관리하려면 useReducer와 비슷한 방식으로 여러 상태를 관리해야 했지만, 이제 한 방에 해결됩니다.

 

💡 개발자의 현실적인 생각:

  • "이제 useReducer 덜 써도 되겠네?"
  • "서버 액션이랑 궁합이 좋을 것 같은데?"
  • "React 팀, 이거 좀 늦게 내놓은 거 아닌가요? 😤"

 

useOptimistic: 사용자 경험을 극대화하는 낙관적 업데이트

useOptimistic 훅은 네트워크 응답을 기다리지 않고, UI를 먼저 업데이트할 수 있도록 해줘요. 요즘 사용자들은 "클릭하고 바로 반응이 없으면 짜증" 내기 때문에, 이 기능은 필수입니다.

const [optimisticState, addOptimistic] = useOptimistic(
  state,
  (currentState, optimisticValue) => {
    return [...currentState, optimisticValue];
  }
);

 

이 훅을 이용하면, 사용자가 "좋아요" 버튼을 클릭했을 때 네트워크 응답을 기다리지 않고 바로 UI를 업데이트할 수 있어요.

 

💡 개발자의 현실적인 생각:

  • "이제 '좋아요' 버튼 누르고 3초 기다리는 시대는 끝났다!"
  • "서버랑 싱크 안 맞을 수도 있는데 괜찮나? 🤔"
  • "이거 안 쓰면 유저들한테 욕먹겠는데?"

 

📌 useFormState & useFormStatus: 폼 관리 끝판왕

React 19에서는 폼 관련 훅도 대폭 개선됐어요. useFormState는 폼 상태를 관리하는 데 사용되고, useFormStatus는 폼이 제출 중인지 아닌지를 확인하는 데 쓰입니다.

const [state, formAction] = useFormState(action, null);

 

폼 제출이 얼마나 진행되었는지 체크하고, 상태를 추적하는 데 유용합니다. 이제 폼을 관리하면서 "지금 제출 중인지?" 를 쉽게 알 수 있어요.

 

💡 개발자의 현실적인 생각:

  • "이거 안 쓰면 또 isSubmitting 상태 만들어야겠지?"
  • "서버 액션이랑 같이 쓰면 정말 강력하겠다!"
  • "React, 드디어 폼 관리의 고통을 덜어주려 하는군... 😭"

 

📢 React 19가 바꿔놓을 미래 🔮

React 19의 새로운 훅들은 "지금까지 개발자들이 고생했던 문제들" 을 해결하려는 방향으로 설계됐어요. 특히, use 훅을 통한 데이터 페칭 간소화, useOptimistic을 이용한 UX 개선, 그리고 useActionState를 활용한 액션 관리 최적화 등은 실무에서 당장 적용해볼 만한 기능들입니다.

 

새로운 훅 기대 효과 📈
use 데이터 페칭 & 컨텍스트 접근 간소화
useActionState 액션 처리 로직 간소화
useOptimistic 네트워크 지연 없는 부드러운 UX 제공
useFormState 폼 상태 관리 자동화
useFormStatus 폼 제출 상태 확인 용이

 

이제 React 19가 배포되면 "이걸 당장 써야 하나?" 고민이 들겠죠?

 

📌 제 생각은 이렇습니다:

  • "서버 액션을 적극 활용하는 프로젝트라면 무조건 도입!"
  • "기존 코드가 너무 복잡하다면, 신규 기능을 활용해 리팩토링 추천!"
  • "하지만, 기존 프로젝트에서 무작정 도입하는 건 지양! (마이그레이션 비용이 있을 수도 있음)"

React 19, 과연 우리 개발자의 삶을 바꿔놓을 수 있을까요? 여러분의 선택은? 🤔