Aperçu

Demander simplement aux utilisateurs de s’inscrire n’est pas seulement ennuyeux—cela pourrait vous coûter 45% de vos clients potentiels, selon la célèbre étude de cas du bouton à 300 millions de dollars. Pire encore, cette friction est amplifiée sur les petits écrans, où les taux d’abandon grimpent à 86% pour les utilisateurs mobiles qui refusent tout simplement de taper de longs formulaires, selon des données récentes sur l’abandon.

À la fin de cet article, vous aurez un flux où les utilisateurs peuvent d’abord s’approprier de la valeur et s’inscrire ensuite, sans perdre leurs données. Ainsi, vous pourrez éviter cette énorme perte de clients potentiels.

Qu’est-ce que l’inscription différée ?

L’inscription différée (Lazy registration ou inscription “Just-in-Time”) est une stratégie où vous repoussez le processus d’inscription au tout dernier moment absolu. Au lieu de bloquer immédiatement les utilisateurs avec un écran de connexion, vous leur permettez d’interagir avec votre application, de créer du contenu ou de personnaliser leur expérience en tant qu’utilisateur “anonyme”.

Ce n’est que lorsqu’ils souhaitent enregistrer leur travail de manière permanente, accéder à des fonctionnalités multi-appareils ou effectuer une action sensible que vous leur demandez de créer un compte. Cela renforce la confiance et l’investissement avant de demander un engagement.

Comment implémenter l’inscription différée dans Firebase

0. Prérequis

Avant de commencer, vous avez besoin d’un projet Firebase. Si vous n’en avez pas encore créé un, rendez-vous sur la Console Firebase et configurez-en un. Google propose également une vidéo YouTube utile qui vous guide tout au long du processus.

Vous devrez également activer l’Authentification dans votre console Firebase. Accédez à l’onglet Build > Authentication et commencez.

Ajouter un nouveau fournisseur d’authentification

Assurez-vous d’activer les fournisseurs de connexion Anonymes ainsi que tout autre fournisseur que vous prévoyez d’utiliser (comme Google, Email/Mot de passe, etc.).

1. Stockage de données pour les utilisateurs anonymes

Le cœur de l’inscription différée dans Firebase est signInAnonymously. Cela crée une session utilisateur temporaire qui persiste au fil des rechargements de page, vous permettant de traiter l’utilisateur comme “connecté” sans aucune information d’identification.

import { getAuth, signInAnonymously } from "firebase/auth";

const auth = getAuth();
await signInAnonymously(auth);

Une fois connecté, vous pouvez écouter l’état d’authentification comme n’importe quel autre utilisateur. Si vous utilisez React, le hook useAuthState de react-firebase-hooks est fantastique pour cela.

import { getAuth, onAuthStateChanged } from "firebase/auth";

onAuthStateChanged(auth, (user) => {
    if (user) {
        // L'utilisateur est connecté.
        // Pour les utilisateurs anonymes, user.isAnonymous sera true
        const uid = user.uid;
        console.log("L'utilisateur est connecté :", uid, "Est anonyme :", user.isAnonymous);
    } else {
        // L'utilisateur est déconnecté
    }
});

Consultez la documentation des utilisateurs Firebase pour toutes les propriétés disponibles.

1.1 Gestion des utilisateurs anonymes dans Firestore

Par défaut, les comptes anonymes persistent jusqu’à ce que l’utilisateur se déconnecte. Cependant, s’ils ne se convertissent jamais en compte permanent, vous pourriez vous retrouver avec beaucoup de vieux enregistrements d’utilisateurs.

Pour gérer cela, nous pouvons tirer parti de Identity Platform de Google Cloud. Cela offre des fonctionnalités avancées, y compris la possibilité de supprimer automatiquement les utilisateurs anonymes qui n’ont pas été actifs pendant une période définie (par ex. 30 jours).

Tout d’abord, vous devrez passer à Identity Platform dans la Console Firebase :

Activation d’Identity Platform

Une fois activé, vous pouvez configurer la politique de suppression automatique pour les utilisateurs anonymes :

Activation de la suppression automatique de compte

Cela permet de garder votre base d’utilisateurs propre sans entretien manuel.

2. Lier des utilisateurs anonymes à un compte permanent

La magie opère lorsque l’utilisateur décide de s’inscrire. Vous ne voulez pas qu’ils recommencent à zéro ; vous voulez convertir leur compte anonyme en un compte permanent. Firebase rend cela facile avec linkWithCredential.

Cela “met à niveau” efficacement l’utilisateur anonyme actuel vers un utilisateur standard (ex: Email/Mot de passe, Google, etc.), en préservant son UID et toute donnée associée dans Firestore.

Voici un exemple utilisant Email et Mot de passe :

import { getAuth, linkWithCredential, EmailAuthProvider } from "firebase/auth";

const auth = getAuth();
const credential = EmailAuthProvider.credential(email, password);

try {
    const user = auth.currentUser;
    const result = await linkWithCredential(user, credential);
    const user = result.user;
    console.log("Compte anonyme mis à niveau avec succès !", user);
} catch (error) {
    console.error("Erreur lors de la mise à niveau du compte", error);
    // Gérer les erreurs comme 'credential-already-in-use' si l'email est déjà pris
}

Après cette étape, user.isAnonymous sera false. L’utilisateur conserve tous ses progrès, mais maintenant il peut se connecter depuis d’autres appareils et son compte est sécurisé.

L’inscription différée en action

Si vous voulez expérimenter comment les implémentations détaillées de ces modèles fonctionnent, jetez un œil à mon application qui enseigne la ligne de commande Windows. Je la développe activement pour inclure un cours de piratage avec un terminal interactif, en utilisant ces principes exacts pour permettre aux étudiants de commencer à apprendre immédiatement.

Conclusion

L’inscription différée est un modèle puissant pour stimuler les taux de conversion. En laissant les utilisateurs s’engager d’abord et s’inscrire plus tard, vous supprimez les barrières à l’entrée et prouvez votre proposition de valeur dès le départ. Avec signInAnonymously et linkWithCredential de Firebase, l’implémentation de ce flux est simple et robuste.