vercel deployment
via PatrickJS/awesome-cursorrules
Deploy serverless apps to Vercel with optimized Edge Runtime, middleware, and production-ready configuration.
What is vercel deployment?
This rule provides comprehensive guidance for deploying applications on Vercel, covering serverless functions, Edge Runtime, middleware, caching strategies, and CI/CD workflows. Use it when building or optimizing deployments for Vercel's edge network and serverless architecture.
- Structure projects for automatic serverless function detection and optimize cold start times
- Configure vercel.json for routing, security headers, redirects, and region-specific function pinning
- Implement Edge Middleware for authentication, geo-based logic, and request filtering with minimal latency
- Set up environment variables securely using Vercel's native management and per-environment configuration
- Optimize caching with Cache-Control headers, ISR patterns, and CDN TTL strategies
- Integrate with Vercel's native storage (KV, Postgres, Blob) and manage external databases with connection pooling
Applies to
File patterns this rule matches.
Rule definition (reference)
Source of truth, from the repository.
You are an expert in Vercel deployments, serverless architecture, and modern web application hosting.
Vercel Deployment Guidelines
Core Principles
- Always optimize for Vercel's edge network and serverless model
- Prefer Edge Runtime for globally distributed, low-latency responses
- Use Vercel's built-in environment variable management for secrets
- Structure projects to leverage Vercel's zero-config deployment detection
- Always use
vercel.jsonfor advanced routing, headers, and redirects configuration
Project Structure
- Place API routes in
/apidirectory for automatic serverless function detection (Pages Router) or/app/apifor App Router - Use
public/for static assets that should be served via Vercel's CDN - Keep serverless functions small and focused — cold start time matters
- Separate long-running tasks to background jobs or external queues (Vercel has a 10s default timeout on Hobby, 60s on Pro)
Environment Variables
- Never hard-code secrets; always use
process.env.VARIABLE_NAME - Prefix client-side env vars with
NEXT_PUBLIC_(Next.js) or expose explicitly per framework - Use Vercel's Environment Variable UI or CLI (
vercel env add) to manage per-environment values (Development, Preview, Production) - Use
.env.localfor local development; never commit it - Reference
vercel.jsonenvfield only for build-time non-secret values
vercel.json Configuration
- Use
rewritesfor proxying API calls or SPA fallback routing - Use
redirectsfor permanent (308) or temporary (307) URL changes - Use
headersto set security headers (CSP, HSTS, X-Frame-Options) globally - Use
regionsto pin serverless functions to specific regions when data locality matters - Example security headers block:
{ "headers": [ { "source": "/(.*)", "headers": [ { "key": "X-Content-Type-Options", "value": "nosniff" }, { "key": "X-Frame-Options", "value": "DENY" }, { "key": "X-XSS-Protection", "value": "1; mode=block" }, { "key": "Referrer-Policy", "value": "strict-origin-when-cross-origin" } ] } ] }
Serverless Functions
- Keep dependencies minimal — bundle size directly impacts cold starts
- Use Edge Functions (
export const runtime = 'edge') for auth checks, redirects, and A/B testing - Use Node.js runtime for database connections, heavy computation, or Node-only packages
- Always handle errors gracefully and return proper HTTP status codes
- Use streaming responses for LLM or large data outputs
Edge Middleware
- Place middleware in
middleware.tsat the project root - Use middleware for: authentication guards, geo-based redirects, bot protection, and A/B flags
- Keep middleware lightweight — it runs on every request before the cache
- Use
matcherconfig to scope middleware only to needed routesexport const config = { matcher: ['/dashboard/:path*', '/api/:path*'], }
Performance & Caching
- Use
Cache-Controlheaders to control Vercel's CDN caching behavior - Use
stale-while-revalidatefor ISR-like behavior in non-Next.js apps - Set
s-maxagefor CDN cache TTL andmax-agefor browser cache - Avoid over-fetching in serverless functions — reuse DB connections with connection pooling (PgBouncer, Prisma Accelerate)
- Use
vercel/ogfor dynamic OG image generation at the edge
CI/CD & Preview Deployments
- Use Vercel's GitHub/GitLab/Bitbucket integration for automatic preview deployments per PR
- Use
vercel pull+vercel build+vercel deploy --prebuiltin custom CI pipelines - Set branch protection rules to require passing preview deployment checks
- Use
VERCEL_ENVenvironment variable to differentiate behavior across preview/production
Domain & DNS
- Use Vercel Domains or point external DNS to Vercel's nameservers for automatic SSL
- Always redirect
wwwto apex or vice versa — never serve both - Use
vercel domains addCLI command for custom domain management
Monorepo Support
- Set
rootDirectoryin project settings to point to the correct app within a monorepo - Use Turborepo with Vercel Remote Cache for fast CI builds (
turbo build --filter=...) - Scope environment variables per project even in shared monorepos
Databases & Storage
- Prefer Vercel-native storage (Vercel KV, Vercel Postgres, Vercel Blob) for zero-config integration
- For external databases, always use connection pooling — serverless functions do not maintain persistent connections
- Store large files in Vercel Blob or S3-compatible storage, not in the function bundle
Logging & Observability
- Use
console.log/console.error— Vercel captures these as function logs - Integrate with Vercel Log Drains to stream logs to Datadog, Sentry, or other observability tools
- Use Vercel Speed Insights and Web Analytics for real-user performance monitoring
- Set up alerts on error rate spikes via Vercel's integrations marketplace
Security Best Practices
- Enable Vercel's DDoS protection (included on all plans)
- Use Vercel Firewall rules to block malicious IPs and patterns
- Rotate secrets regularly using Vercel's environment variable versioning
- Never log sensitive data (tokens, passwords, PII) in serverless function output
- Use
VERCEL_OIDC_TOKENfor secure machine-to-machine auth between Vercel and cloud providers
Deployment Workflow
- Run
vercel --prodonly from protected branches (main/master) - Use
vercel deploy(without--prod) for staging/preview deployments - Alias stable preview URLs with
vercel aliasfor QA sign-off - Use deployment protection (password or Vercel Access) on preview deployments for private projects
Related rules
Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.
Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.
Android development with Jetpack Compose, clean architecture, and Material Design 3.
Angular development with Novo Elements UI library using standalone components.
Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.
Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.