2026.07.21
antd는 CSS-in-JS 방식으로 스타일을 생성한다. Next.js App Router 환경에서 SSR 시 서버에서 생성한 스타일이 클라이언트 hydration 시점에 주입되어 FOUC(Flash of Unstyled Content) 가 발생한다.
setTimeout 패턴const [renderLoading, setRenderLoading] = useState(true);
useEffect(() => {
const timer= setTimeout(() => {
setRenderLoading(false);
}, 100); // antd 스타일 주입 대기
}, []);
if (renderLoading) return <Skeleton />;
mounted 패턴const [mounted, setMounted] = useState(false);
useEffect(() => { setMounted(true); }, []);
if (!mounted) return <Skeleton />;
문제점:
@ant-design/nextjs-registry 적용antd 공식 제공 패키지. SSR 시 antd 스타일을 <style> 태그로 서버에서 미리 주입해줘 FOUC를 근본적으로 차단한다.
pnpm add @ant-design/nextjs-registry
apps/service/app/layout.tsx)import { AntdRegistry} from "@ant-design/nextjs-registry";
<AntdRegistry>
<QueryProvider>
{children}
</QueryProvider>
</AntdRegistry>