@flagswift/nextjs
v1.0.1
Published
Official Next.js SDK for FlagSwift feature flags - client hooks plus Server Component/Route Handler/Middleware support
Maintainers
Readme
@flagswift/nextjs
Official Next.js SDK for FlagSwift — client-side hooks for Client Components, plus native support for Server Components, Route Handlers, and Middleware.
Installation
npm install @flagswift/nextjsClient Components
'use client'
import { FlagProvider, FlagClient, useFlag } from '@flagswift/nextjs'
const client = new FlagClient({
apiKey: process.env.NEXT_PUBLIC_FLAGSWIFT_API_KEY!,
environment: 'production',
})
export function Providers({ children }: { children: React.ReactNode }) {
return <FlagProvider client={client}>{children}</FlagProvider>
}'use client'
import { useFlag } from '@flagswift/nextjs'
export function Feature() {
const enabled = useFlag('new-dashboard')
return enabled ? <NewDashboard /> : <OldDashboard />
}Server Components
import { isFlagEnabled } from '@flagswift/nextjs'
export default async function Page() {
const enabled = await isFlagEnabled('new-dashboard', {
apiKey: process.env.FLAGSWIFT_SERVER_KEY!,
environment: 'production',
})
return enabled ? <NewDashboard /> : <OldDashboard />
}Route Handlers
import { isFlagEnabled } from '@flagswift/nextjs'
export async function GET(request: Request) {
const enabled = await isFlagEnabled('new-api', {
apiKey: process.env.FLAGSWIFT_SERVER_KEY!,
environment: 'production',
})
return Response.json({ version: enabled ? 'v2' : 'v1' })
}Middleware
import { isFlagEnabled } from '@flagswift/nextjs'
import { NextResponse } from 'next/server'
export async function middleware(request: Request) {
const enabled = await isFlagEnabled('new-checkout', {
apiKey: process.env.FLAGSWIFT_SERVER_KEY!,
environment: 'production',
revalidate: 10,
})
if (enabled) {
return NextResponse.rewrite(new URL('/new-checkout', request.url))
}
}Caching
Server-side calls use Next.js's built-in fetch caching via the revalidate option (seconds). Default is 30s. Pass revalidate: 0 for always-fresh, uncached checks.
License
MIT
