본문 바로가기

Engineering/Frontend

Next.js 16.2가 AI 에이전트를 위해 바꾼 것들 — 써보면서 정리한 기록

2026.03.21 | 프론트엔드 딥다이브

 

3월 18일에 Next.js 16.2가 나왔다. 릴리즈 노트 제목이 "AI Improvements"길래 처음엔 "또 마케팅이구나" 싶었는데, 실제로 뜯어보니 생각보다 실용적인 변경이 많았다. 특히 요즘 Claude Code나 Cursor 같은 AI 코딩 도구를 실제 작업에 쓰고 있는 입장에서, 꽤 와닿는 업데이트들이었다.

이번 글에서는 16.2에서 바뀐 것들을 직접 적용해보면서 느낀 점을 정리해본다.

AGENTS.md — 에이전트한테 프로젝트 설명서를 주는 개념

이번 업데이트의 핵심 중 하나가 create-next-app으로 프로젝트를 생성하면 AGENTS.md 파일이 기본으로 포함된다는 거다.

이게 뭐냐면, AI 코딩 에이전트가 프로젝트에 투입됐을 때 "이 프로젝트는 이런 규칙으로 돌아가고, 문서는 여기 있으니 먼저 읽어"라고 알려주는 파일이다. 내용 자체는 짧다.

<!-- BEGIN:nextjs-agent-rules -->

# Next.js: ALWAYS read docs before coding

Before any Next.js work, find and read the relevant doc in
`node_modules/next/dist/docs/`. Your training data is outdated
— the docs are the source of truth.

<!-- END:nextjs-agent-rules -->

핵심은 node_modules/next/dist/docs/에 Next.js 공식 문서가 마크다운으로 통째로 들어간다는 거다. 에이전트가 웹 검색을 할 필요 없이, 로컬에 있는 버전에 맞는 문서를 바로 참조할 수 있게 된 셈이다.

Vercel이 공개한 자체 벤치마크에 따르면, 이런 식으로 문서를 번들링해서 제공했을 때 Next.js 관련 eval에서 100% 통과율을 기록했다고 한다. 반면 에이전트가 필요할 때 스스로 검색하는 skill 기반 접근은 최대 79%에 그쳤다고. 에이전트는 "지금 문서를 찾아야 할 타이밍"을 잘 모르기 때문에, 항상 참조 가능한 상태로 두는 게 더 효과적이라는 거다.

이건 생각해보면 당연한 것 같기도 하다. 사람도 "필요하면 찾아봐"보다 "여기 매뉴얼 있으니까 먼저 읽어"가 훨씬 정확한 결과를 내니까.

기존 프로젝트에 적용하려면 이렇게 하면 된다.

# 16.2 이상이면 수동으로 파일 추가
# 이전 버전이면 코드모드 사용
npx @next/codemod@latest agents-md

Claude Code를 쓰고 있다면 CLAUDE.md에 한 줄만 추가하면 된다.

@AGENTS.md

나도 사이드 프로젝트에 바로 적용해봤는데, 확실히 Claude Code한테 "App Router에서 캐싱 어떻게 해?" 같은 질문을 던졌을 때 15 버전 기준 답변이 아니라 16 기준으로 정확하게 답해주는 게 체감됐다. 이전에는 가끔 getServerSideProps 같은 Pages Router 시절 코드를 추천해주는 경우가 있었는데, 그런 게 확 줄었다.

브라우저 로그 포워딩 — 터미널만 보고 디버깅하기

두 번째로 눈에 띈 건 브라우저 콘솔 에러가 터미널로 자동으로 넘어오는 기능이다.

개발하다 보면 브라우저 콘솔과 터미널을 왔다 갔다 하는 일이 잦은데, AI 에이전트 입장에서는 이게 더 치명적이다. 대부분의 에이전트는 터미널에서 동작하지, 브라우저 DevTools에 접근하지 못하니까. 클라이언트 사이드에서 에러가 나도 에이전트는 그걸 모른다.

16.2부터는 next dev를 실행하면 브라우저의 에러가 터미널에 자동으로 출력된다. 기본값은 에러만 포워딩하고, 설정을 바꾸면 전체 콘솔 로그도 볼 수 있다.

// next.config.ts
const nextConfig = {
  logging: {
    browserToTerminal: true,
    // 'error' — 에러만 (기본값)
    // 'warn'  — 경고 + 에러
    // true    — 전체 콘솔
    // false   — 비활성화
  },
};

export default nextConfig;

실제로 true로 켜놓고 써봤는데, 솔직히 전체 콘솔 포워딩은 좀 시끄럽다. 서드파티 라이브러리에서 뿜어내는 warning이 터미널을 도배해서, 기본값인 'error'가 적당한 것 같다. 그래도 hydration mismatch 같은 클라이언트 에러를 터미널에서 바로 잡을 수 있으니 개발 경험은 확실히 나아졌다.

Dev Server Lock File — 사소하지만 짜증나던 문제 해결

이건 기능이라고 하기엔 작지만, 의외로 자주 겪던 문제를 해결해준다.

next dev를 실행 중인 걸 까먹고 또 실행해서 포트 충돌이 나는 경우. 사람이야 "아 이미 돌아가고 있구나" 하고 끄면 되지만, AI 에이전트는 이 상황을 제대로 처리하지 못하는 경우가 많다. 그냥 에러를 보고 "포트가 사용 중입니다"만 반복하거나, 다른 포트에서 새로 띄워버리거나.

16.2에서는 .next/dev/lock 파일에 현재 실행 중인 dev server의 PID, 포트, URL이 기록된다.

Error: Another next dev server is already running.

- Local:        http://localhost:3000
- PID:          12345
- Dir:          /path/to/project
- Log:          .next/dev/logs/next-development.log

Run kill 12345 to stop it.

에이전트가 이 메시지를 보면 "PID 12345를 kill하면 된다" 또는 "이미 3000번에서 돌아가고 있으니 그걸 쓰면 된다"는 판단을 할 수 있다. 사소해 보이지만 에이전트와 함께 작업할 때 삽질을 확실히 줄여준다.

next-browser — 에이전트가 브라우저를 "읽는" 방법

이번 릴리즈에서 가장 실험적이면서도 흥미로운 기능은 @vercel/next-browser다.

간단히 말하면, AI 에이전트가 터미널 명령어로 브라우저에서 보이는 정보를 조회할 수 있게 해주는 CLI 도구다. 스크린샷, 네트워크 요청, 콘솔 로그는 물론이고, React DevTools의 컴포넌트 트리, props, hooks 상태까지 텍스트로 뽑아볼 수 있다.

설치는 skill로 한다.

npx skills add vercel-labs/next-browser

예를 들어 에이전트한테 "이 페이지 PPR 최적화 좀 해줘"라고 시키면, 에이전트가 이런 식으로 작업할 수 있다.

# PPR 모드 진입 — static shell만 보기
next-browser ppr lock
next-browser goto /blog/hello

# 분석 결과 확인
next-browser ppr unlock

그러면 이런 출력이 나온다.

# PPR Shell Analysis
# 1 dynamic hole, 1 static

blocked by:
  - getVisitorCount (server-fetch)
    owner: BlogPost at app/blog/[slug]/page.tsx:5
    next step: Push the fetch into a smaller Suspense leaf

에이전트는 이 텍스트를 읽고 "아, getVisitorCount가 전체 페이지를 dynamic으로 만들고 있구나. Suspense로 감싸야겠다"는 판단을 내릴 수 있다. DevTools를 눈으로 보는 게 아니라 텍스트로 읽고 추론하는 방식이다.

아직 실험 단계라 완벽하진 않겠지만, 방향 자체가 재밌다. 브라우저를 에이전트가 이해할 수 있는 인터페이스로 바꾸는 거니까.

실제로 써보면서 느낀 점

솔직히 16.2 자체가 "앱의 기능이 바뀌는" 업데이트는 아니다. 사용자가 보는 화면이 달라지는 건 없다. 대신 개발 과정이 달라진다.

내가 체감한 가장 큰 변화는 이거다. Claude Code로 작업할 때 "브라우저 열어서 콘솔 확인해봐"라고 말할 필요가 줄어들었다. 터미널에 에러가 바로 뜨니까 에이전트가 알아서 잡아준다. AGENTS.md 덕분에 "App Router 기준으로 해줘"라고 매번 강조하지 않아도 된다.

물론 이게 모든 문제를 해결하는 건 아니다. AI 에이전트가 아직 복잡한 상태 관리 로직이나 디자인 디테일을 완벽하게 이해하는 건 아니고, 단순 반복 작업이나 보일러플레이트 생성에서 가장 효과적이다. 하지만 프레임워크 차원에서 에이전트 친화적인 환경을 만들어주는 건 확실히 올바른 방향이라고 생각한다.

프레임워크가 DX를 넘어 "AX"를 신경 쓰는 시대

Developer Experience(DX)라는 말은 이제 익숙한데, 이번 Next.js 16.2를 보면서 든 생각은 "Agent Experience(AX)"라는 개념이 슬슬 자리를 잡고 있다는 거다.

생각해보면 이 흐름이 갑자기 나온 건 아니다.

  • Vercel은 이미 v0으로 AI 기반 UI 생성을 밀고 있고
  • Remix는 "AI-first" 리디자인을 표방했고
  • 대부분의 코드 에디터가 AI 보조 기능을 기본 탑재하고 있다

프레임워크가 단순히 개발자만 생각하는 게 아니라, 개발자와 함께 일하는 AI 에이전트까지 고려해서 설계되기 시작한 거다. Lock file에 PID를 적어주는 것도, 문서를 node_modules에 번들링하는 것도, 결국 "에이전트가 이 정보를 파싱할 수 있는가"라는 질문에서 출발한 결정이다.

이게 좋은 건지 나쁜 건지는 아직 모르겠다. "프레임워크가 AI 에이전트를 위해 최적화된다"는 게 어딘가 본말이 전도된 느낌이 들기도 하고, 반대로 실제 생산성 향상은 부정할 수 없으니까. 이 부분은 좀 더 지켜봐야 할 것 같다.

업데이트 방법

기존 Next.js 16 프로젝트에서 업데이트는 간단하다.

npm install next@latest react@latest react-dom@latest

AGENTS.md는 자동으로 생성되지 않으니 직접 추가하거나 코드모드를 돌려야 한다.

npx @next/codemod@latest agents-md

next.config.ts에 브라우저 로그 포워딩 설정을 추가하는 것도 잊지 말자.

마무리

Next.js 16.2는 화려한 업데이트는 아니다. 새로운 렌더링 패턴이 추가된 것도 아니고, API가 크게 바뀐 것도 아니다. 하지만 "AI와 함께 개발하는 환경"을 프레임워크 레벨에서 공식적으로 지원하기 시작했다는 점에서 의미가 있다고 본다.

특히 AGENTS.md 접근법은 Next.js뿐만 아니라 다른 프레임워크나 라이브러리에서도 채택할 수 있는 패턴이니, 앞으로 비슷한 움직임이 늘어날 것 같다. 프로젝트에 AI 에이전트를 적극적으로 활용하고 있다면 16.2 업데이트는 꽤 체감이 클 거다.

다음에는 실제로 AGENTS.md + Claude Code 조합으로 use cache 기반 캐싱 전략을 세팅하는 과정을 다뤄볼 생각이다. PPR이랑 조합하면 어디까지 최적화할 수 있는지 궁금해서.


참고 자료