OPEN HYPER STEP
← 목록으로 (React)
REACT · 3 / 34
react
CHAPTER 3 / 34
읽기 약 2
SYNTAX

React로 만드는 대표기업 서비스


핵심 개념

Meta·Airbnb·Netflix·Discord·Figma가 실제로 사용하는 React 기법과 기초→중급→심화 프롬프트를 사례별로 분석한다.

본문

React는 단순한 UI 라이브러리가 아닙니다. Meta·Airbnb·Netflix·Discord·Figma 같은 세계적 기업이 어떤 핵심 기법으로 복잡한 UI를 만드는지 살펴보고, 같은 기법을 적용하는 AI 프롬프트를 기초부터 심화까지 제공합니다.


1. Facebook/Meta — 뉴스피드 (가상 DOM, 무한 스크롤)

사용 기술: Virtual DOM, React.memo, IntersectionObserver, Suspense

Meta는 React를 직접 만든 회사입니다. 수억 사용자의 뉴스피드를 매끄럽게 보여주기 위해 Virtual DOM 차이 계산과 메모이제이션을 풀어 사용합니다.

🟢 기초

📋 코드 (2줄)
React의 Virtual DOM이 무엇인지
실제 DOM과 비교한 다이어그램 + 코드 예시로 알려줘.

🟡 중급

📋 코드 (3줄)
IntersectionObserver + useState로
뉴스피드 무한 스크롤 컴포넌트를 만들어줘.
중복 호출 방지 + 로딩 인디케이터 포함.

🔵 심화

📋 코드 (3줄)
10만 개 포스트도 부드러운 가상 스크롤(react-virtuoso 없이)을
직접 구현하는 컴포넌트를 설계해줘.
visible window + recycle + measure 포함.

2. Airbnb — 검색 + 필터 + 지도 (상태 관리, 컴포넌트 합성)

사용 기술: URL 상태 동기화, 컴포넌트 합성(Compound Component), Context

Airbnb 검색 페이지는 필터·지도·결과 리스트가 동시에 변합니다. URL이 진실의 소스(SSOT)가 되어 모든 컴포넌트가 동일 상태를 공유합니다.

🟢 기초

📋 코드 (2줄)
useState로 검색어 입력 + 결과 필터를 만들어줘.
간단한 배열에서 includes로 필터링.

🟡 중급

📋 코드 (3줄)
React Router의 useSearchParams로 URL 쿼리스트링과
필터 상태를 동기화해줘.
새로고침해도 필터 유지 + 뒤로가기 동작.

🔵 심화

📋 코드 (3줄)
Airbnb 같은 검색 페이지를 설계해줘.
Compound Component 패턴(Search.Filter, Search.Map, Search.Results) +
URL을 SSOT로 + 지연 로딩 + 페이지네이션 + 접근성.

3. Netflix — 미디어 카드 캐러셀 (성능 최적화, lazy loading)

사용 기술: lazy/Suspense, prefetch, scroll virtualization, image priority

Netflix는 수많은 영상 카드를 부드럽게 스크롤합니다. 보이는 것만 렌더링하고 다음 카드는 미리 가져오는 전략이 핵심입니다.

🟢 기초

📋 코드 (2줄)
React.lazy + Suspense로 코드 분할하는 예시를 만들어줘.
어떤 라우트를 분할할지 추천도.

🟡 중급

📋 코드 (3줄)
Netflix 같은 가로 스크롤 캐러셀을 만들어줘.
scroll-snap-type + prev/next 버튼 +
키보드 ←→ 네비게이션 + 이미지 lazy.

🔵 심화

📋 코드 (3줄)
Netflix 수준의 미디어 페이지 성능을 설계해줘.
포함: route prefetch / image priority / Suspense streaming /
useDeferredValue로 입력 우선순위 / Web Vitals 모니터링.

4. Discord — 실시간 채팅 UI (WebSocket + 상태 동기화)

사용 기술: WebSocket, useReducer, Optimistic UI, 가상 리스트

Discord 채팅은 실시간 + 수만 메시지 + 부드러운 스크롤이 동시에 필요합니다.

🟢 기초

📋 코드 (2줄)
useState로 메시지 리스트와 입력창을 만들어줘.
Enter 키로 메시지 추가 + 스크롤 자동 하단.

🟡 중급

📋 코드 (3줄)
useReducer로 메시지 상태(추가/수정/삭제/낙관적 업데이트)를
관리하는 채팅 UI를 만들어줘.
WebSocket 연결 모킹 포함.

🔵 심화

📋 코드 (3줄)
Discord 수준의 채팅 UI를 설계해줘.
포함: 채널 전환 시 상태 격리 / 가상 리스트 /
타이핑 인디케이터 / 끊김 시 큐잉 + 재전송 / 접근성.

5. Figma — 복잡한 UI (Canvas + React 결합)

사용 기술: Canvas, useRef, requestAnimationFrame, 명령형 핸들

Figma는 React로 패널·툴바를 그리고, 캔버스 영역만 직접 렌더링하는 하이브리드 구조입니다.

🟢 기초

📋 코드 (2줄)
useRef로 canvas 요소에 접근하고
사각형을 그리는 React 컴포넌트를 만들어줘.

🟡 중급

📋 코드 (3줄)
React 컴포넌트로 자유롭게 그리기 도구를 만들어줘.
useRef + requestAnimationFrame +
포인터 이벤트 + 색상/굵기 툴바.

🔵 심화

📋 코드 (3줄)
Figma 같은 캔버스 + 패널 하이브리드 아키텍처를 설계해줘.
React는 패널·UI / Canvas는 직접 렌더 /
명령형 핸들(useImperativeHandle) / 성능 / 협업.

💡 기업 React의 공통 원칙

원칙설명기업
가상화보이는 것만 렌더링Meta, Discord
URL이 SSOT새로고침/공유 가능한 상태Airbnb
코드 분할route 단위 lazyNetflix
명령형 탈출구useRef/useImperativeHandleFigma
낙관적 UI응답 전 미리 반영Discord

💻 5가지 기법 미니 데모

JSX📋 코드 (56줄)
// 대표기업 React 기법 5가지 — 미니 데모
import { useState, useEffect, useRef, useReducer, lazy, Suspense } from 'react';

// 1. Meta: 무한 스크롤
function Feed({ fetchPage }) {
  const [posts, setPosts] = useState([]); const [page, setPage] = useState(1);
  const sentinel = useRef(null);
  useEffect(() => {
    const io = new IntersectionObserver((es) => es[0].isIntersecting && setPage(p => p + 1), { rootMargin: '200px' });
    sentinel.current && io.observe(sentinel.current);
    return () => io.disconnect();
  }, []);
  useEffect(() => { fetchPage(page).then(p => setPosts(prev => [...prev, ...p])); }, [page, fetchPage]);
  return (<>{posts.map(p => <article key={p.id}>{p.title}</article>)}<div ref={sentinel} /></>);
}

// 2. Airbnb: URL 상태 동기화 (가상 useSearchParams)
function useUrlState(key) {
  const [v, setV] = useState(() => new URLSearchParams(location.search).get(key) || '');
  useEffect(() => {
    const sp = new URLSearchParams(location.search); sp.set(key, v);
    history.replaceState(null, '', '?' + sp.toString());
  }, [v, key]);
  return [v, setV];
}

// 3. Netflix: 코드 분할
const Profile = lazy(() => import('./Profile'));
function App() { return <Suspense fallback='로딩...'><Profile /></Suspense>; }

// 4. Discord: useReducer + 낙관적 UI
function chatReducer(state, action) {
  if (action.type === 'add') return [...state, action.msg];
  if (action.type === 'confirm') return state.map(m => m.tempId === action.tempId ? action.msg : m);
  return state;
}
function Chat() {
  const [messages, dispatch] = useReducer(chatReducer, []);
  function send(text) {
    const tempId = Date.now();
    dispatch({ type: 'add', msg: { tempId, text, pending: true } }); // 낙관적
    fetch('/api/messages', { method: 'POST', body: JSON.stringify({ text }) })
      .then(r => r.json()).then(msg => dispatch({ type: 'confirm', tempId, msg }));
  }
  return <button onClick={() => send('hi')}>Send</button>;
}

// 5. Figma: useRef + Canvas
function Sketch() {
  const ref = useRef(null);
  useEffect(() => {
    const ctx = ref.current?.getContext('2d');
    ctx && ctx.fillRect(20, 20, 100, 100);
  }, []);
  return <canvas ref={ref} width={400} height={300} />;
}

AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

Meta, Airbnb, Netflix, Discord, Figma의 React 코드 패턴에서
공통적으로 쓰이는 컴포넌트 설계·상태 관리 기법을
초보자도 따라 할 수 있게 분석해줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

React로 만든 실전 서비스 사례를
SPA/SaaS/디자인시스템 3유형 × 3개씩
실제 회사 이름과 함께 보여줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

Meta·Airbnb·Netflix·Discord·Figma의 React 앱을
번들 크기, 렌더링 전략, 상태 관리 측면에서
비교 리포트로 만들어줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

2026년 React 18·19 시대에
Netflix·Airbnb 같은 회사가 여전히 React를 쓰는 이유와
Next.js·Remix로 옮기는 트렌드를 솔직히 알려줘.

⭐ 이것만 기억하세요
React로 만드는 대표기업 서비스 이 3가지만 확실히 잡으세요
1.Meta(가상 DOM)·Airbnb(URL SSOT)·Netflix(코드분할)·Discord(useReducer)·Figma(Canvas) — 세계적 React 기법
2.각 사례마다 기초→중급→심화 3단계 프롬프트로 직접 구현 가능
3.다음 챕터에서 11개 AI 프롬프트로 React 학습을 200% 가속


공유하기
진행도 3 / 34