FREDDI.
Home
VacaturesContact
Contact opnemen

Onze kerndiensten

Software op Maat

Dashboards, portalen en interne tools die perfect aansluiten.

Webdevelopment

Websites en webapplicaties op maat. Van essential tot enterprise.

Mobile App Development

iOS & Android apps. Eén codebase, twee platforms.

E-commerce & Webshops

Webshops die verkopen. Custom, Shopify of WooCommerce.

Meer diensten

SEO Optimalisatie

Gevonden worden op Google. Meer verkeer, meer klanten.

AI Oplossingen

Chatbots, automatisering en slimme analyses voor jouw bedrijf.

UI/UX Design

Van wireframe tot pixel-perfect design. Conversiegericht.

API & Integraties

Systemen koppelen. CRM, ERP, betaalsystemen en meer.

Onderhoud & Beheer

Monitoring, updates en security. Vast maandbedrag.

Niet zeker welke dienst je nodig hebt?

Bekijk alle diensten
FREDDI.

Software die werkt. Websites, SEO en AI-oplossingen voor bedrijven die vooruit willen.

Diensten

WebdevelopmentSEO OptimalisatieAI Oplossingen

Bedrijf

PortfolioVacaturesContact

Contact

info@freddimedia.nl06-21544459Nieuwegein
© 2026 Freddi. Alle rechten voorbehouden.
KVK: 93287259BTW: NL005011866B25

BLOG — SEO & DEVELOPMENT

SEO in Next.js: de complete technische gids

Next.js heeft uitstekende SEO-mogelijkheden ingebouwd. Maar je moet ze wel goed inzetten. In dit artikel doorlopen we elke stap — van metadata tot structured data.

Lees de gids →06-21544459

Metadata en generateMetadata

Metadata is de basis van SEO in Next.js. De App Router biedt een krachtig systeem via de generateMetadata functie. Elke pagina kan zijn eigen title, description en Open Graph tags definiëren.

import type { Metadata } from 'next'

export async function generateMetadata(): Promise<Metadata> {
  return {
    title: 'Mijn pagina — Mijn Site',
    description: 'Een korte beschrijving voor zoekmachines.',
    openGraph: {
      title: 'Mijn pagina — Mijn Site',
      description: 'Een korte beschrijving.',
      type: 'article',
    },
  }
}

Pro tip: gebruik een title template in je root layout zodat je niet overal ' | Mijn Site' hoeft te herhalen:

// app/layout.tsx
export const metadata: Metadata = {
  title: {
    template: '%s | Mijn Site',
    default: 'Mijn Site',
  },
}

Vergeet alternates niet voor meertalige sites. Dit vertelt Google welke taalversies er bestaan:

alternates: {
  canonical: 'https://example.com/nl/pagina',
  languages: {
    nl: 'https://example.com/nl/pagina',
    en: 'https://example.com/en/page',
  },
}

Sitemap en robots.txt

Een sitemap vertelt zoekmachines welke pagina's je site heeft. Next.js ondersteunt dit native via een sitemap.ts bestand:

// app/sitemap.ts
import type { MetadataRoute } from 'next'

export default function sitemap(): MetadataRoute.Sitemap {
  return [
    {
      url: 'https://example.com',
      lastModified: new Date(),
      changeFrequency: 'monthly',
      priority: 1,
    },
  ]
}

Voor robots.txt maak je een soortgelijk bestand:

// app/robots.ts
import type { MetadataRoute } from 'next'

export default function robots(): MetadataRoute.Robots {
  return {
    rules: {
      userAgent: '*',
      allow: '/',
    },
    sitemap: 'https://example.com/sitemap.xml',
  }
}

Beide bestanden worden automatisch gegenereerd als /sitemap.xml en /robots.txt wanneer je de site bouwt.

Structured data (JSON-LD)

Structured data helpt Google je content beter te begrijpen en kan resulteren in rich snippets — verrijkte zoekresultaten met sterren, FAQ-dropdowns, of breadcrumbs.

Het meest voorkomende formaat is JSON-LD. In Next.js voeg je dit toe als een script-tag:

function FAQSchema({ items }: { items: { q: string; a: string }[] }) {
  const schema = {
    '@context': 'https://schema.org',
    '@type': 'FAQPage',
    mainEntity: items.map((item) => ({
      '@type': 'Question',
      name: item.q,
      acceptedAnswer: {
        '@type': 'Answer',
        text: item.a,
      },
    })),
  }

  return (
    <script
      type="application/ld+json"
      dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
    />
  )
}

Andere nuttige schema types: Article (voor blogposts), Organization (voor je bedrijfspagina), BreadcrumbList (voor navigatie), en HowTo (voor tutorials).

Performance en Core Web Vitals

Google gebruikt Core Web Vitals als rankingfactor. De drie metrics die ertoe doen:

LCP (Largest Contentful Paint)

Hoe snel laadt het grootste element op de pagina? Doel: onder 2.5 seconden. Gebruik next/image voor automatische optimalisatie van afbeeldingen.

INP (Interaction to Next Paint)

Hoe snel reageert de pagina op interactie? Doel: onder 200ms. Minimaliseer client-side JavaScript en gebruik Server Components waar mogelijk.

CLS (Cumulative Layout Shift)

Verspringt de layout tijdens het laden? Doel: onder 0.1. Geef altijd width en height mee aan afbeeldingen, en laad fonts via next/font.

Next.js helpt je bij elk van deze punten: next/image optimaliseert afbeeldingen automatisch, next/font voorkomt layout shifts bij fonts, en Server Components reduceren de JavaScript-bundle.

import Image from 'next/image'
import { GeistSans } from 'geist/font/sans'

// Geoptimaliseerde afbeelding
<Image
  src="/hero.jpg"
  alt="Hero afbeelding"
  width={1200}
  height={630}
  priority
/>

// Font zonder layout shift
<body className={GeistSans.className}>

Server Components en SEO

De App Router van Next.js gebruikt standaard Server Components. Dit is een groot voordeel voor SEO om twee redenen:

Ten eerste: Server Components renderen op de server. Google ziet de volledige HTML zonder JavaScript uit te hoeven voeren. Dit is betrouwbaarder dan client-side rendering waar Googlebot de JavaScript moet uitvoeren.

Ten tweede: Server Components sturen geen JavaScript naar de browser. Minder JavaScript = snellere pagina = betere Core Web Vitals = hogere ranking.

Vuistregel: maak alles een Server Component tenzij je interactiviteit nodig hebt (formulieren, dropdowns, animaties). Markeer alleen die componenten met 'use client'.

// Server Component (standaard) — goed voor SEO
export default async function BlogPost() {
  const post = await getPost()
  return <article>{post.content}</article>
}

// Client Component — alleen voor interactiviteit
'use client'
export function ContactForm() {
  const [name, setName] = useState('')
  return <form>...</form>
}

Meer lezen

SEO optimalisatie

De fundamenten van SEO, uitgelegd voor ondernemers.

Lees artikel

Next.js website maken

Van setup tot deployment — een complete gids.

Lees artikel

Veelgestelde vragen

Zijn Single Page Apps slecht voor SEO?

Traditionele SPAs die volledig op client-side rendering draaien zijn lastiger voor SEO — Google moet JavaScript uitvoeren om de content te zien. Next.js lost dit op met Server Components en SSR: de HTML wordt op de server gerenderd, waardoor zoekmachines de content direct kunnen indexeren.

Moet ik SSR of SSG gebruiken?

Gebruik SSG (Static Site Generation) voor content die niet vaak verandert — blogposts, landingspagina's, documentatie. Gebruik SSR (Server-Side Rendering) voor content die per request kan verschillen — gepersonaliseerde pagina's, zoekresultaten. In Next.js kun je dit per pagina kiezen.

Hoe test ik de SEO van mijn Next.js site?

Gebruik Google Search Console voor indexeringsstatus en zoekprestaties. Lighthouse (in Chrome DevTools) meet Core Web Vitals. En Google's Rich Results Test controleert je structured data. Test altijd op een productie-build (next build + next start), niet op de dev server.

SEO-hulp nodig voor je Next.js project?

We helpen developers en bedrijven met technische SEO-implementatie in Next.js. Van audit tot implementatie.

Onze SEO-dienstenOnze webdevelopment-diensten

We reageren altijd binnen een werkdag.