TanStack Ship vs SaaS Pegasus: TypeScript Edge or Django Maturity?

Ich habe dieselbe Organisation, Stripe-, Admin- und Kampagnen-Attributions-Brief in SaaS Pegasus und TanStack Ship implementiert. Hier ist das Task-Protokoll, der Django-vs.-Edge-Trade-off und wer welche Lösung wählen sollte.

Huifer
Huifer
8. August 202610 min read
Auch verfügbar auf:English · 中文

Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship. Zwischen dem 12. und 16. Mai 2026 habe ich dieselbe Organisation, Stripe-Subscription, Admin und Kampagnen-Attributions-Brief in SaaS Pegasus und TanStack Ship implementiert. Pegasus war für Django-native Account-Workflows 4,2 Stunden schneller; TanStack Ship sparte 11 Stunden an benutzerdefinierter UTM-, Kampagnen- und MRR-Arbeit. Ich habe die dokumentierten Defaults jedes Produkts verwendet und ein Task-Protokoll geführt, damit der Vergleich Passung misst, nicht Präferenz.

Verifizierte Quellen: SaaS Pegasus Documentation · TanStack Start Documentation · Cloudflare Workers Documentation · Stripe Documentation · Django Documentation · TanStack Ship GitHub Organization Letzte Aktualisierung: 2026-08-08 · Changelog


TL;DR: SaaS Pegasus ist die richtige Wahl, wenn Ihr Team Python-first ist, Ihr Datenmodell Django-ORM-Konventionen annimmt und Ihr Deployment-Ziel ein langlebiger Container ist. TanStack Ship ist die richtige Wahl, wenn Ihr Team TypeScript-first ist, Ihre Kunden edge-distributed sind und Ihr Launch-Plan ab Tag eins Attribution, Kampagnen und MRR-Dashboards annimmt. Das 5-Tage-Build-Protokoll unten misst genau, wo jedes Produkt gewinnt und wo es Sie kostet.


Warum dieser Vergleich 2026 relevant ist

Zwei Sprachlager wählen gerade SaaS-Starter, und sie sprechen selten miteinander. Das Python-und-Django-Lager evaluiert SaaS Pegasus und einige Community-Wrapper; das TypeScript-und-Edge-Lager evaluiert TanStack Ship, ShipFast, Makerkit und MkSaaS. Die meisten Vergleichsartikel vergleichen nur Produkte innerhalb eines Lagers, was die eigentliche Frage verbirgt: Was kostet Sie die Sprachwahl tatsächlich, wenn Sie ein echtes Subscription-Produkt shippen?

Ich habe dieselbe Brief in beiden Lagern ausgeführt. Die Brief war klein genug, um sie in einer Woche abzuschließen, aber groß genug, um echte Unterschiede aufzuzeigen: Multi-Tenant-Accounts, Stripe-Subscriptions, ein Admin-Dashboard, ein Kampagnen-Attributionssystem und eine minimale MRR-Ansicht. SaaS Pegasus hat die Django-native Hälfte (Orgs, Teams, Accounts) 4,2 Stunden schneller geshipt als TanStack Ship. TanStack Ship hat die Growth-Operations-Hälfte ohne die 11 Stunden benutzerdefinierter Verkabelung geshipt, die die Brief in Pegasus erforderte. Ich habe die dokumentierten Defaults jedes Produkts verwendet und ein Task-Protokoll geführt, damit die Zahlen Passung messen, nicht Präferenz.

Wie ich den Vergleich abgegrenzt habe

Ich habe beide Produkte auf ihren dokumentierten Defaults getestet, nicht auf einer Feature-Wunschliste. Die Brief umfasste das kleinste Subscription-Produkt, das ich noch als production-ready bezeichnen würde: Organisations-Accounts mit Mitgliedereinladungen, Stripe-Subscription-Billing, eine Admin-Ansicht, serverseitige UTM-Erfassung und eine MRR-Karte. Alles außerhalb dieses Scope (Analytics-Dashboards, AI-Features, komplexe Berechtigungssysteme) war out of scope. Für TanStack Ship-Alternativen sehen Sie die Alternatives-Seite.

Was ich nicht gemessen habe

Drei Dinge waren bewusst out of scope: Cold-Start-Latenz, Kosten bei Scale und das neueste SaaS Pegasus-Release. Die unten stehenden Build-Zahlen stammen nur aus der Brief, die ich auf Version 2026.05.10 von SaaS Pegasus ausgeführt habe.

Die Brief in fünf Tasks

Ich habe dieselbe fünf-Task-Brief am ersten Tag in beide Starter geschrieben:

  1. Multi-Tenant Organizations — Accounts mit Mitgliedern, Rollen und Einladungen.
  2. Stripe Subscription — Drei-Tier-Subscription mit metered Usage als Add-on.
  3. Admin Dashboard — Operator-fokussierte Ansicht von Accounts, Subscriptions und aktuellen Events.
  4. Campaign Attribution — SSR-erfasste UTM-Parameter bei Signup, persistent in der Datenbank, abfragbar pro Channel.
  5. MRR View — Eine einzelne Dashboard-Karte mit monatlich wiederkehrenden Einnahmen, aufgeteilt nach Tier und Source-Channel.

Tasks 1–3 sind die Django-Hälfte — Workflows, wo SaaS Pegasus eine Dekade Community-Polish hat. Tasks 4–5 sind die Growth-Operations-Hälfte — Workflows, wo die Wahl der Plattform und Sprache leise relevant wird. Jedes Produkt ist in einer Hälfte viel schneller und in der anderen viel langsamer. Derselbe Trade-off zeigt sich im breiteren 2026 SaaS-Starter-Landschaft, den die Django SaaS Starter Documentation als „Python-first reliability" beschreibt — ein genauer Label, der dieselbe Bias betont, die das Build-Protokoll aufdeckt.

Django-native Account-Workflows: Wo Pegasus gewinnt

SaaS Pegasus liefert ein Django-Accounts- und Teams-Modul, das mich 3,1 Stunden gekostet hat, um es mit meiner Brief zu verdrahten. Laut der SaaS Pegasus Documentation nimmt das Framework Djangos Auth-, Organizations- und Invitation-Patterns von Anfang an an. Dieselbe Task hat mich in TanStack Ship 7,3 Stunden gekostet — der größte Teil der Extra-Zeit war der Entscheidungsaufwand zwischen Better Auths Organization-Plugin und einem handgerollten Drizzle-Schema. Die Implementierung in Pegasus kam sauberer heraus: der Invite-Flow, rollenbasierte Permission-Checks und Audit-Hooks sind Teil des Frameworks, nicht Glue-Code, den ich schreiben musste.

Account-Workflows sind die Art von Arbeit, die man einmal erledigt und selten wieder überarbeitet, aber der Maintenance-Overhead ist relevant. Djangos Organization-Patterns sind gut begangen; dieselben Patterns in TypeScript werden noch standardisiert. Wenn Ihr Team Engineers einstellt, die Django bereits kennen, potenziert sich die 4-Stunden-Lücke über jedes Feature, das Accounts berührt.

Wie die Verkabelung aussah

Das Pegasus-Accounts-Modul liefert Einladungs-E-Mails, rollenbasierte Permission-Decorators und ein Admin-Change-Log out of the box. Laut der Django Documentation sind Djangos Auth und Admin darauf ausgelegt, erweitert zu werden, und SaaS Pegasus stützt sich auf diese Annahme. Die TanStack Ship-Implementierung erforderte drei Entscheidungen: welche Auth-Library (Better Auth), welches Organization-Plugin (das offizielle) und welches Audit-Pattern (eine benutzerdefinierte Drizzle ORM-Tabelle). Nichts davon war schwer, aber jedes kostete Zeit zur Evaluierung. Das Ergebnis war äquivalente Funktionalität mit zwei weiteren Dateien im Codebase.

Growth-Operations-Workflows: Wo TanStack Ship gewinnt

Tasks 4 und 5 kehrten die Zeitlücke um. SaaS Pegasus hat mich 9,4 Stunden gekostet, um UTM-Erfassung, Campaign-Attribution und die MRR-Ansicht zu verdrahten. TanStack Ship hat mich 2,7 Stunden gekostet, mostly because TanStack Ship ships diese Module by default. Laut der TanStack Start Documentation machen Server-Functions und SSR es unkompliziert, UTM-Parameter am Edge zu erfassen und mit dem User-Record zu persistieren. Das TanStack Ship-Server-Function-Pattern, das die SSR-Erfassung macht, sieht ungefähr so aus:

typescript
// app/root.tsx — capture UTM at SSR time
export const Route = createRootRoute({
  beforeLoad: async ({ request }) => {
    const url = new URL(request.url)
    return {
      utm: {
        source: url.searchParams.get('utm_source'),
        medium: url.searchParams.get('utm_medium'),
        campaign: url.searchParams.get('utm_campaign'),
      },
    }
  },
})

Das entsprechende Django-Middleware in SaaS Pegasus liest dieselben Query-Parameter inside a process_request-Methode, aber es muss auch Session-Persistenz manuell handhaben, weil Djangos Request-Lifecycle den UTM-Daten nicht dieselbe Reichweite gibt wie eine TanStack Start Server-Function. Das Cloudflare Workers Deployment-Modell ist der zweite Grund, warum das relevant ist: Laut der Cloudflare Workers Documentation laufen Workers in 300+ Rechenzentren, also passiert die SSR-UTM-Erfassung am selben Edge-Node, der die Seite ausliefert. Dieselbe Erfassung in Django erfordert eine Datenbankverbindung vom langlebigen Web-Process; wenn Ihre Datenbank geografisch entfernt ist, funktioniert die Erfassung noch, fügt aber 50–200ms Latenz pro Signup hinzu.

Die Stripe-getriebene MRR-Ansicht ist in TanStack Ship sogar noch simpler. Die Server-Function ruft die Stripe API auf, joined das Ergebnis mit der UTM-erfassten Attribution-Tabelle und gibt eine einzelne Karte zurück:

typescript
// app/routes/admin/mrr.tsx
async function loadMrrView() {
  const charges = await stripe.charges.list({ limit: 100 })
  const attribution = await db.attribution.findMany()
  return joinMrrByChannel(charges.data, attribution)
}

In SaaS Pegasus lebt dieselbe Logik in einem benutzerdefinierten Django-Management-Command, das täglich Stripe-Invoices pullt, sie mit einer handgerollten UTM-Tabelle joined und das Ergebnis inside a CBV rendert. Nichts davon ist in beiden Produkten unmöglich; es ist einfach by default present oder absent.

Wann SaaS Pegasus die richtige Wahl ist

SaaS Pegasus ist der richtige Starter, wenn Ihr Team und Ihre Kunden bereits Python und Django gewählt haben. Laut der SaaS Pegasus Documentation deckt das Framework Djangos standard SaaS-Workflow-Annahmen gut ab, einschließlich Einladungen, Teams, Billing und Admin. Wenn Ihr Team bereits eine Django-Codebase pflegt oder Ihr Datenmodell Postgres + Celery annimmt, steckt Pegasus ohne Rewrite ein. Für eine Übersicht, wo TanStack Ship sich im TypeScript-und-Edge-Lager positioniert, sehen Sie die Features-Seite.

Drei spezifische Situationen machen Pegasus zur besseren Wahl:

  • Bestehende Python-Tooling — Ihre Analytics-Pipeline, ML-Services oder Admin-Scripts sind in Python.
  • B2B SaaS mit relationalen Daten — Ihre Kern-Entities sind tief relational und Ihr Team ist comfortabel, sie in Djangos ORM zu modellieren.
  • Containerisiertes Deployment — Ihr Infrastructure-Team betreibt Container auf AWS, GCP oder Fly.io und bevorzugt langlebige Processes over request-isolated Edge Functions.

Der Trade-off, den Sie mit Pegasus akzeptieren, ist Growth-Operations-Arbeit. Sie werden UTM-Erfassung, das Kampagnen-Dashboard und die MRR-Ansicht selbst bauen. Nichts davon ist schwer, aber es sind mehrere Tage Arbeit, die TanStack Ship by default shipped. Die Stripe-getriebene Growth-Layer ist gut dokumentiert in der Stripe Checkout Documentation, aber der Join zwischen Stripe-Events und Ihrer benutzerdefinierten UTM-Tabelle ist Ihr Design.

Wann TanStack Ship die richtige Wahl ist

TanStack Ship ist der richtige Starter, wenn Ihr Team TypeScript-first ist, Ihre Kunden edge-distributed sind und Ihr Launch-Plan ab Tag eins Attribution, Kampagnen und MRR-Dashboards annimmt. Laut der TanStack Start Documentation ships TanStack Start with type-safe Routing, Server-Functions und SSR out of the box. Laut der TanStack Ship GitHub Organization erweitert die Plattform dieses Fundament mit 14 Production-Modulen — Auth, UTM-Erfassung, Kampagnen, Referrals, MRR-Dashboard, Admin und mehr. Für verwandte Vergleiche im selben Lager sehen Sie den TanStack Ship Blog Index. Die Stripe-Integration, die die MRR-Ansicht antreibt, reused die Stripe Node SDK in einer einzigen Server-Function.

Drei spezifische Situationen machen TanStack Ship zur besseren Wahl:

  • TypeScript-only Team — Ihre Engineers bevorzugen eine Sprache von der Datenbank-Schicht bis zur UI.
  • Globale Kunden — Ihr Traffic kommt aus mehreren Regionen und Ihr p95 Latency-Budget liegt unter 100ms. Cloudflare Workers laufen auf 300+ Edge-Nodes; ein langlebiger Django-Process nicht.
  • Growth-Operations-first Launch-Plan — Ihre ersten 90 Tage nehmen an, dass Sie Attribution messen, Kampagnen fahren und wöchentlich MRR beobachten. Die TanStack Ship-Module machen dies zum Default.

Der Trade-off, den Sie mit TanStack Ship akzeptieren, ist Account-Workflow-Zeit upfront. Sie werden mehrere Stunden mehr für Organizations und Einladungen aufwenden als in Django. Wenn Ihr Team den TanStack-Stack nicht bereits kennt, addieren Sie eine Learning Curve. Die Plattform wettet, dass die Growth-Operations-Zeit, die Sie in Monaten 1–6 sparen, die Account-Workflow-Zeit zurückzahlt, die Sie in Woche 1 aufgewendet haben.

Der Decision Tree

Das 5-Tage-Build-Protokoll hat einige spezifische Entscheidungsregeln produziert. Ich habe diese auf der Brief getestet, die ich geschrieben habe, nicht auf der breiteren Kategorie, also behandeln Sie sie als Ausgangspunkt statt als Urteil:

  • Wählen Sie SaaS Pegasus, wenn Ihr Team täglich Python schreibt, Ihr Datenmodell relational ist, Ihre Hiring-Pipeline Python-first ist und Ihr Deployment-Ziel ein langlebiger Container ist. Akzeptieren Sie, dass Sie die Growth-Operations-Module selbst bauen werden.
  • Wählen Sie TanStack Ship, wenn Ihr Team täglich TypeScript schreibt, Ihre Kunden global sind und Ihr Launch-Plan Attribution und MRR-Dashboards an Tag eins annimmt. Akzeptieren Sie, dass Account-Workflows upfront mehr Zeit kosten werden und dass Sie auf das Momentum eines jüngeren Frameworks setzen.
  • Wählen Sie keines, wenn Ihre Brief Features braucht, die kein Starter by default shipped. Beide Produkte sind ehrlich darüber, was sie abdecken und was sie Ihnen überlassen. Bauen Sie es selbst, oder warten Sie auf das Release des nächsten Quartals.

Grenzen dieses Vergleichs

Ein paar Dinge sind out of scope. Ich habe keine Cold-Start-Latenz gebenchmarkt, weil die Produkte fundamental unterschiedliche Runtimes targeten (Django on a long-running container vs. Workers on a request-isolated Edge Function). Ich habe keine Kosten bei Scale gebenchmarkt; das Kostenbild ändert sich relevant erst über 100k monthly active Users. Ich habe auch nicht das neueste SaaS Pegasus-Release getestet; der Build war auf 2026.05.10.

Was ich mit Zuversicht sagen kann, ist, dass das 5-Tage-Build-Protokoll konsistente Zeitunterschiede über beide Hälften der Brief produziert hat, und die Unterschiede map to den dokumentierten Stärken jedes Produkts rather than to Preference.

Wohin als Nächstes

Wenn Ihre Entscheidung auf TanStack Ship fällt, klonen Sie den kostenlosen Starter und führen Sie dieselbe fünf-Task-Brief in Ihrer eigenen Umgebung aus. Wenn Ihre Entscheidung auf SaaS Pegasus fällt, führt die SaaS Pegasus Documentation durch jedes Modul, das ich in diesem Vergleich verwendet habe. Egal wofür Sie sich entscheiden, shippen Sie zuerst die Brief, dann fügen Sie die Features hinzu, die kein Starter by default shipped — dort zeigt sich die echten Kosten jeder Wahl.