Blog
Feature
10. Februar 20268 min

RevenueCat-Abonnements: 16 Grenzfälle und schlaflose Nächte

Als ich beschloss, TAMSIV zu monetarisieren, wusste ich, dass ich ein solides Abonnementsystem brauchte. Drei Stufen: Free, Pro und Team. RevenueCat war die offensichtliche Wahl – sie kümmern sich um die Komplexität der Stores für Sie. Zumindest theoretisch.

Die Architektur der Stufen

Der Free-Plan bietet Zugang zu grundlegenden Funktionen mit täglichen Limits. Pro schaltet alles frei: KI-Bildgenerierung, Deepgram Cloud STT, unbegrenzte Memos. Team fügt die Kollaborationsschicht hinzu: hierarchische Gruppen auf 6 Ebenen, Zuweisungen, Checklisten.

Auf der Code-Seite zentralisiert eine Datei config/planLimits.ts alle Feature Gates. Jede Funktion überprüft den aktiven Plan, bevor sie ausgeführt wird.

Die 16 Grenzfälle bei Planänderungen

Ein Benutzer kann ein Upgrade durchführen, ein Downgrade, den Zeitraum ändern (monatlich → jährlich) oder beides kombinieren. Jede Kombination hat ein anderes Verhalten. Ein Upgrade wird sofort mit anteiliger Berechnung wirksam. Ein Downgrade wird auf das Ende des Zeitraums verschoben.

Ich habe 16 verschiedene Fälle gezählt. Für jeden: Zeitpunkt der Aktivierung, eventuelle anteilige Berechnung, Echtzeit-Aktualisierung der Feature Gates, korrekte Anzeige. Drei Tage Tests, um alles abzudecken.

Inkl. MwSt., exkl. MwSt. und französische gesetzliche Verpflichtungen

In Frankreich werden die Preise für Verbraucher inklusive Mehrwertsteuer angezeigt. Die Stores liefern lokalisierte Preise, aber es muss sichergestellt werden, dass die Anzeige der Gesetzgebung entspricht. Hinweis „Preis inkl. MwSt.“, Link zu den AGB, Informationen zum Widerrufsrecht.

Der PurchaseService

Alles läuft über einen Singleton PurchaseService, der RevenueCat initialisiert, Statusänderungen überwacht und den aktiven Plan über einen Hook bereitstellt. Der Dienst verwaltet die Wiederherstellung von Käufen und die Synchronisierung mit Supabase. Wenn ein Benutzer ein Upgrade durchführt, werden die neuen Funktionen sofort freigeschaltet.