React Server Components를 위한 컴포넌트 아키텍처2026.06.01React Server Components를 위한 컴포넌트 아키텍처Next.jsReact번역 및 정리#suspense#architecture#react-server-components2026.06.01React Server Components를 위한 컴포넌트 아키텍처Next.jsReact번역 및 정리#suspense#architecture#react-server-components이 포스트는 Vercel의 Next.js 팀 소속 개발자 Aurora Scharff가 자신의 블로그에 올린 Component Architecture for React Server Components 게시글을 번역한 것이다. 번역하는 과정에서 다소 의역이 있을 수 있으며, 일부 번역에는…
렌더링 전략 정리2026.03.01렌더링 전략 정리Next.jsReact2026.03.01렌더링 전략 정리Next.jsReact리액트와 Next.js에서 렌더링 전략은 단순한 옵션 선택이 아니다. 이는 서비스의 초기 로딩 속도, 서버 비용, 캐싱 전략, SEO 노출, 개발 복잡도까지 동시에 좌우하는 아키텍처 결정이다. 프로젝트 규모가 커질수록 “어디에서 HTML을 생성하는가”, “언제 자바스크립트를 실행하는가”…
앱 라우터를 싫어하게 된 몇 가지 이유2025.07.15앱 라우터를 싫어하게 된 몇 가지 이유Next.js2025.07.15앱 라우터를 싫어하게 된 몇 가지 이유Next.js지금까지 진행한 대부분의 프로젝트에서는 Next.js의 페이지 라우터를 사용해왔지만, 이번에는 처음으로 앱 라우터(App Router)를 도입해보았다. 특별한 이유가 있었던 것은 아니고, 그저 기술적인 호기심 때문이었다. 서버 수준에서 처리되는 fetch cache나 서버 컴포넌트 개념…
Next.js 데이터 캐시와 크롬 개발자 도구2025.06.05Next.js 데이터 캐시와 크롬 개발자 도구Next.jsError Case#debugging#cache#chrome-devtools2025.06.05Next.js 데이터 캐시와 크롬 개발자 도구Next.jsError Case#debugging#cache#chrome-devtools상황 나는 page router를 좋아하지만, 이번에는 여러 사정이 있어서 app router를 쓰게 되었다. 이왕 쓰게 된 김에 이런 저런 기능을 몽땅 활용할 생각이었다. 가장 기대하던 기능은 데이터 캐싱이었는데, 가능한 많은 걸 캐싱해두면 랜더링 완료 시점을 한참 일찍 앞당길 수 있…
3. SharedWorker로 멀티탭 소켓을 하나로 묶기2025.05.263. SharedWorker로 멀티탭 소켓을 하나로 묶기Next.jsJavascriptReactWorker API in Next.js#Web Worker#SharedWorker2025.05.263. SharedWorker로 멀티탭 소켓을 하나로 묶기Next.jsJavascriptReactWorker API in Next.js#Web Worker#SharedWorker같은 서비스를 10개의 탭으로 열었을 때 서버에 소켓 연결도 10개가 생긴다면, 문제는 실시간 기능 자체가 아니라 브라우저 컨텍스트마다 연결을 새로 만드는 구조에 있을 수 있다. 채팅, 알림, 협업 상태처럼 페이지가 열려 있는 동안 유지되는 연결은 탭 수만큼 늘어날 때 서버와 클라이언트…
2. Dedicated Worker를 Next.js에서 안전하게 쓰기2025.05.262. Dedicated Worker를 Next.js에서 안전하게 쓰기Next.jsJavascriptReactWorker API in Next.js#Web Worker#SharedWorker2025.05.262. Dedicated Worker를 Next.js에서 안전하게 쓰기Next.jsJavascriptReactWorker API in Next.js#Web Worker#SharedWorkerWorker를 만들 수 있다는 사실보다 더 중요한 것은, Next.js가 서버와 브라우저를 오가는 동안 그 Worker 생성 코드가 언제 평가되는지 통제하는 일이다. Dedicated Worker는 하나의 호출자와 연결되는 구조라서 이미지 처리나 대용량 데이터 변환처럼 특정 화면의 작업…
1. 왜 Next.js에서 Worker가 필요한가2025.05.261. 왜 Next.js에서 Worker가 필요한가Next.jsJavascriptReactWorker API in Next.js#Web Worker#SharedWorker2025.05.261. 왜 Next.js에서 Worker가 필요한가Next.jsJavascriptReactWorker API in Next.js#Web Worker#SharedWorker이미지 하나를 처리했을 뿐인데 버튼 hover가 끊기고 입력창이 늦게 반응한다면, 문제는 React 렌더링보다 자바스크립트가 어디에서 실행되고 있는지에 있을 수 있다. 브라우저 화면은 HTML과 CSS만으로 움직이는 것처럼 보이지만, 사용자의 입력을 받고 레이아웃을 계산하고 JavaSc…
Worker API in Next.js — 시리즈 안내2025.05.26Worker API in Next.js — 시리즈 안내Next.jsJavascriptReactWorker API in Next.js#Worker API#Web Worker2025.05.26Worker API in Next.js — 시리즈 안내Next.jsJavascriptReactWorker API in Next.js#Worker API#Web Worker#SharedWorker브라우저에서 실행되는 JavaScript가 많아질수록 이상한 순간이 찾아온다. 비동기 처리를 했는데도 화면은 멈추고, 탭을 몇 개 열었을 뿐인데 서버에는 같은 소켓 연결이 여러 개 생기고, Next.js에서는 코드가 서버에서 평가될지 브라우저에서 평가될지 계속 의식해야 한다. Worke…
타입스크립트에서의 컴포넌트 추론2024.11.10타입스크립트에서의 컴포넌트 추론Next.jsTypescriptReact#component2024.11.10타입스크립트에서의 컴포넌트 추론Next.jsTypescriptReact#component나는 꽤 오래 전부터 타입스크립트를 사용해 특정한 컴포넌트만을 걸러낼 수 있을지 궁금했다. 만약 이게 가능하다면 특정한 컴포넌트만을 children으로 받게 만들 수 있어 프로젝트의 전체적인 구조가 단단해질 거라 생각했다. 실제로 특정 컴포넌트를 걸러내기 위해서 나는 타입스크립트를 가지…
모든 것을 재귀적으로 구현한 댓글 기능2024.10.15모든 것을 재귀적으로 구현한 댓글 기능Next.jsTypescriptReactNest.js2024.10.15모든 것을 재귀적으로 구현한 댓글 기능Next.jsTypescriptReactNest.js내가 개인적으로 사용하는 독후감 기록 및 공유 서비스가 하나 있다. 이름은 onef다. 홍보에는 거의 신경 쓰지 않았기 때문에 실제 사용자는 나와 몇몇 후배들 정도에 불과하다. 하지만 전혀 문제는 없다. 이 서비스는 사용자 수를 늘리기 위한 제품이라기보다는, 구현해보고 싶은 기능을 부담…
React Query와 AXIOS2024.02.03React Query와 AXIOSNext.jsError Case#serialization#react-query#axios2024.02.03React Query와 AXIOSNext.jsError Case#serialization#react-query#axios상황 서버 상태관리를 React Query로 관리하기 시작하면서 기존에 fetch로 만들었던 리퀘스트 함수들을 AXIOS로 싹 갈아 엎기로 했다. AXIOS 자체가 러닝 커브가 낮은 편이라 갈아 엎는 작업 자체는 금방 끝났다. 그런데 npm run dev를 때리자 getServerSid…