"매 single HTML shell 의 의 client-side routing + dynamic rendering 의 driven 의 web app 의 architecture.". 매 2010s 의 의 dominant pattern (AngularJS, Backbone, Ember → React, Vue, Angular), 매 2026 의 RSC / SSR / Islands 의 ascendency 의 의 SPA 의 niche 화 — 매 highly-interactive dashboards, internal tools, complex stateful UIs 의 의 the right tool 이며 marketing/content 의 의 의 SSG/SSR 의 권장.
매 핵심
매 정의
1 HTML document 의 load — subsequent navigation 의 JS 의 driven (no full page reload).
Client-side router 의 URL ↔ component tree 의 mapping.
Data 의 fetch via XHR/Fetch — JSON API or RPC.
State 의 client 의 in-memory (Redux, Zustand, Jotai, TanStack Query).
매 trade-offs
Pros: snappy in-app navigation, rich interactivity, app-like UX, shared state across views.
Cons: SEO 의 weak (without SSR), initial bundle 의 large, white screen 의 risk, accessibility 의 careful 의 wiring.
매 vs. modern alternatives
SSR / SSG (Next.js, Remix): server 의 HTML 의 generate, hydration 의 client interactivity 의 add.
언제: highly-interactive authenticated app, no SEO requirement, complex client state, real-time collaboration.
언제 X: marketing/content site (SSG), public SEO-critical content (SSR/RSC), simple form-driven app (MPA).
안티패턴
SPA 의 marketing site: SEO 의 weak, LCP 의 poor — SSG 의 사용.
Bundle 의 single chunk: route-based code splitting 의 default.
Auth state 의 localStorage 의 raw token: HttpOnly cookie + refresh flow 의 사용.
Client routing 의 server fallback 없음: 404 의 deep link 의 — historyApiFallback / catch-all rewrite.
No skeleton / suspense: white screen on slow data — Suspense + skeletons.
Global state 의 overuse: server state 의 TanStack Query, UI state 의 Zustand/Jotai 의 separate.