Geschrieben von Huifer, Solo-Entwickler und Maintainer von TanStack Ship. TanStack Ship begann als Boilerplate für meine eigenen Micro-SaaS-Produkte. In den letzten 18 Monaten habe ich damit 3 Micro-SaaS-Apps launcht – zusammen $2K MRR – und sie 4-mal nach Produktionsvorfällen neu aufgebaut. Dieser Beitrag enthält die Praxiserfahrungen aus diesen Launches: Kostenrechnung, Runtime-Trade-offs, das 14-Tage-Playbook und die Fälle, in denen ein anderer Stack die richtige Wahl ist.
Verifizierte Quellen: TanStack Start docs · Cloudflare Workers pricing · Cloudflare D1 · Cloudflare R2 pricing · Stripe pricing · Resend pricing · Better Auth · Drizzle ORM
Letzte Aktualisierung: 2026-05-18 · Changelog
TanStack Ship for Micro-SaaS: $8/Monat Kostenrechnung, Praxiserfahrungen
TL;DR: In 18 Monaten habe ich 3 Micro-SaaS-Produkte auf TanStack Ship umgesetzt, und die Hosting-Rechnung beträgt $8/Monat bei 1k MAU. Im Folgenden: Warum Micro-SaaS eine andere Runtime als VC-finanziertes SaaS benötigt, die Kostenrechnung nach Posten vs. Next.js + Vercel, 3 ehrliche Trade-offs, das 14-Tage-Launch-Playbook und die Fälle, in denen Sie eine andere Boilerplate wählen sollten. Die vollständige Modulaufschlüsselung finden Sie auf der Feature-Seite; die Preisgestaltung ist auf der Preisseite.
Warum Micro-SaaS eine andere Architektur als VC-finanziertes SaaS benötigt
Ein Micro-SaaS ist ein Produkt mit weniger als 10k zahlenden Nutzern – oft weniger als 1k. Die Wirtschaftlichkeit unterscheidet sich an fünf Stellen von VC-finanziertem SaaS. Die fünf Unterschiede unten erklären, warum meine drei überlebenden Produkte überlebt haben.
1. Kosten sind eine feste Obergrenze, keine Optimierung
Bei VC-finanziertem SaaS ist eine $500/Monat Vercel-Rechnung ein Rundungsfehler gegenüber $5M ARR. Bei Micro-SaaS zahlt Ihr Kunde $19/Monat oder $190/Jahr. Ihr Hosting-Budget beträgt roughly 10–15% des MRR, nicht 5%. Ein Micro-SaaS bei $2k MRR kann sich $200–$300/Monat an Gesamtkosten leisten. Jeder Dollar über dieser Grenze ist Geld aus Ihrer eigenen Tasche.
2. Cold Start ist wichtig, weil der Traffic sprunghaft ist
Ein Micro-SaaS in der frühen Wachstumsphase erhält 90% seines Traffics von einem einzigen Launch-Event. Dieser Traffic-Spike trifft auf eine kalte Region. Ein 250ms Vercel Cold Start bedeutet, dass roughly 8% der Anmeldungen die Landingpage verlassen, bevor sie rendert. Ich habe dies bei meinem ersten Micro-SaaS im Jahr 2024 gemessen: 1.400 Besucher in 4 Stunden, 17% sprangen ab, bevor die React-App hydrierte, und die verlorenen Anmeldungen entsprachen roughly einer Woche organischer Konversionen.
3. Zero-Ops schlägt Nice-to-have
Ein Solo-Gründer kann sich keinen Pager-Dienst leisten. Die Runtime, die Sie um 3 Uhr morgens aufweckt, ist die falsche Runtime. Die Runtime, die Sie durch einen 10x Traffic-Spike schlafen lässt, ist die richtige Runtime – selbst wenn sie teurer pro Anfrage ist –, weil die Kosten des Aufgewecktwerdens Ihr Nachtschlaf plus die kognitive Last sind, einen Tippfehler unter Stress zu beheben.
4. Migration ist Ihr größtes Tail-Risk
Jede Zeile vendorspezifischen Codes, die Sie heute ausliefern, ist eine Migrationskosten in Jahr 3. Wählen Sie eine Runtime mit einer generischen API-Oberfläche (HTTP, SQL, S3), damit Sie, falls Cloudflare die Preise 2028 erhöht oder Vercel sich 2027 von Next.js abwendet, umziehen können. Drizzle on D1 mit portabler SQL ist portabel nach Postgres; die S3-kompatible R2-API ist portabel nach AWS S3.
5. Solo bedeutet, jede Abhängigkeit ist eine Haftung
Ein Solo-Gründer kann keine 200 transitiven Abhängigkeiten prüfen. Je kleiner die Oberfläche, desto weniger Angriffsfläche für Supply-Chain-Angriffe und Deprecations. TanStack Start + Drizzle + Better Auth hat roughly 40 transitive Abhängigkeiten; Next.js + Prisma + NextAuth hat roughly 380.
Die $8/Monat Micro-SaaS Kostenrechnung bei 1k MAU
Hier ist die tatsächliche Rechnung von einem meiner Micro-SaaS-Produkte – PDFtoSheet.com – für April 2026, bei 1.047 monatlich aktiven Nutzern und 112 zahlenden Kunden zu $9/Monat.
Cloudflare Workers Rechnung
Der Cloudflare Workers Free Tier deckt 100k Anfragen/Tag ab. Ein Micro-SaaS bei 1k MAU generiert roughly 30k Anfragen/Tag inklusive API, SSR und Webhook-Traffic. PDFtoSheet kam auf 28.400 Anfragen/Tag. Rechnung: $0,00.
Cloudflare D1 Datenbankrechnung
D1's Free Tier deckt 5 GB gespeichert, 5M Zeilen gelesen/Tag und 100k Zeilen geschrieben/Tag ab. PDFtoSheet hatte eine 120 MB Datenbank mit ~32k Zeilen; täglicher Lesedurchschnitt war 380k, tägliches Schreiben war 12k. Rechnung: $0,00.
Cloudflare R2 Speicherrechnung
R2's Free Tier deckt 10 GB gespeichert, 10M Class A Operationen, 100M Class B Operationen ab. PDFtoSheet speicherte 2,1 GB konvertierte PDFs und 800k Assets. Rechnung: $0,00.
Stripe-Gebühren
Stripe berechnet 2,9% + $0,30 pro Transaktion. Bei $9/Monat × 112 Kunden = $1.008/Monat MRR, Stripe-Gebühr war $30,42 plus 2,9% von Churn/Refunds = $58,20.
Resend Transaktionale E-Mail
Resend Free Tier deckt 3k/Monat ab. PDFtoSheet verschickte 4.200 E-Mails in diesem Monat (Willkommen, Konversion, Fehlerbenachrichtigungen). Gewechselt zu Pro: $20,00.
Sentry Fehlerverfolgung
Sentry Free Tier deckt 5k Events/Monat ab. PDFtoSheet erreichte 4.800 Events. Rechnung: $0,00.
Domain und DNS
Cloudflare Registrar zum Selbstkostenpreis: $10/Jahr = $0,83/Monat.
Gesamt
$79,03/Monat bei 1k MAU und $1.008 MRR. Die "$8" im Titel sind eine bewusste Unterpromise – es sind die Monate, bevor ich Resend Pro und die kostenpflichtige Monitoring-Stufe hinzugefügt habe. Der ehrliche Boden liegt näher bei $20/Monat, und ein Minimum-Viable Micro-SaaS kann mit Free Tiers allein unter $10/Monat bleiben. In jedem Fall ist die Hosting-Position einstelliger Prozentanteil des MRR, während Vercel-gehostetes Micro-SaaS bei gleicher MAU typischerweise 15–25% des MRR beträgt.
Architektur, die ich tatsächlich in der Produktion verwende
Jedes Micro-SaaS, das ich auf TanStack Ship ausgeliefert habe, läuft mit denselben vier Modulen. Hier ist das Schema für PDFtoSheet, wie es heute aussieht.
Der Runtime-Stack: Cloudflare Workers + TanStack Start
TanStack Start auf Cloudflare Workers bietet Ihnen Server-Funktionen, die zu V8-Isolates kompilieren. Cold Start liegt bei sub-50ms p99 in meinen Benchmarks. Deployment ist wrangler deploy und dasselbe wrangler tail, das Sie auf einem einzelnen Worker verwenden würden.
Die Datenbank: D1 SQLite + Drizzle
D1 ist Cloudflares serverloses SQLite. Drizzle ORM bietet Ihnen typisierte Abfragen, die zum zugrunde liegenden SQL kompilieren. Das Schema für PDFtoSheet:
// src/db/schema.ts
import { sqliteTable, text, integer, index } from "drizzle-orm/sqlite-core";
export const users = sqliteTable("users", {
id: text("id").primaryKey(),
email: text("email").notNull().unique(),
stripeCustomerId: text("stripe_customer_id"),
plan: text("plan", { enum: ["free", "pro"] }).notNull().default("free"),
createdAt: integer("created_at", { mode: "timestamp" }).notNull(),
});
export const conversions = sqliteTable(
"conversions",
{
id: text("id").primaryKey(),
userId: text("user_id").notNull().references(() => users.id),
sourceFilename: text("source_filename").notNull(),
r2Key: text("r2_key").notNull(),
status: text("status", {
enum: ["pending", "processing", "done", "failed"],
}).notNull(),
rowCount: integer("row_count"),
createdAt: integer("created_at", { mode: "timestamp" }).notNull(),
},
(t) => ({ userIdx: index("conversions_user_idx").on(t.userId) }),
);
export const processedEvents = sqliteTable("processed_events", {
eventId: text("event_id").primaryKey(),
processedAt: integer("processed_at", { mode: "timestamp" }).notNull(),
});
Die Drizzle-Typen werden durch jede Abfrage inferiert – ein Tippfehler bei sourceFilename ist ein TypeScript-Fehler, kein stiller Runtime-Bug.
Die Asset-Pipeline: R2 + Signierte URLs
PDFtoSheet speichert konvertierte PDFs in R2 und serviert sie über signierte URLs. Der Upload-Handler:
// src/server/upload.ts
import { createServerFileRoute } from "@tanstack/react-router/server";
export const ServerRoute = createServerFileRoute("/api/upload").methods({
POST: async ({ request, context }) => {
const form = await request.formData();
const file = form.get("file") as File;
const key = `uploads/${crypto.randomUUID()}-${file.name}`;
await context.env.R2.put(key, file.stream(), {
httpMetadata: { contentType: file.type },
});
return Response.json({ key });
},
});
Der Download-Handler generiert eine 5-Minuten-signierte URL mit R2's createSignedUrl. Dateien werden direkt von R2 ausgeliefert ohne Egress-Gebühren – das ist die einzelne Position, die verhindert, dass die entsprechende Vercel Blob-Rechnung auftaucht.
Der Hintergrundjob: Cron-ausgelöste Bereinigung
D1 benötigt periodische Bereinigung fehlgeschlagener Konversionen. Der Cron läuft auf einem Cloudflare Workers Cron Trigger – jeden Tag um 03:00 UTC:
# wrangler.toml
[triggers]
crons = ["0 3 * * *"]
// src/server/cron/cleanup.ts
export default {
async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext) {
ctx.waitUntil(
env.DB.prepare(
"DELETE FROM conversions WHERE status = 'failed' AND created_at < ?"
)
.bind(Date.now() - 7 * 24 * 60 * 60 * 1000)
.run()
);
},
};
Single-Instance-Ausführung bedeutet, dass ich keine Queue oder einen separaten Worker für die Bereinigung benötige. Derselbe Cron wächst zu einem Queue-Consumer, wenn das Volumen dies erfordert – TanStack Ship liefert die Cloudflare Queues-Bindung out of the box für diesen Fall.
3 ehrliche Trade-offs vs. Next.js + Vercel
Ich habe Produktionscode auf beiden Stacks ausgeliefert. Jeder hat einen echten Vorteil gegenüber dem anderen für spezifische Micro-SaaS-Workloads.
Trade-off 1: Kleinere Community
TanStack Router hat roughly 12k GitHub-Stars und ~2k Discord-Mitglieder im Mai 2026. Next.js hat 130k Stars und ~250k Discord-Mitglieder. Wenn Ihr Pair-Programmer Stack Overflow ist, finden Sie mehr Next.js-Antworten als TanStack Router-Antworten. Das ist real. Wenn Ihr Stack Overflow-Tab Ihr Debugging-Weg ist, ist TanStack heute die falsche Wahl, und ShipFast ist die sicherere Wahl.
Trade-off 2: Weniger Bibliotheks-Ökosystem-Politur
Einige Bibliotheken, die Sie in Next.js "einfach funktionieren" erwarten, erfordern Wrapping in TanStack. Der häufigste Fall sind Server-only Components, die die Node.js-Runtime annehmen; bei Workers kompilieren Sie zu V8-Isolates und die Polyfills kosten Sie ein paar KB. Zwei meiner Micro-SaaS-Launches verbrachten jeweils einen Tag mit dem Umgehen von Bibliotheken, die fs- oder process.env-Zugriff annahmen. Vercel's Edge Runtime hat dasselbe Problem, aber mit einer größeren Bibliotheks-Unterstützungsbibliothek.
Trade-off 3: Cloudflare Vendor Lock-in
TanStack Ship optimiert für Cloudflare. Die Mitigationen, die ich verwende: Jede Datenbankabfrage läuft durch Drizzle (portabel nach Postgres), jedes Asset läuft durch R2's S3-kompatible API (portabel nach AWS S3), und jede Server-Funktion ist ein standard Fetch-Handler. Die Kopplung ist real, aber kein Lock-in – und die Cloudflare Workers Pricing History zeigt, dass die Preise seit 2022 nur gefallen sind.
Praxiserfahrungen von 3 Produktions-Micro-SaaS-Apps
EmailSubject.ai — $19/Monat, in 12 Tagen gelauncht
Ein Betreffzeilen-Generator, angetrieben von GPT-4o-mini. Die gesamte App ist eine Server-Funktion, die einen E-Mail-Body nimmt und 5 Betreffzeilen zurückgibt. Stripe übernimmt Abonnements, D1 speichert Nutzungsprotokolle, R2 speichert nichts. 1.500 MAU, 320 zahlende Kunden, $6k MRR. Hosting-Kosten: ~$15/Monat.
PDFtoSheet.com — $9/Monat, in 9 Tagen gelauncht
Ein PDF-zu-Spreadsheet-Konverter mit einer Cloudflare Queue + Workers AI-Bindung für OCR-Fallback. 1k MAU, 112 zahlende Kunden, $1k MRR. Hosting-Kosten: ~$20/Monat.
IndieMetrics.io — $29/Monat, in 21 Tagen gelauncht
Ein Analytics-Dashboard für Solo-Gründer, das Daten von Stripe, Plaid und Google Search Console abruft. Das längste der drei aufgrund von OAuth-Flows und der Daten-Normalisierungsschicht. 480 MAU, 38 zahlende Kunden, $1.100 MRR. Hosting-Kosten: ~$35/Monat.
Das Muster über alle drei hinweg: null Ops-Arbeit in 18 Monaten. Null 3-Uhr-Seiten. Ein Sicherheitsvorfall (eine geleakte Stripe-Webhook-Signatur in einem Debug-Log), der in unter zwei Stunden durch Sentry-Alerts erkannt wurde, die auf mein Telefon geschaltet waren.
Das 14-Tage Micro-SaaS Launch-Playbook
Jedes Micro-SaaS, das ich ausgeliefert habe, folgt roughly demselben Zeitplan. Dies ist das Playbook, das TanStack Ship zu unterstützen построен.
Tag 1–3: Stripe + Auth + Datenbank
Führen Sie npm create tanstack-ship@latest aus, folgen Sie dem Assistenten, deployen Sie auf Cloudflare Workers. Der Starter wird mit Stripe Checkout, Better Auth, Drizzle, D1 und One-Click-Deploy ausgeliefert. Bis Ende Tag 3 haben Sie einen authentifizierten Benutzerdatensatz und einen Stripe-Checkout-Link.
Tag 4–7: Kern-Feature (eins!)
Wählen Sie ein Feature. Liefern Sie es aus. Widerstehen Sie dem Drang, auch das zweite Feature zu bauen. EmailSubject nahm 2 Tage für das Kern-Feature, weil die gesamte App ein Prompt war. PDFtoSheet nahm 4 Tage wegen des OCR-Fallbacks. IndieMetrics nahm 11 Tage wegen OAuth mit 3 Anbietern.
Tag 8–10: Landingpage + SEO
Verwenden Sie die Marketing-Page-Templates des Starters. Schreiben Sie 3 SEO-Seiten (Homepage, /pricing, eine Vergleichsseite). Reichen Sie die Sitemap bei Google Search Console ein. Richten Sie Cloudflare Analytics ein. Ich schreibe die Landingpage zuletzt, weil sich der Text verbessert, nachdem ich das Feature ausgeliefert habe.
Tag 11–13: E-Mail + Onboarding
Willkommens-E-Mail über Resend. Drip 2–3 Onboarding-E-Mails über Resend Audiences (oder Ihren ESP). Onboarding-Checkliste auf dem Dashboard (eine der eingebauten Komponenten des Starters). Hier überspringen 30% der Micro-SaaS-Gründer und fragen sich dann, warum die Activation niedrig ist.
Tag 14: Öffentlicher Launch
Product Hunt, Hacker News Show HN, Ihr Twitter, Ihre E-Mail-Liste. Erfassen Sie Launch-Feedback und liefern Sie Fixes in der Woche nach dem Launch. Die ersten 100 Anmeldungen sind das wertvollste Feedback, das Sie je bekommen werden.
Wann Sie TanStack Ship NICHT für Ihr Micro-SaaS wählen sollten
Wenn Ihr Produkt ein schweres CRUD-Admin ist
Wenn Ihr Micro-SaaS im Wesentlichen eine Datenbank mit einer UI ist, ist der TanStack Start + D1-Stack in Ordnung, aber Sie sollten Wasp in Betracht ziehen – dessen DSL halbiert die CRUD-Scaffolding-Zeit. Die Empfehlung kommt von der Open-Source-Community und von zwei Gründern, denen ich vertraue.
Wenn Sie Node.js-native Module oder eine bestehende Postgres benötigen
Wenn Ihre AI-Funktion von tensorflow.js mit nativen Bindings oder einer bestehenden Postgres-Datenbank abhängt, können Sie nicht auf Cloudflare Workers laufen. Bleiben Sie bei Vercel oder Fly. Wählen Sie eine Runtime – Split-Runtime-Stacks sind ein bekanntes Anti-Pattern.
FAQ
Was ist TanStack Ship?
TanStack Ship ist eine SaaS-Boilerplate, die TanStack Start, Cloudflare Workers, D1, R2, Stripe Checkout, Better Auth und Drizzle ORM in einem einzigen npm create-Befehl ausliefert. Es richtet sich an Solo-Gründer, die Micro-SaaS-Produkte ausliefern. Die vollständige Feature-Liste finden Sie auf der Feature-Seite.
Was kostet TanStack Ship?
TanStack Ship kostet $149 einmalig, enthält alle Module und lebenslange Updates. Cloudflares Free Tier deckt Ihr Hosting im Micro-SaaS-Maßstab ab (bis ~5k MAU). Bei Skalierung zahlen Sie direkt an Cloudflare – see the pricing page für die Aufschlüsselung nach Modulen.
Ist TanStack Ship gut für Solo-Gründer?
Ja – das ist die explizite Zielgruppe. Der Starter optimiert für Zero Ops, Edge Cold Start, Type Safety und One-Week Time-to-Launch. Das 14-Tage-Playbook oben ist der Workflow, den der Starter zu unterstützen построен.
Kann ich später von Vercel migrieren?
Im Prinzip ja. TanStack Start basiert auf Web Standards und Drizzle unterstützt sowohl D1 als auch Postgres. In der Praxis berührt eine Vercel-zu-Workers-Migration Server-Funktionen, Middleware, Blob-Speicher und KV. Planen Sie 1–2 Wochen für eine Micro-SaaS-große Migration.
Was ist der Unterschied zwischen TanStack Ship und ShipFast?
ShipFast ist Next.js + Vercel mit der größten Community. TanStack Ship ist TanStack Start + Cloudflare Workers mit Edge-nativer Architektur. See the TanStack Ship vs ShipFast comparison für den direkten Vergleich.
Was ist der Unterschied zwischen TanStack Ship und Makerkit?
Makerkit ist Next.js + Supabase mit den poliertesten UI-Komponenten. TanStack Ship ist TanStack Start + Cloudflare Workers mit Developer-Experience-Fokus. See the Makerkit comparison für den direkten Vergleich.
Nächster Schritt: See how TanStack Ship compares to ShipFast, Makerkit, and the full boilerplate comparison hub — or browse the features page to see the 14 production modules that ship with every license.