DocumentationMumbai
Framework Guide
App Router & Pages Router

Next.js on Exovon

Exovon provides native, zero-configuration hosting for Next.js applications. From React Server Components and Server Actions to standalone container compilation and edge static caching in Mumbai (asia-south1), your Next.js apps run with sub-20ms latency and automatic scalability.

Why Run Next.js on Exovon?

Unlike static-only hosts that force you to export static HTML or compromise on dynamic features, Exovon runs true full-stack Next.js.

Regional Indian Compute (Mumbai)

SSR rendering and API routes execute in Google Cloud Mumbai (asia-south1). By executing close to Indian users, you eliminate the 150ms+ cross-continental latency of US-based platforms like Vercel or AWS us-east-1.

Hybrid Edge + Serverless Routing

Static assets (/_next/static/*, images, CSS) are cached and served globally from Anycast edge nodes. Dynamic pages, Server Actions, and Route Handlers are routed directly to isolated serverless microcontainers.

Automatic Standalone Optimization

Exovon automatically leverages Next.js output: 'standalone'. We bundle only production dependencies, shrinking deployment container images from over 1.2 GB down to ~85 MB for lightning-fast container cold boots.

Dynamic Image Optimization

Native next/image components work out-of-the-box using sharp in standalone containers. Initial image transforms run within container CPU and RAM, and optimized WebP/AVIF assets are cached at the Anycast edge for fast subsequent delivery.

Next.js Feature Compatibility

Exovon supports all modern Next.js 13, 14, and 15+ capabilities across both App Router and Pages Router.

Next.js FeatureApp RouterPages RouterExovon Execution Mode
React Server Components (RSC)✓ Full SupportN/AServerless Node.js container streaming
Server Actions✓ Full SupportN/AZero-downtime container execution
API Routes / Route Handlers✓ Full Support✓ Full SupportAuto-scaling container runtime
Streaming & Suspense✓ Full SupportN/AHTTP chunked transfer streaming
Middleware & Edge Guards✓ Full Support✓ Full SupportEarly request intercept & headers rewrite
Incremental Static Regeneration (ISR)✓ Full Support✓ Full SupportDynamic background revalidation
Next.js Image Optimization✓ Full Support✓ Full SupportServerless sharp engine + CDN caching

Deploying Next.js in 3 Simple Steps

No Dockerfile, complex YAML configuration, or manual server provisioning required.

1

Connect Your GitHub Repository

Navigate to the Exovon Dashboard, click New Project, and select your Next.js repository. Exovon automatically inspects your package.json and detects Next.js.

2

Configure Environment Variables (Secret Manager)

Paste your .env or .env.local variables into the Bulk Importer. Secrets are stored with envelope encryption (AES-256 GCM) and validated during pre-flight checks to prevent failed builds.

3

Deploy & Go Live

Click Deploy. Exovon triggers a dedicated build worker (e2-standard-4: 4 vCPUs, 16 GB RAM) in Mumbai, builds your app in seconds, and spins up your production container with an automatic .exovon.co.in SSL domain.

Production Best Practices on Exovon

Recommended patterns to optimize build speeds, runtime performance, and database throughput.

1. Enable Standalone Output in Next Config

Add output: 'standalone' to your next.config.js or next.config.ts. This produces a minimal self-contained server package that significantly reduces container build times and RAM consumption:

next.config.ts
// next.config.ts
import type { NextConfig } from 'next';

const nextConfig: NextConfig = {
  output: 'standalone',
  images: {
    formats: ['image/avif', 'image/webp'],
  },
};

export default nextConfig;

2. Wrap useSearchParams() in <React.Suspense>

In Next.js 14 and 15 App Router, any client component accessing URL search parameters via useSearchParams() should be wrapped in a <Suspense> boundary. This allows static generation to prerender the page skeleton without bailing out:

app/search/page.tsx
import { Suspense } from 'react';
import SearchableClientComponent from './search-box';
import SkeletonLoader from './skeleton';

export default function Page() {
  return (
    <Suspense fallback={<SkeletonLoader />}>
      <SearchableClientComponent />
    </Suspense>
  );
}

3. Database Connection Pooling (Prisma / Drizzle)

Because Exovon runs in Mumbai (asia-south1), you can connect directly to PostgreSQL, MySQL, Supabase, Neon, or Cloud SQL instances in India. For high-traffic workloads, instantiate your database client as a singleton or use a connection pooler (e.g. PgBouncer) to prevent connection exhaustion during autoscaling surges.

Next.js Observability & Live Logs

Inspect real-time server runtime output and edge telemetry directly from your project dashboard.

Live Console Logs

Stream server-side console.log() and exception stack traces in real time with severity filtering (INFO, WARN, ERROR).

Core Web Vitals

Measure real-world Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS) directly from live visitor sessions.

Zero-Downtime Hot Restarts

When updating environment secrets or config settings, Exovon triggers a rolling container restart (< 2s) without requiring a slow 3-minute git re-compile.

Frequently Asked Questions

Do Next.js API Route handlers and Server Actions work?

Yes! Exovon deploys your app as an active serverless container. All Route Handlers (GET, POST, PUT, DELETE) and Server Actions execute natively with zero extra configuration.

Does Next.js Image Optimization work out of the box?

Yes. The Next.js Image component (<Image />) is fully supported with sharp in your container. Initial image transforms run on your container instance and are subsequently cached at the Anycast edge for high Core Web Vitals (LCP) performance.

How do custom domains and SSL work for Next.js?

You can attach custom domains on paid plans (5 on Starter, unlimited on Pro and Heavy). Exovon automatically provisions and renews TLS/SSL certificates at no additional cost.

Where is the ExoStore database located?

ExoStore (managed Postgres) is located in Singapore (aws-ap-southeast-1) with ~35–60ms direct transit latency to our compute containers in Mumbai (asia-south1).

Was this documentation page helpful?