Home Blog React vs. Next.js: Was ist die richtige Wahl für Ihr Webproj…

React vs. Next.js: Was ist die richtige Wahl für Ihr Webprojekt?

Neues Projekt, Technologieentscheidung: React oder Next.js? Die Antwort, die wir fast immer bekommen: "Next.js, weil SSR besser für SEO ist." Das stimmt — aber es ist nur die halbe Wahrheit. Und es führt dazu, dass viele Projekte unnötig komplex werden.

Dieser Artikel erklärt den Unterschied, alle vier Rendering-Strategien in der Tiefe, wann welche Wahl Sinn ergibt — und räumt mit dem "SSR ist immer besser"-Mythos auf.

Der grundlegende Unterschied

React SPA (mit Vite)

Bei einer Single Page Application liefert der Server eine leere HTML-Seite mit einem JavaScript-Bundle. Der Browser lädt das Bundle, führt React aus, und erst dann wird die Seite aufgebaut:

Next.js mit SSR, SSG oder ISR

Next.js rendert Seiten auf dem Server — zur Laufzeit (SSR), beim Build (SSG) oder inkrementell (ISR):

Wenn Ihre App hinter einem Login versteckt ist, ist SEO irrelevant. Dann brauchen Sie kein SSR.

Rendering-Strategien im Detail

Next.js unterstützt vier Rendering-Strategien, die pro Seite unterschiedlich eingesetzt werden:

CSR (Client-Side Rendering): Das klassische React-SPA-Modell. Schlechtes SEO, langsamer Initial Load. In Next.js aktiviert durch 'use client' ohne serverseitigen Fetch.

SSG (Static Site Generation): Seiten werden beim Build statisch generiert. Ultra-schnelle HTML-Dateien per CDN. LCP unter 0,5 Sekunden möglich. Perfekt für Marketing-Seiten, Blog-Posts und Dokumentationen.

SSR (Server-Side Rendering): Für jeden Request frisch generiert. Stets aktuell, gutes SEO, aber höhere Latenz als SSG.

ISR (Incremental Static Regeneration): Der goldene Mittelweg. Seiten werden statisch generiert und nach einer konfigurierbaren Zeit neu generiert.

// SSG: einmal beim Build generiert
export const dynamic = 'force-static';

// ISR: alle 60 Sekunden neu generiert
export const revalidate = 60;

// SSR: jeder Request generiert frisch
export const revalidate = 0;

// Wann was verwenden:
// force-static   → Marketing, Docs, Landing Pages
// revalidate: 60 → Nachrichten, Produktkataloge
// revalidate: 0  → Echtzeit-Daten, auth-sensitive Seiten

App Router vs. Pages Router

Mit Next.js 13 wurde der App Router eingeführt. In 2026 ist er der de-facto-Standard für neue Projekte.

Pages Router (klassisch): Dateibasiertes Routing im pages/-Verzeichnis. Datenfetching über getServerSideProps (SSR) und getStaticProps (SSG).

App Router (neu): Routing im app/-Verzeichnis. Unterstützt React Server Components nativ. Datenfetching direkt in async-Komponenten.

// Pages Router — getServerSideProps für SSR
export async function getServerSideProps({ params }) {
  const product = await fetchProduct(params.id);
  return { props: { product } };
}

// App Router — async Server Component
export default async function ProductPage({ params }) {
  const product = await fetchProduct(params.id);
  return <div>{product.name}</div>;
}

Neue Projekte: App Router, kein Wenn und Aber. Migration bestehender Projekte: Nur wenn es einen konkreten Grund gibt.

Entscheidungsmatrix: Wann was wählen?

Wählen Sie React SPA (Vite), wenn:
  ✓ App läuft hinter einem Login
  ✓ SEO ist nicht relevant
  ✓ Sehr dynamische Daten (Real-time)
  ✓ Einfaches Deployment und Hosting

Wählen Sie Next.js, wenn:
  ✓ Öffentliche Seiten brauchen SEO
  ✓ Performance für anonyme Nutzer ist kritisch
  ✓ E-Commerce (Produkt-Listings indiziert)
  ✓ Content-heavy Sites mit statischen Daten

Der Hybrid-Ansatz für komplexe Anwendungen

Viele moderne Anwendungen sind hybrid: öffentliche Marketing-Seiten mit SEO und ein Auth-geschützter App-Bereich.

// Next.js App Router — gemischte Strategien
app/
  (public)/          // SSG: Marketing, Blog
    page.tsx          // export const dynamic = 'force-static'
    blog/
      [slug]/page.tsx
  (auth)/            // CSR: App-Bereich
    dashboard/
      page.tsx        // 'use client' — kein SSR nötig

React Server Components — was wirklich Server gehört

Das Modell: Komponenten laufen standardmäßig auf dem Server, Client-Interaktivität wird explizit mit 'use client' markiert.

Server Components (default): Alles, was Daten fetcht und keine Browser-Interaktion hat. Datenbankzugriffe, API-Calls, große Dependencies. Jede Library nur im Server Component senkt das Client-Bundle erheblich.

'use client' benötigt: useState/useReducer, useEffect, Browser APIs, Event Handler.

// Server Component: Daten fetchen
export default async function ProductsPage() {
  const products = await db.products.findMany();
  return (
    <ul>
      {products.map(p => (
        <li key={p.id}>
          <ProductCard product={p} />
          <AddToCartButton id={p.id} />
        </li>
      ))}
    </ul>
  );
}

// Client Component nur für Interaktivität
'use client';
export function AddToCartButton({ id }) {
  const [added, setAdded] = useState(false);
  return <button onClick={() => setAdded(true)}>{added ? 'Hinzugefügt' : 'In den Warenkorb'}</button>;
}

Häufige Fehler

State-Management in Next.js 2026

Server Components reduzieren den Bedarf an globalem Client-State erheblich. Für die verbleibenden Fälle (Shopping Cart, User-Preferences):

Faustregel: Fangen Sie ohne globalen State an. React Context für einfache Werte. Zustand wenn Context zu viele Re-Renders verursacht. Redux nur für begründete Ausnahmen.

Performance messen: Core Web Vitals richtig verstehen

Google nutzt Core Web Vitals als Ranking-Signal:

Typische Werte aus unseren Projekten:

Deployment: Kosten, Optionen und Fallstricke

Vercel-Fallstricke: Der Pro-Plan kostet 20 USD/Monat pro Team-Mitglied. Serverless Functions haben ein Timeout-Limit von 300 Sekunden. Cold Starts können 200–500ms Zusatzlatenz bedeuten.

Alternativen: Railway oder Render für containerisierte Next.js-Deployments. Hetzner VPS für maximale Kontrolle.

Fazit: Pragmatisch statt ideologisch

Wählen Sie die Technologie, die zu Ihrem Use Case passt — nicht die, die gerade am meisten Hype hat. Für reine Web-Apps hinter einem Login ist React SPA mit Vite oft die bessere Wahl. Next.js glänzt wenn SEO, Performance für anonyme Nutzer oder statisches Content-Management wichtig sind.

Wenn Sie Next.js wählen: Nutzen Sie den App Router, verstehen Sie die vier Rendering-Strategien, halten Sie 'use client' auf das Notwendige beschränkt, und messen Sie Performance regelmäßig.


Frontend-Entscheidungen mit Weitblick? Kontaktieren Sie uns für eine Technologieberatung.


Haben Sie Fragen zu diesem Thema? Jetzt Kontakt aufnehmen.