Skip to content

Commit bc2ed63

Browse files
Add nextjs vercel toolbar instructions (aligned with sveltekit) (#328)
1 parent f302da3 commit bc2ed63

File tree

2 files changed

+60
-4
lines changed

2 files changed

+60
-4
lines changed

skills/flags-sdk/SKILL.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ Check the project state to decide which steps you can skip:
7171
- Does `.vercel/` directory exist? → Project is linked, skip `vercel link` in step 2
7272
- Does `.env.local` contain `FLAGS=`? → Env vars already pulled, skip step 3
7373
- Does `flags.ts` (or `lib/flags.ts`, `src/flags.ts`) exist? → Add to it rather than creating from scratch (step 4)
74-
- Does `app/.well-known/vercel/flags/route.ts` exist? → Flags Explorer already set up, skip step 6
74+
- Is `@vercel/toolbar` in `package.json`? → Skip toolbar setup (step 6)
75+
- Does `app/.well-known/vercel/flags/route.ts` exist? → Flags Explorer already set up, skip step 7
7576

7677
### Steps
7778

@@ -109,7 +110,13 @@ Check the project state to decide which steps you can skip:
109110
}
110111
```
111112

112-
6. **Set up Flags Explorer** (if not already present): Create `app/.well-known/vercel/flags/route.ts` — see the [Flags Explorer setup](#flags-explorer-setup) section below.
113+
6. **Set up the Vercel Toolbar** (if not already present):
114+
- Run `pnpm i @vercel/toolbar`
115+
- Wrap `next.config.ts` with the toolbar plugin
116+
- Render `<VercelToolbar />` in the root layout
117+
See [references/nextjs.md — Toolbar Setup](references/nextjs.md#toolbar-setup) for the full code.
118+
119+
7. **Set up Flags Explorer** (if not already present): Create `app/.well-known/vercel/flags/route.ts` — see the [Flags Explorer setup](#flags-explorer-setup) section below.
113120

114121
## Vercel Flags
115122

@@ -311,7 +318,7 @@ import { FlagValues, FlagDefinitions } from 'flags/react';
311318

312319
Detailed framework and provider guides are in separate files to keep context lean:
313320

314-
- **[references/nextjs.md](references/nextjs.md)**: Next.js quickstart, App Router, Pages Router, middleware/proxy, precompute, dedupe, dashboard pages, marketing pages, suspense fallbacks
315-
- **[references/sveltekit.md](references/sveltekit.md)**: SvelteKit quickstart, hooks setup, toolbar, precompute with reroute + middleware, dashboard pages, marketing pages
321+
- **[references/nextjs.md](references/nextjs.md)**: Next.js quickstart, toolbar, App Router, Pages Router, middleware/proxy, precompute, dedupe, dashboard pages, marketing pages, suspense fallbacks
322+
- **[references/sveltekit.md](references/sveltekit.md)**: SvelteKit quickstart, toolbar, hooks setup, precompute with reroute + middleware, dashboard pages, marketing pages
316323
- **[references/providers.md](references/providers.md)**: All provider adapters — Vercel, Edge Config, Statsig, LaunchDarkly, PostHog, GrowthBook, Hypertune, Flagsmith, Reflag, Split, Optimizely, OpenFeature, and custom adapters
317324
- **[references/api.md](references/api.md)**: Full API reference for `flags`, `flags/react`, `flags/next`, and `flags/sveltekit`

skills/flags-sdk/references/nextjs.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Table of Contents
44

55
- [Quickstart](#quickstart)
6+
- [Toolbar Setup](#toolbar-setup)
67
- [App Router](#app-router)
78
- [Pages Router](#pages-router)
89
- [Evaluation Context](#evaluation-context)
@@ -32,6 +33,52 @@ export const exampleFlag = flag({
3233
});
3334
```
3435

36+
## Toolbar Setup
37+
38+
1. Install `@vercel/toolbar`:
39+
40+
```sh
41+
pnpm i @vercel/toolbar
42+
```
43+
44+
2. Add Next.js plugin:
45+
46+
```ts
47+
// next.config.ts
48+
import type { NextConfig } from 'next';
49+
import createWithVercelToolbar from '@vercel/toolbar/plugins/next';
50+
51+
const nextConfig: NextConfig = {};
52+
53+
const withVercelToolbar = createWithVercelToolbar();
54+
export default withVercelToolbar(nextConfig);
55+
```
56+
57+
3. Render toolbar in root layout:
58+
59+
```tsx
60+
// app/layout.tsx
61+
import { VercelToolbar } from '@vercel/toolbar/next';
62+
63+
export default function RootLayout({
64+
children,
65+
}: {
66+
children: React.ReactNode;
67+
}) {
68+
// On Vercel, the toolbar is auto-injected in preview deployments.
69+
// This manual injection is only needed for local development.
70+
const shouldInjectToolbar = process.env.NODE_ENV === 'development';
71+
return (
72+
<html lang="en">
73+
<body>
74+
{children}
75+
{shouldInjectToolbar && <VercelToolbar />}
76+
</body>
77+
</html>
78+
);
79+
}
80+
```
81+
3582
## App Router
3683

3784
Call the flag function from any async server component or proxy:
@@ -432,6 +479,8 @@ The `hasAuthCookieFlag` checks cookie existence without authenticating. Two shel
432479

433480
## Flags Explorer (Next.js)
434481

482+
The Flags Explorer is part of the Vercel Toolbar. Before adding the discovery endpoint below, make sure the toolbar is set up by following the [Toolbar Setup](#toolbar-setup) steps first.
483+
435484
### App Router
436485

437486
```ts

0 commit comments

Comments
 (0)