Next.js 렌더링 성능 최적화: React 화면이 느릴 때 기준

2025.12.05·수정 2026.09.12·약 6분·작성: 해비·블로그 소개

학습 목표·선수 지식: 입력 상태를 필요한 하위 트리에 두고 렌더 비용을 비교합니다. 선수 지식: React props·state.

입력 반응과 초기 응답은 따로 측정합니다

SSR은 서버에서 HTML을 만드는 방식입니다. 서버 조회가 느리면 초기 응답도 느릴 수 있고, HTML이 빨리 도착해도 큰 클라이언트 렌더가 입력을 막을 수 있습니다. 화면이 느린 순간이 첫 방문인지 검색어 입력인지 먼저 구분합니다.

검색 상태를 사용하는 컴포넌트에 둡니다

아래는 기존 App Router 프로젝트의 app/page.tsx 전체 교체 예제입니다. 입력하면 대소문자를 무시한 목록과 건수가 바뀝니다. Summary는 SearchPanel의 형제이므로 검색 state 업데이트로 부모 Page가 다시 실행되지 않습니다. 항목이 세 개뿐이라 메모이제이션부터 추가하지 않습니다.

app/page.tsx · 전체 파일

"use client";
import { useState } from "react";
const items = ["App Router", "Server Component", "Suspense"];
function SearchPanel() {
  const [keyword, setKeyword] = useState("");
  const visible = items.filter((item) =>
    item.toLowerCase().includes(keyword.toLowerCase()),
  );
  return (
    <section>
      <label>
        검색{" "}
        <input
          value={keyword}
          onChange={(event) => setKeyword(event.target.value)}
        />
      </label>
      <ul>
        {visible.map((item) => (
          <li key={item}>{item}</li>
        ))}
      </ul>
      <p>{visible.length}건</p>
    </section>
  );
}
function Summary() {
  return <aside>입력 상태와 무관한 안내</aside>;
}
export default function Page() {
  return (
    <main>
      <h1>렌더 범위 비교</h1>
      <SearchPanel />
      <Summary />
    </main>
  );
}

수정 전과 후를 같은 조작으로 비교합니다

비교 전에는 keyword를 Page에 두고 SearchPanel에 props로 전달해 보세요. React DevTools Profiler 기록을 시작하고 같은 문자열 router를 입력합니다. Summary가 어느 커밋에 렌더됐는지 기록한 뒤 state를 위 코드처럼 옮겨 다시 측정합니다. React Compiler 사용 여부, Strict Mode, 기기와 목록 크기를 고정하세요. 개발 측정과 production 응답 속도를 섞지 않습니다.

관찰 다음 수정 기대 변화
형제 컴포넌트가 입력마다 렌더 상태 소유 위치 축소 관련 없는 형제 렌더 감소
필터 계산 자체가 오래 걸림 측정 후 useMemo·알고리즘 비교 같은 의존성에서 계산 재사용
긴 목록 DOM 생성이 지배적 페이지네이션·가상화 검토 동시에 만드는 요소 감소
큰 초기 JS 다운로드 클라이언트 경계·지연 로딩 검토 초기 전송량 감소

메모이제이션은 어떤 값을 재사용할까요?

API 재사용 대상 한계
memo 같은 props의 컴포넌트 결과 자체 state·context 변경은 렌더될 수 있음
useMemo 의존성이 같은 계산 결과 검색어가 바뀌면 필터 계산도 다시 필요
useCallback 함수 참조 함수 호출 비용 자체를 없애지 않음

프레임워크 이름만으로 성능 순위를 매기지 않습니다. 같은 데이터·렌더링 방식·빌드·기기에서 비교해야 원인을 해석할 수 있습니다. 이 글에서는 브라우저 Profiler 수치를 측정하지 않았으므로 속도 향상 퍼센트를 제시하지 않습니다.

Next.js 렌더링 성능 최적화: React 화면이 느릴 때 기준 핵심 개념을 설명하는 첫 번째 본문 이미지Next.js 렌더링 성능 최적화: React 화면이 느릴 때 기준 적용 흐름을 설명하는 두 번째 본문 이미지Next.js 렌더링 성능 최적화: React 화면이 느릴 때 기준 참고 내용을 설명하는 본문 이미지 3Next.js 렌더링 성능 최적화: React 화면이 느릴 때 기준 참고 내용을 설명하는 본문 이미지 4Next.js 렌더링 성능 최적화: React 화면이 느릴 때 기준 참고 내용을 설명하는 본문 이미지 5

관련 학습 자료

공식 기준과 확인 범위

확인일: 2026-09-12. API 설명은 Next.js 16 App Router 기준이며 과거 릴리스 글은 본문의 태그 범위를 유지합니다. 부분 API 코드는 기존 프로젝트에 통합하는 예시입니다.

공식 자료 재확인: 2026-09-12. 이 글의 실행하지 않은 브라우저/배포 점검은 독자 확인 과제로 구분합니다.

이 글이 도움이 되었나요?

조회 중

Next.js 학습 순서

필수 13개 · 전체 27개

읽음 기록 관리

전체 과정 목차 (27개)
  1. 필수 길잡이 · Next.js App Router 학습 순서: 설치부터 배포까지
  2. 필수 학습 · Next.js package.json: scripts dependencies 이해
  3. 필수 학습 · Next.js App Router로 만드는 첫 프로젝트 완성 실습 가이드
  4. 필수 학습 · Next.js에서 .next 폴더는 어떤 역할을 할까?
  5. 필수 학습 · Next.js 동적 라우트 완전 정리: [slug], params, catch-all
  6. 선택 참고 · Next.js params should be awaited 해결: App Router 기준
  7. 선택 참고 · Next.js window is not defined 오류 해결: 브라우저 API를 안전하게 쓰기
  8. 선택 참고 · Next.js hydration failed 오류 해결: 원인과 해결 방법
  9. 필수 학습 · Axios 사용법: React Next.js에서 API 요청 구조 잡는 법
  10. 선택 참고 · Next.js Route Handler 405 오류 해결: GET/POST 파일 위치와 메서드 설정 확인
  11. 필수 학습 · Next.js Server Actions + React Hook Form 검증 기준
  12. 선택 참고 · Next.js useSearchParams Suspense 오류 해결: 빌드 실패 기준
  13. 선택 참고 · Next.js fetch 캐시 문제 해결: 데이터가 바뀌었는데 화면이 그대로일 때
  14. 선택 참고 · Next.js Dynamic server usage 오류 해결: cookies headers 기준
  15. 선택 참고 · Next.js 환경변수 적용 오류 해결: .env.local을 바꿨는데 값이 안 바뀔 때
  16. 필수 학습 · Next.js Metadata API 완전 정리: 정적 metadata와 generateMetadata
  17. 선택 참고 · Next.js metadata가 적용되지 않을 때 확인할 7가지
  18. 선택 참고 · Next.js Image remotePatterns 오류 해결: 외부 이미지 도메인 허용하기
  19. 필수 학습 · Next.js redirects 설정: next.config.js에서 URL 이동 처리
  20. 필수 학습 · Next.js SEO 체크리스트: metadata·초기 HTML·OG 이미지 점검
  21. 선택 참고 · Next.js SEO 완전 가이드: App Router metadata부터 배포 확인까지
  22. 필수 학습 · Next.js 16 성능 최적화 체크리스트: 번들·이미지·캐시·배포
  23. 필수 학습 · Next.js 렌더링 성능 최적화: React 화면이 느릴 때 기준 현재 글
  24. 필수 학습 · Next.js 16 Proxy 마이그레이션: Node.js Runtime·matcher 검증
  25. 선택 참고 · Next.js 보안 패치 기준: v16.2.5 영향 범위 점검
  26. 선택 참고 · Next.js SEO SSR 적용법: 검색 노출과 렌더링 구조 잡기
  27. 시점·기록 · Next.js 16.3.0-canary.106의 useCache deprecation 경고와 hybrid not-found 수정 이해하기

새 글 받아보기

RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.

RSS 피드 구독하기

댓글 남기기