WordPress naar Next.js Migratie op Vercel: 2026 Migratiegids
Je WordPress-installatie laadt 487 kilobytes op elke pagina — theme assets, plugin scripts, jQuery-dependencies gestapeld in drie lagen diep. Je ziet Lighthouse-prestatiescores stagneren in de 40s terwijl je Next.js-sites van concurrenten je boven rangschikken met identieke inhoud. De migratie naar Next.js en Vercel klinkt in theorie schoon: inhoud exporteren, een headless CMS inrichten, implementeren. In de praktijk heb ik in drie jaar twaalf van deze migraties zien gebeuren. Vier werden in minder dan twee weken gelanceerd. Acht stagneerden maandenlang omdat teams misten wat WordPress stil afhandelde — omleidingen, afbeeldingsoptimalisatie, XML-sitemaps, meta-injectie — voordat ze het verwijderden. Het verschil tussen een soepele overstap en een 2 uur 's nachts terugrol komt bijna altijd op één ding neer: controleren wat WordPress werkelijk doet voor je site voordat je de installatie doodslaat.
Deze gids is alles wat ik iemand voor mijn eerste migratie had willen geven. We behandelen de volledige reis: evalueren of je überhaupt moet migreren, je headless CMS kiezen, inhoud verplaatsen, templates opnieuw bouwen, SEO afhandelen zonder rankings te verliezen, en implementeren op Vercel met een setup die niet in elkaar zakt onder verkeerspieken.
Laten we erin duiken.

Inhoudsopgave
- Waarom Migreren van WordPress naar Next.js in 2026?
- Pre-Migratie Audit: Wat WordPress Werkelijk Doet
- Je Headless CMS Backend Kiezen
- Inhoudsmigratiestrategie
- Je Frontend Opnieuw Bouwen in Next.js 15
- URL-Structuur en SEO-Behoud
- Implementeren op Vercel: Configuratie Die Werkelijk Werkt
- Prestatiebenchmarks: Voor en Na
- Veelvoorkomende Migratievallen
- Veelgestelde Vragen
Waarom Migreren van WordPress naar Next.js in 2026?
Laten we eerlijk zijn — WordPress drijft nog steeds ongeveer 40% van het web in 2026. Het gaat nergens heen. Maar de redenen om weg te gaan zijn aantrekkelijker geworden:
Prestatieplafond. Zelfs met agressieve caching-plugins (WP Rocket, W3 Total Cache) stoten de meeste WordPress-sites op een muur rond 70-80 op Lighthouse-prestatatiescores. Plugin-rommel, render-blocking PHP en databasequery's op elke pagina laden creëren overhead die geen hoeveelheid optimalisatie volledig kan elimineren.
Beveiligingsoppervlak. WordPress had 149 gedocumenteerde kwetsbaarheden in 2025 over core en populaire plugins. Elke plugin is een aanvalsvector. Elke theme-update is een potentiële breuk. Als je WooCommerce gebruikt, verdubbelt het oppervlak.
Ontwikkelaarvaring. Als je team React kent, voelt bouwen in PHP-templates als schrijven met je niet-dominante hand. Next.js 15's App Router, Server Components en ingebouwde caching geven je een moderne ontwikkelingsworkflow die WordPress niet kan evenaren.
Kosten op schaal. Beheerde WordPress-hosting (WP Engine, Kinsta) kost $30-$300/maand voor fatsoenlijke prestaties. Vercel's Pro-plan op $20/gebruiker/maand met edge-functies en automatisch schalen kost vaak minder terwijl het beter presteert.
Dat gezegd hebbende — migreer niet alleen omdat het trendy is. Als je site een eenvoudige blog is met 50 berichten en je cliënt werkt het wekelijks bij via de WordPress-admin, kan een migratie meer problemen creëren dan oplossen. De beste kandidaten voor migratie zijn:
- Sites met 500+ pagina's die betere prestaties nodig hebben
- Teams die component-gebaseerde ontwikkeling willen
- Sites waar plugin-conflicten onderhoudsnachtmerries veroorzaken
- E-commerce-sites die WooCommerce-prestatiegrenzen bereiken
- Marketingsites die A/B-tests en personalisatie aan de rand nodig hebben
Pre-Migratie Audit: Wat WordPress Werkelijk Doet
Hier gaat het meeste mis in migraties. Mensen denken dat ze een blog migreren, maar WordPress handelt werkelijk contact formulieren, omleidingen, afbeeldingsoptimalisatie, zoekopdrachten, reacties, authenticatie, cron-jobs en vijftien andere dingen in plugin-configuraties af.
Voordat je een enkele regel Next.js-code schrijft, documenteer alles:
Plugin-Inventaris
Exporteer je pluginlijst en categoriseer elk:
wp plugin list --status=active --format=csv > active-plugins.csv
Voor elke plugin beantwoord je: Wat doet dit, en wat vervangt het in het Next.js-ecosysteem?
| WordPress-Plugin | Functie | Next.js-Vervanging |
|---|---|---|
| Yoast SEO | Meta-tags, sitemaps, schema | next-seo + aangepaste sitemap.xml-route |
| WP Rocket | Caching, minificatie | Vercel Edge Cache + Next.js ingebouwd |
| Contact Form 7 | Formulierverwerking | React Hook Form + API-route of Formspree |
| Wordfence | Beveiliging | Niet nodig (geen admin-oppervlak) |
| WPML | Meertalig | next-intl of ingebouwde i18n-routing |
| WooCommerce | E-commerce | Shopify Storefront API of Saleor |
| Advanced Custom Fields | Aangepaste inhoudsmodellen | Je headless CMS's content-modellering |
| Redirection | URL-omleidingen | next.config.js-omleidingen of Vercel-config |
| WP Cron | Geplande taken | Vercel Cron Jobs of aparte service |
| Imagify | Afbeeldingsoptimalisatie | next/image met Vercel Image Optimization |
Inhoudsignventaris
Tel en categoriseer je inhoud:
SELECT post_type, post_status, COUNT(*)
FROM wp_posts
GROUP BY post_type, post_status;
Vergeet niet: aangepaste berichttypen, taxonomische termen, gebruikersprofielen, menustructuren, widget-configuraties en optiewaarden. Die "eenvoudige" WordPress-site heeft waarschijnlijk meer inhoudstypen dan je denkt.
URL-Mapping
Exporteer elke URL. Echt elke. Gebruik Screaming Frog of een eenvoudig sitemap-crawl:
curl -s https://yoursite.com/sitemap_index.xml | \
grep -oP '<loc>\K[^<]+' | \
xargs -I {} curl -s {} | \
grep -oP '<loc>\K[^<]+' > all-urls.txt
Dit bestand is goud. Je zult het gebruiken voor omleidingsmapping, SEO-behoud en QA-tests na migratie.

Je Headless CMS Backend Kiezen
Je hebt ergens nodig om inhoud op te slaan en te beheren. De drie meest voorkomende paden in 2026:
Optie 1: WordPress als een Headless CMS
Ja, je kunt WordPress als backend houden en Next.js als frontend gebruiken. WPGraphQL (nu op v2.1) maakt dit verrassend levensvatbaar. Je redacteuren behouden de vertrouwde admin-interface. Je krijgt een moderne frontend.
// lib/wordpress.js
const API_URL = process.env.WORDPRESS_GRAPHQL_URL;
export async function getPostBySlug(slug) {
const res = await fetch(API_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: `
query PostBySlug($slug: ID!) {
post(id: $slug, idType: SLUG) {
title
content
date
featuredImage {
node {
sourceUrl
altText
}
}
seo {
title
metaDesc
opengraphImage {
sourceUrl
}
}
}
}
`,
variables: { slug },
}),
next: { revalidate: 60 },
});
const json = await res.json();
return json.data.post;
}
Het nadeel? Je onderhoudt nog steeds een WordPress-installatie. Beveiligingsupdates, PHP-versiebeheer, databaseback-ups — het blijft allemaal je verantwoordelijkheid. En je betaalt nog steeds voor WordPress-hosting.
Optie 2: Doelgebouwde Headless CMS
Dit is wat ik voor de meeste migraties aanbeveel. Verplaats je inhoud naar een CMS dat van grond af aan is gebouwd voor API-first-levering.
| CMS | Prijzen (2026) | Best Voor | Inhoudsmodellering | API-Type |
|---|---|---|---|---|
| Sanity | Gratis tier, $15/gebruiker/maand Pro | Complexe inhoud, realtime samenwerking | Uitstekend, code-gedefinieerd | GROQ + GraphQL |
| Contentful | Gratis tier, $300/maand Team | Onderneming, grote teams | Goed, UI-gedefinieerd | REST + GraphQL |
| Storyblok | Gratis tier, €106/maand Business | Visueel bewerken, componenten | Prima, visueel | REST + GraphQL |
| Strapi v5 | Gratis (zelf gehost), Cloud vanaf $29/maand | Volledig beheer, open source | Flexibel, UI-gedefinieerd | REST + GraphQL |
| Payload CMS 3.0 | Gratis (zelf gehost) | Ontwikkelaars die code-first willen | Uitstekend, code-gedefinieerd | REST + GraphQL |
Als je team bij Social Animal de migratie afhandelt, raden we meestal Sanity of Payload aan voor headless CMS-ontwikkeling — ze geven ontwikkelaars de meeste controle over inhoudsmodellering terwijl redacteuren blij blijven.
Optie 3: Markdown/MDX in de Repository
Voor ontwikkelaarsbloggen en documentatiesites is het opslaan van inhoud als MDX-bestanden in je Git-repo de eenvoudigste aanpak. Geen CMS om te beheren, geen API-aanroepen, inhoud versiebeheerd samen met code. Maar dit werkt alleen als je inhoudsredacteuren comfortabel zijn met Git-workflows.
Inhoudsmigratiestrategie
Exporteren vanuit WordPress
De ingebouwde WordPress-export (Tools → Export) geeft je een XML-bestand. Het is een begin, maar het is rommelig. Voor gestructureerde migratie gebruik ik een aangepaste WP-CLI-script:
// export-content.php
<?php
$posts = get_posts([
'post_type' => ['post', 'page', 'your_custom_type'],
'posts_per_page' => -1,
'post_status' => 'publish',
]);
$export = [];
foreach ($posts as $post) {
$export[] = [
'id' => $post->ID,
'title' => $post->post_title,
'slug' => $post->post_name,
'content' => apply_filters('the_content', $post->post_content),
'excerpt' => $post->post_excerpt,
'date' => $post->post_date,
'modified' => $post->post_modified,
'author' => get_the_author_meta('display_name', $post->post_author),
'categories' => wp_get_post_categories($post->ID, ['fields' => 'names']),
'tags' => wp_get_post_tags($post->ID, ['fields' => 'names']),
'featured_image' => get_the_post_thumbnail_url($post->ID, 'full'),
'acf' => function_exists('get_fields') ? get_fields($post->ID) : [],
'yoast' => [
'title' => get_post_meta($post->ID, '_yoast_wpseo_title', true),
'description' => get_post_meta($post->ID, '_yoast_wpseo_metadesc', true),
],
];
}
file_put_contents('export.json', json_encode($export, JSON_PRETTY_PRINT));
Inhoudsconversie
WordPress-inhoud wordt opgeslagen als HTML met Gutenberg-blokmarkering. Je moet beslissen: de HTML houden en renderen, of converteren naar je CMS's gestructureerde format?
Voor Sanity gebruik ik @sanity/block-tools om HTML naar Portable Text te converteren. Voor Contentful handelt hun migratie-CLI rijke tekstconversie af. Hoe dan ook, budget tijd voor inhoudopruiming — WordPress-inhoud zit vol met [shortcodes], inline-stijlen en verbroken HTML die opgeruimd moeten worden.
// migrate-to-sanity.js
import { htmlToBlocks } from '@sanity/block-tools';
import { JSDOM } from 'jsdom';
import { Schema } from '@sanity/schema';
const schema = Schema.compile({ /* your schema */ });
const blockContentType = schema.get('post')
.fields.find(f => f.name === 'body').type;
function convertPost(wpPost) {
return {
_type: 'post',
title: wpPost.title,
slug: { current: wpPost.slug },
publishedAt: wpPost.date,
body: htmlToBlocks(
wpPost.content,
blockContentType,
{ parseHtml: (html) => new JSDOM(html).window.document }
),
};
}
Afbeeldingsmigratie
Sla dit niet over. Download elke afbeelding van wp-content/uploads, upload opnieuw naar je CMS of een CDN (Cloudinary, Vercel Blob Storage, S3) en werk alle inhoudsreferenties bij. Ik schrijf meestal een script dat:
- De export-JSON doorzoekt naar afbeeldings-URL's
- Elke afbeelding downloadt
- Naar de nieuwe opslag uploadt
- Een URL-mappingbestand maakt
- Find-and-replace over alle inhoud uitvoert
Je Frontend Opnieuw Bouwen in Next.js 15
Next.js 15 (stabiel sinds einde 2024, met 15.2 actueel in 2026) gebruikt standaard de App Router. Hier is de structuur die ik voor inhouds-zware sites gebruik:
app/
├── layout.tsx # Root layout met lettertypen, analytics
├── page.tsx # Startpagina
├── blog/
│ ├── page.tsx # Blog-lijst met paginering
│ └── [slug]/
│ └── page.tsx # Individuele blogposts
├── [slug]/
│ └── page.tsx # Generieke pagina's
├── sitemap.ts # Dynamische sitemap-generatie
├── robots.ts # robots.txt
└── not-found.tsx # Aangepaste 404
Statische Generatie met ISR
Voor de meeste inhoudsbladzijden is Incremental Static Regeneration het zoet spot — statische prestaties met dynamische verversing:
// app/blog/[slug]/page.tsx
import { getPostBySlug, getAllPostSlugs } from '@/lib/cms';
import { notFound } from 'next/navigation';
export async function generateStaticParams() {
const slugs = await getAllPostSlugs();
return slugs.map((slug) => ({ slug }));
}
export async function generateMetadata({ params }) {
const post = await getPostBySlug(params.slug);
if (!post) return {};
return {
title: post.seo?.title || post.title,
description: post.seo?.description || post.excerpt,
openGraph: {
images: [post.featuredImage?.url],
},
};
}
export const revalidate = 3600; // Ververs elk uur
export default async function BlogPost({ params }) {
const post = await getPostBySlug(params.slug);
if (!post) notFound();
return (
<article className="prose lg:prose-xl">
<h1>{post.title}</h1>
<time dateTime={post.date}>{formatDate(post.date)}</time>
<PostBody content={post.body} />
</article>
);
}
Voor sites die realtime-updates nodig hebben (nieuws, live-inhoud), gebruiken webhooks van je CMS voor on-demand revalidatie. De meeste headless CMS-platforms ondersteunen webhook-triggers bij inhoudsuitgave.
Als je naar Next.js-ontwikkeling kijkt en de rendering trade-offs dieper wilt begrijpen, hebben we daar apart over geschreven.
URL-Structuur en SEO-Behoud
Dit is niet onderhandelbaar. Als je je URL-structuur kwijtraakt, verlies je je zoekrankings. Punt.
Omleiding-kaart
WordPress gebruikt URL-patronen zoals /2024/03/post-slug/ of /category/term/. Je Next.js-site gebruikt waarschijnlijk /blog/post-slug. Maak een omleiding-kaart:
// next.config.js
module.exports = {
async redirects() {
return [
// Op datum gebaseerde URL's naar schone slugs
{
source: '/:year(\\d{4})/:month(\\d{2})/:slug',
destination: '/blog/:slug',
permanent: true,
},
// Categorie-archieven
{
source: '/category/:slug',
destination: '/blog?category=:slug',
permanent: true,
},
// Paginering
{
source: '/page/:num',
destination: '/blog?page=:num',
permanent: true,
},
// Feed-URL's
{
source: '/feed',
destination: '/rss.xml',
permanent: true,
},
];
},
};
Voor grote sites (1000+ omleidingen), gebruik Vercel's vercel.json-configuratie of middleware in plaats daarvan — next.config.js-omleidingen hebben een zachte limiet van ongeveer 1024 vermeldingen voordat bouwtijden problemen gaan ondervinden.
Gestructureerde Gegevens
WordPress-plugins zoals Yoast genereren automatisch JSON-LD. Je moet dit repliceren:
// components/structured-data.tsx
export function ArticleSchema({ post }) {
const schema = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: post.title,
datePublished: post.date,
dateModified: post.modified,
author: {
'@type': 'Person',
name: post.author,
},
image: post.featuredImage?.url,
publisher: {
'@type': 'Organization',
name: 'Your Site Name',
logo: { '@type': 'ImageObject', url: '/logo.png' },
},
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}
XML-sitemap
Next.js 15 maakt dynamische sitemaps eenvoudig:
// app/sitemap.ts
import { getAllPosts, getAllPages } from '@/lib/cms';
export default async function sitemap() {
const posts = await getAllPosts();
const pages = await getAllPages();
return [
{ url: 'https://yoursite.com', lastModified: new Date() },
...pages.map((page) => ({
url: `https://yoursite.com/${page.slug}`,
lastModified: page.modified,
})),
...posts.map((post) => ({
url: `https://yoursite.com/blog/${post.slug}`,
lastModified: post.modified,
})),
];
}
Implementeren op Vercel: Configuratie Die Werkelijk Werkt
Projectopstelling
npx create-next-app@latest my-migrated-site --typescript --tailwind --app
cd my-migrated-site
vercel link
Omgevingsvariabelen
Stel deze in het Vercel-dashboard in, niet in .env-bestanden die naar Git worden gecommit:
CMS_API_URL=https://your-cms-api-endpoint
CMS_API_TOKEN=your-read-only-token
REVALIDATION_SECRET=a-random-string-for-webhook-auth
SITE_URL=https://yoursite.com
Vercel-configuratie
// vercel.json
{
"crons": [
{
"path": "/api/revalidate-sitemap",
"schedule": "0 */6 * * *"
}
],
"headers": [
{
"source": "/fonts/(.*)",
"headers": [
{ "key": "Cache-Control", "value": "public, max-age=31536000, immutable" }
]
}
]
}
On-Demand Revalidation Webhook
// app/api/revalidate/route.ts
import { revalidatePath } from 'next/cache';
import { NextRequest, NextResponse } from 'next/server';
export async function POST(request: NextRequest) {
const secret = request.headers.get('x-revalidation-secret');
if (secret !== process.env.REVALIDATION_SECRET) {
return NextResponse.json({ error: 'Invalid secret' }, { status: 401 });
}
const body = await request.json();
const { slug, type } = body;
if (type === 'post') {
revalidatePath(`/blog/${slug}`);
revalidatePath('/blog'); // Ververs ook listing
} else {
revalidatePath(`/${slug}`);
}
return NextResponse.json({ revalidated: true });
}
Wijs je CMS-webhook naar https://yoursite.com/api/revalidate met de geheime header. Nu verschijnen inhoudsupdates binnen seconden zonder volledige herybouwen.
Prestatiebenchmarks: Voor en Na
Dit zijn echte cijfers uit migraties die we in 2025-2026 bij Social Animal hebben voltooid:
| Maatstaf | WordPress (WP Engine) | Next.js (Vercel) | Verbetering |
|---|---|---|---|
| Lighthouse Performance | 62-78 | 95-100 | +30-40% |
| Largest Contentful Paint | 2.8-4.2s | 0.8-1.4s | 60-70% sneller |
| Time to First Byte | 800ms-1.5s | 50-120ms | 90%+ sneller |
| Cumulative Layout Shift | 0.12-0.25 | 0.01-0.05 | ~80% reductie |
| Maandelijkse hostingkosten | $115/maand gem. | $20-40/maand | 60-80% besparing |
| Bouwtijd (500 pagina's) | N/A (dynamisch) | 45-90 seconden | N/A |
| Pagina's/seconde (ISR) | 15-30 req/s | 10,000+ van edge | Miljoenenvoudig |
De TTFB-verbetering alleen is de migratie al waard. WordPress genereert elke pagina door PHP en MySQL. Vercel serveert vooraf gerenderde pagina's vanuit edge-knooppunten op 300+ locaties wereldwijd.
Veelvoorkomende Migratievallen
Misval 1: WordPress RSS-feeds vergeten. Als mensen zich op je feed abonneren, leid /feed/ en /rss/ om naar een nieuw RSS-eindpunt. Next.js genereert standaard geen feeds — je hebt een aangepaste route nodig.
Misval 2: WordPress-shortcodes missen. Inhoud die uit WordPress is geëxporteerd zit vol met [gallery], [embed] en plugin-specifieke shortcodes. Als je deze niet parseert en converteert, renderen ze als platte tekst. Schrijf transformers voor elk shortcode-type dat je inhoud gebruikt.
Misval 3: WordPress-commentaargegevens negeren. Als je waardevolle commentaarthreads hebt, migreer ze naar een service zoals Disqus of bouw een aangepast commentaarsysteem. De meeste mensen laten opmerkingen gewoon vallen, maar controleer eerst met belanghebbenden.
Misval 4: Niet testen op interne links. WordPress-inhoud zit vol met interne links met absolute URL's (https://yoursite.com/old-path/). Deze moeten worden bijgewerkt naar relatieve paden of je nieuwe URL-structuur. Een eenvoudige regex find-and-replace tijdens migratie verwerkt de meeste gevallen.
Misval 5: /wp-content/uploads-referenties vergeten. Zelfs na het migreren van afbeeldingen kan oude inhoud /wp-content/uploads/2024/03/image.jpg-paden refereren. Stel een catch-all-omleidingen of proxy in naar je nieuwe afbeeldings-CDN.
Als dit overweldigend voelt, is dat eerlijk gezegd normaal. Een juiste migratie duurt 4-12 weken afhankelijk van site-complexiteit. Bekijk onze prijzen of neem rechtstreeks contact op als je ervaren handen op het project wilt.
Veelgestelde Vragen
Hoe lang duurt een WordPress naar Next.js migratie? Voor een site met 100-500 pagina's verwacht je 4-8 weken met een toegewijde ontwikkelaar. Grotere sites met aangepaste berichttypen, e-commerce of meertalige inhoud kunnen 8-16 weken duren. De inhoudmigratie zelf is meestal 20% van het werk — de andere 80% is het opnieuw bouwen van templates, afhandelen van randgevallen en QA-tests op elke URL.
Verlies ik mijn Google-rankings tijdens migratie? Niet als je omleidingen correct afhandelt. Implementeer 301-omleidingen voor elke URL die verandert, behoud je metatitels en beschrijvingen, dien je nieuwe sitemap in bij Google Search Console in en gebruik het Change of Address-gereedschap als je domein verandert. Verwacht een kleine rankingfluctuatie voor 2-4 weken, vervolgens herstel of verbetering terwijl Google betere Core Web Vitals herkent.
Kan ik WordPress als mijn CMS gebruiken met Next.js? Absoluut. Dit wordt "headless WordPress" genoemd en het is een populaire aanpak. Gebruik WPGraphQL om je inhoud als een API beschikbaar te stellen, en verbruik deze vervolgens vanuit Next.js. Je redacteuren behouden de WordPress-admin die ze kennen. Het belangrijkste nadeel is dat je nog steeds een WordPress-installatie onderhoudt — beveiligingsupdates, hosting, de hele stack.
Hoeveel kost het migreren van WordPress naar Next.js? DIY met één ontwikkelaar: 100-300 uur werk. Agencymigratie: typisch $15,000-$75,000 afhankelijk van complexiteit. Doorlopende hostingkosten dalen meestal — Vercel Pro op $20/gebruiker/maand versus beheerde WordPress-hosting op $50-$300/maand. De ROI komt van gereduceerde hostingkosten, betere prestaties (wat conversietarieven verbetert) en lager onderhoudstaken.
Moet ik de Pages Router of App Router in Next.js 15 gebruiken? App Router, voluit. In 2026 is de App Router de stabiele standaard met Server Components, streaming en parallelle routes. De Pages Router werkt nog steeds en is niet verouderd, maar nieuwe functies en optimalisaties zijn App Router-eerst. Elke migratie die we bij Social Animal doen, gebruikt uitsluitend de App Router. Bekijk onze Next.js-ontwikkelingsmogelijkheden voor meer over onze aanpak.
Hoe zit het met formulieren en dynamische functionaliteit? Next.js API-routes (of Server Actions in de App Router) verwerken formulierinzendingen, zoekopdrachten, authenticatie en serverlogica aan de serverzijde. Voor contactformulieren kunt je Server Actions gebruiken met een service zoals Resend voor e-mailbezorging. Voor zoekopdrachten, overweeg Algolia of Meilisearch. Voor authenticatie dekt NextAuth.js (nu Auth.js v5) de meeste gebruiksgevallen.
Is Vercel de enige optie voor het hosten van Next.js? Nee. Je kunt Next.js implementeren op Netlify, AWS Amplify, Cloudflare Pages of zelf hosten met Node.js. Vercel wordt echter gebouwd door het Next.js-team, en de integratie laat het zien — ISR, edge-middleware, afbeeldingsoptimalisatie en analytics werken allemaal het best op Vercel. De DX-kloof tussen Vercel en alternatieven is in 2026 kleiner geworden, maar Vercel blijft het minste-weerstandspad.
Wat als ik een WooCommerce-winkel moet migreren? Dit is een groter project. De meeste teams migreren de storefront naar Next.js terwijl ze de e-commerce-backend naar Shopify (met Storefront API), Medusa.js of Saleor verplaatsen. Shopify's Hydrogen-framework is een ander option, maar als je volledige controle over de frontend wilt, is Next.js met Shopify's API het meest bewezen pad. Verwacht dat de e-commerce-migratie 4-8 weken aan je tijdlijn toevoegt.