React Router v7은 React 애플리케이션의 라우팅을 개선하기 위해 여러 가지 새로운 기능과 성능 최적화를 도입했습니다. 아래에서는 v7에서 개선된 주요 기능과 업그레이드의 개발 철학을 정리하고, 관련 정보를 바탕으로 설명하겠습니다.
타입 안정성(Type Safety) 강화
v7에서는 TypeScript 통합이 크게 개선되어 더 강력한 타입 검사와 IDE에서의 자동 완성 지원을 제공합니다.
예를 들어, LoaderFunctionArgs와 같은 타입을 활용해 loader 함수에서 타입 안전한 응답을 보장합니다.
*// v6*
const loader = async ({ params }) => {
const user = await getUser(params.id);
return user;
};
*// v7*
const loader = async ({ params }: LoaderFunctionArgs) => {
const user = await getUser(params.id);
return json(user); *// 타입 안전한 응답*
};
이는 개발자가 더 안정적이고 유지보수 가능한 코드를 작성할 수 있도록 돕습니다. 링크
데이터 패칭(Fetching) 및 로더/액션 API 개선/사용 중단된 API
*// v6*
export async function loader() {
return json{ message: "Hello" };
}
*// v7*
export async function loader() {
return ({ message: "Hello" });
}
에러 핸들링 개선
const router = createBrowserRouter([
{
path: "/dashboard",
element: <Dashboard />,
errorElement: <DashboardError />,
children: [
{
path: "analytics",
element: <Analytics />,
errorElement: <AnalyticsError />,
loader: analyticsLoader
}
]
}
]);
React 18 Suspense 통합 강화
import { Suspense } from 'react';
import { Await, useLoaderData } from 'react-router-dom';
function ProductPage() {
const { product } = useLoaderData();
return (
<Suspense fallback={<ProductSkeleton />}>
<Await resolve={product}>
{(resolvedProduct) => <ProductDetails product={resolvedProduct} />}
</Await>
</Suspense>
);
}
패키지 통합 및 단순화
npm uninstall react-router-dom
npm install react-router@latest
프레임워크 모드(Framework Mode) 도입
Lazy Route Discovery 및 성능 최적화
미들웨어 기능 추가 (v7.3 이상)
Vite와의 통합 개선
React Router v7의 개발 철학은 React 생태계의 최신 트렌드(특히 React 18 및 19)와 통합되며, 단순한 라우터를 넘어 현대적인 웹 애플리케이션 개발의 요구를 충족하는 프레임워크로 진화하려는 데 초점이 맞춰져 있습니다. 주요 철학은 다음과 같습니다: