# Next.js, run the way it’s actually built.

> Managed Next.js hosting. Server-rendered routes run on a dedicated server. A static export runs on Static Starter. CodeHerder ships small changes.

Source: https://customhosted.com/host/nextjs/

№ 01 What we host

Server-rendered routes and API handlers get a dedicated instance sized to the app. A fully static export costs a fraction of that. Either way, a push to main deploys it, and CodeHerder ships the small changes in between.

When this isn't the right fit Is the app a fully static export with no API routes? Then the build pipeline on this page still applies, but the hosting is Static Starter. Say so on the quote form and we size it down.

№ 02 The requirements

## What it needs to run

The shape of the workload, before any hosting decision gets made.

- **Runtime**: Node.js, long-running
- **Build step**: next build, run on every push
- **Standing process?**: Yes, if any route is server-rendered or an API handler
- **Data store**: Optional: whatever the app talks to (often Postgres)
- **Verdict**: Dedicated by default · Static if the whole app exports

№ 03 How it runs

## How it runs here

The same management as every other tier we run, written in Next.js's own terms.

- Provisioning — A dedicated instance sized to the app. Node is installed, and a process manager restarts the app on a crash or a deploy.
- Deploys — Push to main. Our pipeline builds the app and restarts it. You keep no separate CI of your own.
- Data + backups — If the app talks to Postgres, it gets a managed tier. That tier is backed up every night with the app.
- TLS / DNS / monitoring — Certificates renew on their own and we manage DNS end to end. Monitoring restarts a crashed or hung process and alerts a person. — [What a visitor sees during a restart →](https://customhosted.com/what-visitors-see)

№ 04 Moving it in

## Moving it in

Already running somewhere else? The full [migration playbook](https://customhosted.com/migrate) covers the general steps. Below is what is specific to Next.js.

1. 1 — Point us at the repo — Read access is all we need. We read the output mode from the config, so there is no questionnaire.
2. 2 — We stand up a copy — We provision it as code and build it the way your deploys will run. We check it before anything goes live.
3. 3 — Cutover on your schedule — DNS and TLS switch over with little-to-no downtime. A rollback stays ready if anything looks wrong.

The real gotchas

- The output mode matters most. `output: "export"` needs only a static host. Middleware, route handlers or server actions need a standing process.
- A variable baked in at build time and one read at run time behave differently across a redeploy. Check which is which before the first cutover.
- Image optimisation and incremental static regeneration both need a server process. A static export drops them without a warning.

№ 05 The loop

## The loop, on Next.js

Next.js apps keep changing after launch: a new route, a copy tweak, a dependency bump. The loop briefs and ships all three.

1. 01 — Build — CustomLabs — Bring an app you already built. Or CustomLabs designs and builds the first version to the framework’s own conventions.
2. 02 — Iterate — CodeHerder — Brief a new route, a copy change or a small feature in plain language. An agent opens a pull request against the real app, in its own file structure.
3. 03 — Run — CustomHosted — A dedicated instance sized to the app, or a static export if that is all it needs. Every push deploys it, and we patch and back it up.

An example brief

- **The brief**: A `/pricing` route, styled to match the rest of the app, with data pulled from an existing API route.
- **What the pull request holds**: The route and the fetch, in one pull request the agent opens against the real repo.
- **What happens next**: [A human reviews and merges](https://customhosted.com/review). [It ships through the same pipeline](https://customhosted.com/deploys).
- **A real one**: [The site is blinding at night](https://customhosted.com/case-files#cf-01) (+751 −258 · 19 files · merged 2026-07-31).

№ 06 Output modes

## Which output mode are you running?

On a Next.js app, the biggest cost lever is whether the app needs a server at all. Instance size comes second.

Next.js has three deployment shapes under one framework name. Their prices differ, and that is why Next.js gets its own page instead of a generic "Node app" row. A route that uses `generateStaticParams` and no server-only APIs compiles to plain HTML, CSS and JS. That is a Static Starter site. A dedicated instance serving files that never change at request time is money spent on nothing.

Middleware, a server action, a route handler that touches a database, or `revalidate` -based incremental static regeneration changes that. One route with any of them needs a long-running Node process to answer requests. That is the dedicated shape this page quotes by default. It applies however small the rest of the app is.

Most apps are a mix: a marketing shell that could be static, next to a signed-in dashboard that cannot. We do not force one verdict on the whole repo. Describe the split on the quote form, and we size the instance to the parts that need a server.

№ 07 A starting configuration

## A starting configuration

A server-rendered app: a dedicated instance sized for Next.js, plus the iteration add-on.

- **Base plan**: Dedicated S
- **Iteration — CodeHerder loop**: +$25/mo
- **Estimated total**: $54/mo

[Get this quoted →](https://customhosted.com/contact?plan=DD-S&amp;addons=AD-CH&amp;src=nextjs) [Size it differently on the estimator →](https://customhosted.com/#estimate)

№ 08 FAQ

## Next.js questions

The questions this stack raises on its own. General hosting questions live on the homepage.

1. 01 Do I need a dedicated instance for every Next.js app? Only if a route is server-rendered, uses middleware or exposes an API handler. A pure static export runs on Static Starter. Tell us your output mode and we size it to match.
2. 02 Do you support the app router and server actions? Yes. Both need a standing Node process, and the dedicated tier provisions one.
3. 03 What about incremental static regeneration? ISR needs a running server to revalidate pages on a schedule. It works on the dedicated tier, but not on a static export.
4. 04 Can CodeHerder work in a monorepo? Yes. A brief can target one app or package inside a monorepo. The agent opens its pull request against only the paths that matter.
5. 05 What if we outgrow Dedicated S? Move up a tier at any time, for more CPU and RAM on the same Node process. The resize is one short restart, in a window you pick. You do not rebuild anything.

№ 09 See also

## Keep exploring

- [Dedicated compute A fixed-price instance sized to the workload, with a static IP and full control.](https://customhosted.com/dedicated)
- [Static hosting The export-only path: a fully static Next.js build on the global edge network.](https://customhosted.com/static)
- [Migrations Already running Next.js somewhere else? A rehearsed cutover with little-to-no downtime.](https://customhosted.com/migrate)
- [Scaling What "move up a tier" means: the ladder, the move minute by minute, and the one short restart.](https://customhosted.com/scaling)
- [Configuration The build-time and run-time trap from the gotcha above, and why a build-time value in a static export is public.](https://customhosted.com/configuration)

## Ready to start?

Tell us what you're running — one fixed monthly rate, within a business day.

[Get a quote →](https://customhosted.com/contact)
