Blog
Feature
10 de fevereiro de 20268 min

Assinaturas RevenueCat: 16 casos extremos e noites sem dormir

Quando decidi monetizar o TAMSIV, sabia que precisava de um sistema de assinaturas robusto. Três níveis: Free, Pro e Team. O RevenueCat se impôs — eles gerenciam a complexidade das lojas para você. Bem, em teoria.

A arquitetura dos níveis

O plano Free dá acesso às funções básicas com limites diários. O Pro desbloqueia tudo: geração de imagens IA, STT cloud Deepgram, memorandos ilimitados. O Team adiciona a camada colaborativa: grupos hierárquicos em 6 níveis, atribuições, checklists.

No código, um arquivo config/planLimits.ts centraliza todos os feature gates. Cada funcionalidade verifica o plano ativo antes de ser executada.

Os 16 casos limites de mudanças de plano

Um usuário pode fazer upgrade, downgrade, mudar de período (mensal → anual) ou combinar os dois. Cada combinação tem um comportamento diferente. Um upgrade entra em vigor imediatamente com rateio. Um downgrade é adiado para o final do período.

Contei 16 casos distintos. Para cada um: momento de ativação, eventual rateio, atualização dos feature gates em tempo real, exibição correta. Três dias de testes para cobrir tudo.

TTC, HT e obrigações legais francesas

Na França, os preços são exibidos com impostos incluídos para os consumidores. As lojas fornecem os preços localizados, mas é preciso garantir que a exibição respeite a legislação. Menção "Preço com impostos incluídos", link para os Termos e Condições, informação sobre o direito de rescisão.

O PurchaseService

Tudo passa por um singleton PurchaseService que inicializa o RevenueCat, escuta as mudanças de estado e expõe o plano ativo via um hook. O serviço gerencia a restauração de compras e a sincronização com o Supabase. Quando um usuário faz upgrade, as novas funcionalidades são desbloqueadas instantaneamente.