Next.js 16 vs Remix
Next.js 16 (Turbopack als Standard, Partial Prerendering) vs. Remix (Shopify, Web-Standards) — Vergleich von React-Meta-Frameworks 2026.
Die Quelle von Next.js – liefert die neuesten Funktionen ohne Konfiguration und ohne Verzögerung
Globales V8-Isolate-Netzwerk – Zero-Egress, jetzt mit eigener Next.js-Schicht vinext
Es kommt auf die Situation an. Wenn du die neuesten Next.js-Funktionen ohne Verzögerung willst, wähle Vercel – das Paritätsrisiko ist null. Wenn du ein bandbreitenintensives, globales Projekt hast und Kostenvorhersehbarkeit priorisierst, ist Cloudflare die richtige Wahl; neben OpenNext gibt es inzwischen auch das noch in der Beta befindliche, aber sich schnell weiterentwickelnde vinext. Für kritische Workloads starte mit OpenNext, bei neuen Projekten probiere vinext aus.
| Kategorie | Vercel | Cloudflare (Workers + Pages) |
|---|---|---|
| Performance | 8/10 | 9/10 |
| Erlernbarkeit | 9/10 | 6/10 |
| Ökosystem | 9/10 | 7/10 |
| Community | 9/10 | 8/10 |
| Arbeitsmarkt | 8/10 | 7/10 |
| Zukunftssicherheit | 8/10 | 8/10 |
// Vercel — Next.js 16 App Router, Cache Components (PPR standardmäßig) + On-Demand-Purge
// next.config.ts
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
cacheComponents: true,
};
export default nextConfig;
// app/blog/[slug]/page.tsx — mit 'use cache' + cacheTag gecachte Daten
import { cacheTag } from "next/cache";
async function getPost(slug: string) {
"use cache";
cacheTag(`post-${slug}`);
const res = await fetch(`https://api.example.com/posts/${slug}`);
return res.json();
}
export default async function BlogPost({
params,
}: {
params: Promise<{ slug: string }>;
}) {
const { slug } = await params;
const post = await getPost(slug);
return (
<article>
<h1>{post.title}</h1>
<div dangerouslySetInnerHTML={{ __html: post.html }} />
</article>
);
}
// app/api/revalidate/route.ts — On-Demand-Purge (Vercel Data Cache)
// "max" = stale-while-revalidate; für sofortiges Invalidieren per Webhook { expire: 0 }
import { revalidateTag } from "next/cache";
import { NextRequest, NextResponse } from "next/server";
export async function POST(req: NextRequest) {
const { slug } = await req.json();
revalidateTag(`post-${slug}`, "max");
return NextResponse.json({ revalidated: true });
}
// vercel.json — Regionspräferenz und Funktionsdauer
{
"regions": ["fra1"],
"functions": {
"app/api/revalidate/route.ts": { "maxDuration": 10 }
}
}
// Deploy
// $ vercel --prod// Cloudflare — Next.js 16 auf Workers deployen (vinext, offizieller Standardweg)
// 1) Zuerst Kompatibilität prüfen, dann zum Projekt hinzufügen (vinext init erzeugt die Vite-Config)
// $ npx vinext check
// $ npx vinext init
// vite.config.ts — Workers Cache für Route-Level-ISR, KV für Daten-Cache
import { cloudflare } from "@cloudflare/vite-plugin";
import { cdnAdapter } from "@vinext/cloudflare/cache/cdn-adapter";
import { kvDataAdapter } from "@vinext/cloudflare/cache/kv-data-adapter";
import { defineConfig } from "vite";
import vinext from "vinext";
export default defineConfig({
plugins: [
vinext({
// cdnAdapter funktioniert nur, wenn in wrangler.jsonc "cache": { "enabled": true } gesetzt ist
cache: { cdn: cdnAdapter(), data: kvDataAdapter() },
}),
cloudflare({
viteEnvironment: { name: "rsc", childEnvironments: ["ssr"] },
}),
],
});
// Deploy — erzeugt die Worker-Konfiguration selbst
// $ npx @vinext/cloudflare deploy
// Alternative: OpenNext-Adapter — open-next.config.ts
import { defineCloudflareConfig } from "@opennextjs/cloudflare";
import r2IncrementalCache from "@opennextjs/cloudflare/overrides/incremental-cache/r2-incremental-cache";
export default defineCloudflareConfig({ incrementalCache: r2IncrementalCache });
// $ opennextjs-cloudflare build && opennextjs-cloudflare deploy
// Access for Workers — Worker mit der Access-Anwendung verbinden
// POST /accounts/{account_id}/access/apps
// "destinations": [{ "type": "worker", "worker_id": "<worker-id>" }]Es kommt auf die Situation an. Wenn du die neuesten Next.js-Funktionen ohne Verzögerung willst, wähle Vercel – das Paritätsrisiko ist null. Wenn du ein bandbreitenintensives, globales Projekt hast und Kostenvorhersehbarkeit priorisierst, ist Cloudflare die richtige Wahl; neben OpenNext gibt es inzwischen auch das noch in der Beta befindliche, aber sich schnell weiterentwickelnde vinext. Für kritische Workloads starte mit OpenNext, bei neuen Projekten probiere vinext aus.
Kostenlose Beratung erhaltenNicht vollständig, aber nah dran: Cloudflares neue vinext-Schicht unterstützt rund 94 % der Next.js-16-API-Oberfläche (App Router, Server Actions, ISR, Middleware) und ist der offizielle Standardweg – befindet sich aber noch in der Beta; die Dokumentation empfiehlt, vor der Einführung in einer bestehenden Produktionsanwendung `npx vinext check` auszuführen. Der ausgereiftere Adapter `@opennextjs/cloudflare` wiederum hat ein Veralterungsproblem im R2-Cache-Backend für ISR + Partial Prerendering (offenes GitHub-Issue).