Vercel Flags는 Vercel 개발자 플랫폼에 기본 탑재된 피처 플래그(feature flag) 솔루션으로, 서버 사이드에서 동작하는 것을 기본값으로 채택해 페이지 성능에 전혀 영향을 주지 않습니다.
Vercel에서 피처 플래그는 배포의 기본 방식입니다. 신규 기능부터 v0의 모델 업데이트, 프로덕션 데이터베이스 마이그레이션 같은 인프라 변경까지, 플래그가 전환의 기준점 역할을 합니다. v0 팀만 해도 언제나 수백 개의 플래그를 운용하고 있습니다.
코드를 머지하면 빌드가 프로덕션에 반영되지만, 사용자가 변경 사항을 실제로 볼 수 있는지는 피처 플래그가 결정합니다. 플래그를 활용하면 원하는 일정에 맞춰 배포하고, 준비가 됐을 때 특정 세그먼트에만 공개하며, 소스 파일을 수정하거나 재배포 없이 플래그 하나만 꺼서 즉시 롤백할 수 있습니다.
Vercel Flags는 플랫폼 네이티브 솔루션입니다. 기본적으로 서버 사이드에서 동작해 페이지 성능에 영향을 주지 않으며, 이미 사용 중인 프레임워크와 직접 통합됩니다.
Vercel Flags를 사용하면 피처 플래그를 생성하고, 사용자 속성·세그먼트·환경별 타겟팅 규칙을 정의하며, 점진적 롤아웃을 진행하고, 프로덕션에서 문제가 생겼을 때 킬 스위치를 작동시킬 수 있습니다.
코드에서는 Flags SDK를 통해 플래그 값을 읽습니다. Flags SDK는 오픈소스 기반의 프로바이더 독립적 라이브러리로, Next.js와 SvelteKit을 위한 퍼스트 클래스 어댑터를 함께 제공합니다. 다른 프레임워크를 사용하는 경우에는 내장된 OpenFeature 프로바이더를 통해 Vercel Flags를 연동할 수 있습니다.
Vercel Flags 대시보드는 프로젝트 및 배포 화면과 나란히 위치해, 플래그를 생성하고 관리하는 공간으로 활용됩니다.
Vercel Flags가 다른 플래그 서비스와 차별화되는 핵심은 바로 프레임워크 통합 방식에 있습니다.
기존 피처 플래그 프로바이더는 범용 SDK를 제공하고, 프레임워크 연동은 개발자가 직접 처리해야 했습니다. 플래그 관리 대시보드도 별도로 운용해야 했죠. Vercel Flags는 Vercel 플랫폼에 기본 내장되어 있어, 배포 대시보드와 같은 공간에서 플래그를 관리할 수 있습니다. 코드에서는 프레임워크 네이티브 Flags SDK를 통해 플래그 값을 읽습니다.
플래그를 클라이언트에서 평가하면 사용자는 로딩 화면, 깜빡임, 레이아웃 이동을 경험하게 됩니다. 플래그 값이 돌아오기 전까지 브라우저가 올바른 화면을 렌더링하지 못하기 때문입니다. Flags SDK는 이를 서버에서 평가합니다. Next.js React 서버 컴포넌트를 사용할 경우, 렌더링 중에 await로 플래그 값을 읽습니다. 올바른 화면이 서버에서 결정되고, 브라우저는 별도의 플래그 요청 없이 그 결과를 바로 렌더링합니다. 플래그 값은 Vercel Flags에서 제공되며, 설정 변경 사항은 수 밀리초 안에 모든 리전에 전파됩니다.
고급 사용 사례에서는 플래그를 await 하지 않고 프로미스 형태로 클라이언트 컴포넌트에 전달할 수도 있습니다. 이렇게 하면 플래그 값이 도착하기 전에 페이지 렌더링을 시작하고, 그동안 컴포넌트는 폴백을 표시합니다. 플래그는 여전히 서버에서 처리되므로 브라우저에서 별도로 요청하지 않습니다.
Vercel Flags는 플래그를 자동으로 등록합니다. 코드에 플래그를 정의하고 배포하면 대시보드에 드래프트 상태로 나타납니다. 타겟팅을 설정하고 롤아웃할 준비가 되면 드래프트를 승격시키면 됩니다. 코드에서 플래그를 제거하면 대시보드가 해당 플래그를 '미참조' 상태로 표시하므로, 어떤 플래그를 안전하게 아카이브할 수 있는지 항상 파악할 수 있습니다. 코드에 작성한 플래그가 곧 관리하는 플래그이며, 별도의 목록을 수동으로 동기화할 필요가 없습니다.
정적 페이지는 사용자와 가장 가까운 CDN 리전에서 제공되어 빠르고 일관성이 있습니다. 하지만 피처 플래그를 추가하는 순간 페이지가 동적으로 바뀝니다. 서버 사이드 렌더링으로 전환하면 CDN 배포의 이점을 잃고, 클라이언트에서 플래그를 fetch하면 레이아웃 이동이 다시 발생합니다. Flags SDK의 선택적 고급 패턴인 Precompute는 이 문제를 해결합니다. 빌드 시점에 모든 변형(variant)을 미리 생성해 CDN에 배포하고, 라우팅 미들웨어(Next.js의 proxy.ts 파일)가 각 사용자를 알맞은 버전으로 안내합니다. 모든 페이지는 정적 상태를 유지하며 레이아웃 이동 없이 로드됩니다.
vercel flags CLI를 통해 터미널에서도 동일한 플래그 관리 작업을 수행할 수 있습니다. 개발자와 코딩 에이전트 모두 플래그 생성, 타겟팅 설정, 롤아웃 실행, 아카이브까지 CLI로 처리할 수 있습니다.
Vercel 툴바에 내장된 Flags Explorer를 활용하면 브라우저 세션에서 특정 플래그 값을 오버라이드해 변형을 테스트할 수 있습니다. 공유 설정은 그대로 유지되며 재배포도 필요하지 않습니다.
Vercel Flags를 정식 출시한 것은 2026년 4월이지만, 내부적으로는 1년 넘게 사용해왔습니다. v0 팀은 이 규모의 운용이 어떤 모습인지 잘 보여주는 사례로, 항상 수백 개의 플래그를 활성 상태로 유지하고 있습니다.
팀들이 플래그 뒤에 두는 것들을 몇 가지 소개하면 다음과 같습니다.
개발 중인 신규 기능
사용자 또는 세그먼트별 AI 모델 라우팅
운영 킬 스위치
데이터베이스 마이그레이션 및 프로바이더 전환
얼리 어답터 고객 또는 내부 팀을 위한 베타 접근
v0 같은 제품에서는 지연 시간이 조금만 늘어도 사용자 경험이 저하됩니다. Vercel Flags는 서버 사이드에서 평가하기 때문에, 클라이언트 사이드 평가에서 발생하는 추가 왕복 요청 없이 피처 플래그를 활용할 수 있습니다.
모든 신규 기능을 플래그 뒤에 두고 개발하기 때문에, 개발자들은 미완성 작업을 릴리스하지 않고도 main에 지속적으로 머지할 수 있습니다. 수명이 긴 브랜치도, 고통스러운 머지 충돌도 없습니다. 코드 배포와 기능 릴리스가 완전히 별개의 결정이 됩니다.
릴리스는 통제된 단계를 거쳐 진행됩니다. 기능을 만든 개발자가 먼저 확인하고, 이어서 내부 팀이 봅니다. 그 다음 플래그가 6시간 간격으로 사용자의 5%, 10%, 25%, 50%까지 단계적으로 확대된 뒤 전체에 공개됩니다. 어느 단계에서든 문제가 생기면 코드 변경이나 재배포 없이 기능을 즉시 중단할 수 있습니다.
v0의 AI 모델 트래픽도 플래그로 제어합니다. 새 모델이 출시되면 한 번에 전환하는 대신 점진적으로 트래픽을 이동시킵니다.
v0는 프로덕션 데이터베이스 마이그레이션도 플래그로 진행했습니다. 구 데이터베이스와 신 데이터베이스를 동기화 상태로 유지하면서, 플래그로 어떤 데이터베이스를 사용할지 제어했습니다. 플래그를 전환하는 것 자체가 곧 컷오버였습니다. 스테이징에서 반복적으로 리허설을 거친 뒤, 프로덕션에서 트래픽 저하 없이 실행했습니다. 플래그 덕분에 위험 부담이 높은 인프라 변경 작업을 팀이 연습하고, 일정을 잡고, 자신 있게 배포할 수 있는 작업으로 바꿀 수 있었습니다.
코드 배포와 기능 릴리스가 별개의 단계로 분리되면, PR만으로는 얻을 수 없었던 수준의 확신을 가지고 무엇이든 배포할 수 있게 됩니다.
Vercel Flags는 모든 플랜에서 사용할 수 있습니다. vercel flags CLI를 통해 개발자와 에이전트 모두 어디서든 플래그를 생성하고, 확인하고, 롤아웃을 관리하고, 아카이브할 수 있습니다.
시작하려면 Vercel Flags 문서를 참고하거나, Flags SDK 스킬로 에이전트에게 도움을 요청해보세요.