Blog
Build in Public
26 de marzo de 20264 min

Recordatorios que desaparecían, correos que no llegaban — sprint de calidad continua

Quand tu développes une app en solo, il y a des semaines où tu ajoutes des fonctionnalités qui brillent. Et il y a des semaines où tu passes tes soirées à traquer des bugs que personne ne t'a signalés — parce que tu les as trouvés toi-même en utilisant ta propre app. Cette semaine, c'était la deuxième option.

Voici le résumé de quatre corrections qui, individuellement, semblent petites. Mais mises bout à bout, elles changent vraiment l'expérience au quotidien.

Les rappels qui disparaissaient en silence

Le scénario : tu crées une tâche avec trois rappels — un dans 10 minutes, un demain matin, un vendredi. Sauf que le premier rappel est déjà dans le passé (tu as mis trop de temps à valider). TAMSIV affichait un avertissement : "Ce rappel est dans le passé". Jusque-là, logique.

Le problème ? En fermant cet avertissement, tous les rappels étaient supprimés. Les deux rappels futurs, parfaitement valides, partaient avec. Un nettoyage un peu trop zélé dans le code de validation.

La correction sépare maintenant clairement les rappels passés des rappels futurs. L'avertissement ne concerne que ce qui est effectivement expiré, et les rappels à venir restent intacts. J'en ai aussi profité pour renforcer la validation globale — les cas limites autour des fuseaux horaires sont mieux gérés.

Les emails de rappel qui n'arrivaient jamais

TAMSIV supporte deux canaux de notification pour les rappels : le push (notification sur le téléphone) et l'email. En théorie. En pratique, quand un utilisateur créait un rappel, seul le canal push était activé par défaut. L'email ? Désactivé. Silencieusement.

Si tu n'allais pas manuellement cocher "email" dans les paramètres du rappel, tu ne recevais jamais rien dans ta boîte mail. Pas d'erreur, pas de message — juste le silence.

Maintenant, les deux canaux sont activés par défaut. Tu reçois un push et un email. Si tu veux désactiver l'un des deux, c'est toujours possible, mais au moins le comportement par défaut est celui que tout le monde attend.

L'erreur fantôme au démarrage

Celle-là, c'est le genre de bug qui ne casse rien mais qui mine la confiance. Tu ouvres l'app après quelques heures d'inactivité, et pendant une fraction de seconde, une erreur "Invalid Refresh Token" flashe à l'écran. Puis tout fonctionne normalement.

Ce qui se passait : au démarrage à froid, Supabase tentait de rafraîchir le token d'authentification. Si le token avait expiré, le SDK levait une erreur avant que le mécanisme de reconnexion automatique n'ait le temps de faire son travail. L'erreur remontait jusqu'à l'UI alors qu'elle n'avait aucune raison d'y être — la reconnexion finissait toujours par réussir.

La correction intercepte cette erreur spécifique au bon niveau et la supprime de l'affichage. Le rafraîchissement de session continue de fonctionner exactement comme avant, mais l'utilisateur ne voit plus un message d'erreur anxiogène qui ne le concerne pas.

Le guide des badges traduit en 6 langues

TAMSIV est disponible en français, anglais, allemand, espagnol, italien et portugais. Le système de gamification — niveaux, badges, streaks — fait partie des fonctionnalités que les utilisateurs découvrent progressivement. Sauf que le guide explicatif des badges n'existait qu'en français et en anglais.

C'est corrigé. Les 10 badges, leurs conditions de déblocage et leurs descriptions sont maintenant traduits dans les 6 langues. Ce n'est pas un fix spectaculaire, mais c'est le genre de détail qui fait qu'un utilisateur germanophone ou lusophone se sent chez lui dans l'app.

Et maintenant ?

Ces quatre corrections représentent une journée de travail. Aucune n'aurait fait un titre de changelog excitant. Mais ensemble, elles éliminent des frictions réelles — des rappels perdus, des emails manqués, une erreur qui fait douter, une fonctionnalité à moitié traduite.

Le sprint qualité continue. La prochaine session sera probablement aussi peu glamour — et tout aussi nécessaire.