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.