Aller au contenu

Privacy & RGPD

Pionne est conçu pour être conforme RGPD par défaut. Voici ce qui est fait, ce que tu dois savoir, et ce que tu peux faire en plus.

Avant l’envoi, le SDK nettoie les patterns PII courants : email, numéros de carte, IBAN, JWT, tokens, IPs, téléphones. Voir PII Scrubbing pour la liste complète et la personnalisation.

  • Le serveur n’enregistre jamais l’IP de l’event.
  • Le champ user.id est libre côté SDK — utilise un identifiant anonyme (UUID, hash). N’envoie jamais l’email.
// Bien
Pionne.setUser('user_a8f2c1');
// Mal
Pionne.setUser('john@doe.com');

Les events sont automatiquement supprimés après 30 jours. Aucune action requise. Cette durée couvre la grande majorité des besoins de debug post-release sans accumuler des données indéfiniment.

Si un utilisateur de ton app demande la suppression de ses données :

  1. Récupère son user.id (l’identifiant anonyme que tu lui as assigné).
  2. Filtre les issues dans le dashboard Pionne par ce user.id.
  3. Supprime les issues concernées via DELETE /api/projects/{id}/issues/{issueId}.

Comme le seul lien entre un event et l’utilisateur réel est cet ID anonyme stocké côté ton app, la suppression côté Pionne est définitive.

Pionne peut afficher la ville/région/pays approximatif sur chaque event, comme Sentry — utile pour repérer une régression localisée à un FAI ou un pays. Désactivé par défaut.

Activation :

Pionne.init({
token: '...',
sendGeography: true,
});

Ce qui est fait :

  • Un seul appel HTTP au démarrage vers https://ipapi.co/json/ (timeout 4 s). Pas de coordonnées GPS, aucune permission OS requise.
  • Le résultat — { city, region, country, country_code } — est mis en cache et joint à chaque event sous contexts.geo.
  • L’IP brute n’est jamais persistée : seule la ville/région/pays approximatif l’est, sous la même rétention 30 jours que le reste.
  • Le lookup peut être désactivé runtime via setEnabled(false) ou en repassant sendGeography: false au prochain init().

Tu veux ton propre fournisseur pour rester chez toi ? geographyEndpoint: 'https://geo.tonapi.com/' accepte n’importe quelle URL renvoyant { city, region, country, country_code }.

Les screenshots sont :

  • Opt-in (captureScreenshot: true).
  • Stockées en JPG q=0.5 par défaut côté serveur Pionne.
  • Soumises à la même rétention 30 jours.

Pour ces verticales sensibles, va plus loin que le default :

Pionne.init({
token: '...',
captureScreenshot: false,
scrubPii: [
{ re: /patient_[a-z0-9]+/gi, replace: '[patient]' },
{ re: /diagnosis:[^\n]+/gi, replace: 'diagnosis:[redacted]' },
],
beforeSend: (event) => {
// Drop tout ce qui contient des champs métier sensibles
if (event.extra?.medicalRecord) return null;
return event;
},
});
  • Données hébergées en France (datacenter UE).
  • Backend : stack Laravel + base SQL.
  • Pas de transferts hors UE.
  • Sous-traitants : Apple/Google pour les push notifications uniquement.