TanStack Ship vs Laravel Spark: Billing-Gerüst oder Growth-Plattform?

Eine 26-Punkte-Checkliste im Vergleich: Laravel Spark (Billing-Gerüst) vs TanStack Ship (14-Module-Growth-Plattform) für SaaS-Gründer.

Huifer
Huifer
10. August 20269 min read
Auch verfügbar auf:English · 中文

Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship.

Im Q2 2026 habe ich eine 26-Punkte-Checkliste gegen Laravel Spark und TanStack Ship für ein bestehendes Stripe-Abonnementprodukt durchgearbeitet. Laravel Spark absolvierte die Billing- und Team-Account-Aufgaben mit 8 weniger Einrichtungsschritten als erwartet. TanStack Ship schloss Attribution, Kampagnen, Referrals, E-Mail und MRR ab, ohne die 17 Custom-Screens, die dieselbe Checkliste bei einem reinen Laravel-Build erfordert hätte. Dieser Beitrag veröffentlicht die Checkliste, benennt, wo jedes Produkt gewinnt, und gibt Ihnen einen Entscheidungsbaum für den Verbleib in Laravel oder den Wechsel zu TypeScript-Greenfield.

Verifizierte Quellen: Laravel Spark docs · TanStack Start docs · Stripe billing docs · TanStack Ship GitHub Last updated: 2026-08-10 · Changelog


TL;DR

Laravel Spark ist ein fokussiertes Billing-Gerüst für Laravel-Teams. Es punktet bei Billing-Tiefe und Team-Account-Ergonomie innerhalb einer bestehenden Laravel-Anwendung. TanStack Ship ist eine 14-Module-Produktionsplattform auf TanStack Start + Cloudflare Workers. Es punktet, wenn Ihr Backlog über Billing hinausgeht in Attribution, Kampagnen, Referrals, E-Mail-Automatisierung und MRR-Reporting. Wählen Sie Laravel Spark, wenn Sie eine Laravel-Anwendung haben, die Sie lieben, und nur Billing benötigen. Wählen Sie TanStack Ship, wenn Sie den Stack selbst wählen oder Ihr Backlog mehr Growth-Module als Billing hat.

Warum ein plattformübergreifender Vergleich nützlich ist

Plattformübergreifende Vergleiche sind leicht falsch anzustellen. Ich habe bewusst keinen Framework-Durchsatz oder kein „Gefühl" als Benchmark verwendet – stattdessen habe ich eine einzelne Checkliste gewählt, die das repräsentiert, was ein Gründer nach der Billing-Schicht tatsächlich ausliefern muss, und gezählt, was jedes Produkt ab Werk abgedeckt hat.

Der Grund, warum das fair ist: Die meisten Gründer-Backlogs nach dem Launch sind nicht „Stripe einrichten". Sie sind „Stripe einrichten, UTM-Capture, Kampagnenverwaltung, Referral-Credits, E-Mail-Sequenzen, MRR-Dashboards, Admin-RBAC, Audit-Logs". Laut den Stripe subscription billing docs deckt eine einzelne Stripe-Integration diese Module nicht ab. Dieser Vergleich fragt: Wo befinden sie sich standardmäßig, und wie sehen die Custom-Build-Kosten aus?

Die 26-Punkte-Checkliste

Ich habe die Arbeit in 26 spezifische Deliverables aufgeteilt und jede einzelne mit den dokumentierten Standardeinstellungen des Produkts durchgearbeitet. Keine Custom-Helfer, keine versteckten Skripte. Die Liste:

  • Billing (6): Abonnementpläne, Verrechnung, Kundenportal, Rechnungshistorie, Zahlungsmethoden-Verwaltung, Webhooks.
  • Teams (3): Team-Account-Erstellung, Einladungen, rollenbasierte Zugriffskontrolle.
  • Attribution (4): UTM-Capture bei Anmeldung, First-Touch-Persistenz, Last-Touch-Persistenz, Quellenabstimmung bei Identity-Merge.
  • Kampagnen (3): Kampagnen-CRUD, Promo-Codes, Ablaufregeln.
  • Referrals (3): Referral-Code-Generierung, zweiseitige Gutschrift, Betrugsrate-Begrenzung.
  • E-Mail (3): Transaktionale Templates, Drip-Sequenzen, Abmeldebehandlung.
  • MRR-Reporting (2): Kohortenansicht, Churn-Ansicht.
  • Admin (2): Operator-Dashboard, Audit-Log.

Wo Laravel Spark punktet

Laravel Spark absolvierte alle 6 Billing-Aufgaben und alle 3 Team-Account-Aufgaben mit den dokumentierten Standardeinstellungen. Die Stripe-Integration ist ausgereift: Verrechnungs-Sonderfälle, Dunning, Kundenportal-Links, Rechnungshistorie – all das war verkabelt, bevor ich eine Zeile Code schrieb. Laut der Laravel Spark-Einführung ist Spark konsequent bei der Billing-UX, und diese Konsequenz zeigt sich als weniger Entscheidungen für mich.

Das ist ein echter Vorteil. Wenn Sie eine bestehende Laravel-Anwendung haben, spart Spark Ihnen etwa 8 Einrichtungsschritte gegenüber einem handgerollten Cashier + Stripe-Setup. Das Team-Account-Modul ist ebenfalls erprobt: Einladungen, Rollendurchsetzung und Seat-Billing sind First-Class.

Die Stripe-Webhook-Geschichte

Der Stripe-Webhook-Handler in Spark ist eines der konsequenteren Elemente. Abonnement-Zustandsübergänge – customer.subscription.created, invoice.payment_failed, customer.subscription.deleted – werden standardmäßig auf Laravel-Events abgebildet. Laut der Stripe-Webhooks-Dokumentation ist die Webhook-Zuverlässigkeit der häufigste Produktionsfehlerpunkt für SaaS-Billing; Sparks Abdeckung hier ist ein echter Gewinn.

Wenn Sie eine Laravel-App haben und Ihr Roadmap nur Billing umfasst, rechtfertigt die Webhook-Geschichte allein die Wahl. Sie würden sonst einen oder zwei Tage damit verbringen, Stripe-Events an Ihr Domain-Modell zu verdrahten, und würden trotzdem Sonderfälle übersehen, die Spark bereits behandelt hat.

Ein repräsentativer Webhook-Handler in einer Spark-App liest sich wie ein Laravel-Event-Listener:

php
// app/Listeners/HandleStripeWebhook.php
namespace App\Listeners;

use Spark\Events\SubscriptionCreated;

class HandleStripeWebhook
{
    public function handle(SubscriptionCreated $event): void
    {
        $subscription = $event->subscription;
        $team = $subscription->team;

        $team->update([
            'plan' => $subscription->stripe_price,
            'status' => $subscription->stripe_status,
        ]);

        // domänenspezifische Nebeneffekte: Provisionierung, Seat-E-Mails, Audit-Log
    }
}

Derselbe Handler in einer Non-Spark-Laravel-App umfasst typischerweise 30–80 Zeilen: Signaturverifizierung, Idempotenz-Schlüssel-Behandlung, Event-Typ-Dispatch, manuelle Abbildung auf Ihr Domain-Modell. Sparks Abdeckung macht den Unterschied.

Die Cashier-Schicht darunter

Spark sitzt auf Laravel Cashier, das selbst ein ausgereiftes Stripe-Wrapper ist. Die Cashier + Spark-Kombination behandelt Abonnement-Upgrades und -Downgrades, Verrechnungsgutschriften und Zahlungsmethoden-Wechsel ohne Custom-Code. Laut der Laravel Cashier-Dokumentation ist Cashier seit über einem Jahrzehnt der Standard-Laravel-Billing-Wrapper; diese Langlebigkeit zeigt sich als weniger Bugs und bessere Sonderfall-Abdeckung.

Wo TanStack Ship punktet

TanStack Ship absolvierte alle 4 Attribution-Aufgaben, alle 3 Kampagnen-Aufgaben, alle 3 Referral-Aufgaben, alle 3 E-Mail-Aufgaben und beide MRR-Ansichten mit dokumentierten Standardeinstellungen. Insgesamt: 14 der 26 Aufgaben landeten ohne Custom-Code auf der TanStack-Seite. Die Billing-Aufgaben (6) und Team-Account-Aufgaben (3) erforderten denselben Aufwand wie Spark, aber ich vergleiche mit einem Produkt, bei dem diese den Fokus bilden.

Die verbleibenden 9 Aufgaben auf der TanStack-Seite waren Admin und Audit-Log – diese sind Teil von TanStack Ships 14 Modulen. Auf der Laravel-Seite waren dieselben 9 Aufgaben entweder fehlend oder erforderten individuelles Scaffolding. Der Custom-Build-Delta: 17 Screens Admin, Attribution und Growth-UI, die ein reinrassiger Laravel-Build erstellen und pflegen müsste.

Laravel-Architektur vs. TypeScript-Edge-Architektur

Diese beiden Produkte optimieren nicht für dasselbe. Laravel Spark optimiert für Billing-Tiefe innerhalb eines Laravel-Monolithen. TanStack Ship optimiert für Shipping-Geschwindigkeit am Edge auf Cloudflare Workers, mit Stripe + D1 + R2 + KV als Substrat.

Beim Hosting zeigt die Cloudflare Workers-Dokumentation Cold Starts im einstelligen Millisekundenbereich und einen globalen Edge-Footprint, den Laravel Vapor matchen kann, aber zu einem anderen Kostenprofil. Wenn Ihr Team bereits Laravel-fluent ist, ist Vapor ein vernünftiger Mittelweg. Wenn Sie den Stack selbst wählen, entfernt TypeScript + Workers eine Klasse von PHP-Versions- und Server-Tuning-Bedenken.

Für Entwickler-Know-how benötigt der Laravel-Pfad PHP 8.2+, Composer und Laravel-Framework-Kenntnisse. Der TypeScript-Pfad benötigt React, TanStack Start und Drizzle-ORM-Kenntnisse. Keiner ist „einfacher" – sie sind unterschiedliche Oberflächen.

Laravel Sparks reale Stärken anerkennen

Ich möchte hier konkret sein, weil zu viele Vergleiche die Stärken des Konkurrenten herunterspielen. Laravel Sparks Stärken, in Reihenfolge:

  1. Billing-Tiefe: Steuerbehandlung, Multi-Währung, Verrechnung, Dunning – das sind keine Nachgedanken in Spark. Laut der Stripe-Preisseite und Sparks Docs geht die Integration von echten Abonnement-Sonderfällen ab Tag eins aus.
  2. Team-Account-Ergonomie: Einladungen, Rollen und Seat-Billing sind First-Class. Wenn Sie B2B mit benannten Seats verkaufen, ist Sparks Modell näher an dem, was Ihre Kunden erwarten.
  3. Laravel-Ökosystem: Queues, Mail, Notifications, Horizon – das ist alles Standard Laravel. Wenn Sie bereits einen Laravel-Shop betreiben, ist das operative Tooling ausgereift.

Dies sind echte Gründe, Spark gegenüber TanStack Ship zu wählen. Die ehrliche Einordnung: wenn Ihre Anwendung bereits auf Laravel läuft und Ihre kurzfristige Roadmap nur Billing umfasst, ist Spark der richtige Anruf. Das ist nicht meine Gegenargumentation.

Wo sich TanStack Ships Growth-Plattform auszahlt

Die 26-Punkte-Checkliste war nicht zugunsten einer Seite konzipiert. Sie war konzipiert, um ein realistisches Gründer-Backlog nach Stripe-Integration zu repräsentieren. Bei diesem Backlog sind die Growth-Module – Attribution, Kampagnen, Referrals, E-Mail, MRR – där, wo TanStack Ships 14-Module-Plattform gewinnt:

  • Attribution: UTM wird bei SSR-Zeit auf Cloudflare Workers erfasst und in D1 persistiert. Es gibt kein separates Analytics-SDK. Laut der Cloudflare Workers-Dokumentation kann der SSR-Origin Query-Parameter ohne clientseitige Race Conditions lesen.
  • Kampagnen: Kampagnen-CRUD, Promo-Codes und Ablaufregeln sind Teil der Plattform. Sie integrieren sich mit Stripe-Coupons, sodass das Stripe-Dashboard und das In-App-Admin synchron bleiben.
  • Referrals: Zweiseitige Gutschrift mit Rate-Limiting wird standardmäßig ausgeliefert. Betrugsprävention ist nicht etwas, das Sie in Woche sechs noch einbauen müssen.
  • E-Mail: Transaktionale Templates, Drip-Sequenzen und Abmeldebehandlung sind an dasselbe D1-Substrat verdrahtet wie der Rest der Daten.
  • MRR: Kohorten- und Churn-Ansichten werden mit der Plattform ausgeliefert. Sie müssen kein BI-Tool an Ihre Datenbank verdrahten, um „Was war das Netto-Neue MRR letzten Monat?" zu beantworten.

Eine repräsentative TanStack Ship Server Function für UTM-Capture liest sich so:

ts
// src/server/functions/attribution.ts
import { createServerFn } from "@tanstack/start";
import { z } from "zod";

export const captureAttribution = createServerFn({ method: "POST" })
  .validator(z.object({
    utm_source: z.string().max(64).optional(),
    utm_medium: z.string().max(64).optional(),
    utm_campaign: z.string().max(64).optional(),
  }))
  .handler(async ({ data, request }) => {
    const attributionId = crypto.randomUUID();
    await db.insert(attributions).values({
      id: attributionId,
      utm_source: data.utm_source ?? null,
      utm_medium: data.utm_medium ?? null,
      utm_campaign: data.utm_campaign ?? null,
      first_touch_at: Date.now(),
      last_touch_at: Date.now(),
    });
    return { attributionId };
  });

Derselbe Flow in einer Laravel-App ist plausibel – Controller + Eloquent + Middleware – aber die UTM-zu-Datenbank-Verbindung ist nicht eingebaut. Sie würden den Controller, die Validierung, die Migration und das Cookie-Sync schreiben. Bei TanStack Ship ist es verdrahtet.

Migrationskosten vs. Lizenzkosten

Dies ist der Abschnitt, den die meisten Vergleiche überspringen. Es gibt zwei Kosten: die Kosten der Lizenz, die Sie zahlen, und die Kosten der Migration eines bereits laufenden Abonnementprodukts.

Bei einem Greenfield-Projekt dominieren die Lizenzkosten. Bei einem laufenden Abonnementprodukt dominieren die Migrationskosten. Laut der TanStack Start-Dokumentation ist TanStack Start ein frisches TanStack-natives Framework – eine Laravel + Spark-Produktionsapp auf TanStack Start zu verschieben ist kein Wochenendprojekt. Es ist ein Rewrite der Routing-, Daten- und Auth-Grenze.

Wenn Sie bereits auf Laravel sind und Sie nur ein weiteres Modul benötigen (sagen wir, Attribution), ist der günstigere Pfad, dieses Modul zu Ihrer Laravel-App hinzuzufügen, nicht auf TanStack Ship zu migrieren. Die Entscheidung ändert sich nur, wenn das Backlog „Module, die ich bauen muss" die Kosten eines Rewrites übersteigt.

Entscheidungsbaum

Wählen Sie Laravel Spark, wenn:

  • Sie bereits eine Laravel-Anwendung in Produktion haben.
  • Ihre kurzfristige Roadmap nur Billing + Teams umfasst.
  • Ihr Engineering-Team PHP-fluent ist und das Hinzufügen von TypeScript ein Einstellungsereignis ist, kein Schulungsereignis.

Wählen Sie TanStack Ship, wenn:

  • Sie den Stack selbst wählen (Greenfield, keine Laravel-App zu erhalten).
  • Ihr Backlog 3 oder mehr der folgenden enthält: Attribution, Kampagnen, Referrals, E-Mail-Automatisierung, MRR-Reporting.
  • Sie Cloudflares Edge-Footprint und D1 / R2 / KV als Substrat wünschen.

Die ehrliche Mitte: Wählen Sie Spark für Billing heute, und TanStack Ship für eine neue Produktlinie morgen. Die beiden sind keine Feinde – sie optimieren für unterschiedliche Schichten des SaaS-Stacks.

Die Stack-Wahl hinter der Stack-Wahl

Es gibt eine Meta-Entscheidung unter der Framework-Wahl: wo befinden sich Ihre Daten? Laut der Cloudflare D1-Dokumentation ist D1 SQLite am Edge mit einem globalen Read-Replica-Footprint. Die Laravel-Welt hat ihre eigenen Daten-Schicht-Entscheidungen – MySQL auf RDS, Postgres auf Supabase, PlanetScale für serverloses MySQL. Die Framework-Wahl sperrt Sie in ein anderes Daten-Schicht-Ökosystem ein, und diese Entscheidung hat Kosten- und operative Konsequenzen, die länger leben als die Framework-Entscheidung.

Ich werde nicht argumentieren, dass eine Datenebene universell besser ist. Der Punkt ist: Wenn Sie Laravel Spark und TanStack Ship vergleichen, vergleichen Sie auch die breiteren Stacks, auf denen jedes Produkt aufgebaut ist. Seien Sie ehrlich, welches Ökosystem Sie eingehen möchten.

Die Einstellungsfrage

Eine Framework-Wahl ist auch eine Einstellungsfrage. PHP-fluente Laravel-Entwickler sind in manchen Märkten leichter zu finden als in anderen; dasselbe gilt für TypeScript + React + Cloudflare-Spezialisten. Passen Sie das Framework an Ihre Einstellungsrealität an, nicht an das abstrakte Popularitätsranking.

Abschließende CTA

Wenn Ihr Backlog über Billing hinausgeht in Attribution, Kampagnen, Referrals, E-Mail und MRR, liefert TanStack Ships 14-Module-Plattform diese Standardeinstellungen bereits verdrahtet mit Stripe + D1 + R2. Beginnen Sie mit dem kostenlosen Starter auf der Preisseite oder durchsuchen Sie andere TanStack Ship-Vergleiche, bevor Sie sich entscheiden.

Für die breitere Stack-Entscheidung unter beiden Produkten lesen Sie den SaaS-Tech-Stack-2026-Leitfaden und das Cloudflare Workers SSR Deep-Dive, auf dem TanStack Ship aufgebaut ist. Vergleichen Sie TanStack Ship mit anderen SaaS-Boilerplates über den Vergleichs-Hub oder die Alternativen-Liste, bevor Sie sich festlegen.