# Frontend — Risques & vigilance : Général > Extrait de la base de connaissance Lead_tech. Voir `knowledge/frontend/risques/README.md` pour l'index complet. --- ## Accessibilité oubliée (a11y) ### Risques - App inutilisable au clavier/lecteur d'écran - Régressions silencieuses sur focus/labels ### Symptômes - Modales impossibles à fermer au clavier - Inputs sans labels/erreurs non annoncées - Focus "perdu" ### Bonnes pratiques / mitigations - Checklist a11y minimale sur chaque écran clé - Gestion de focus (modales, erreurs formulaire) - Labels/aria cohérents + tests simples --- ## Regex globale `/g` en singleton — bug `lastIndex` stateful ### Risques - Une regex avec flag `/g` ou `/y` définie comme constante au niveau module maintient un état `lastIndex` entre les appels - `String.prototype.replace()` réinitialise `lastIndex`, mais `.test()` ou `.exec()` ne le font pas → bug stateful difficile à détecter, souvent introduit par un refactor ultérieur ### Symptômes - `.test(str)` retourne alternativement `true` / `false` sur la même chaîne selon l'ordre d'appel - Bug non reproductible en isolation, uniquement en séquence d'appels ### Bonnes pratiques / mitigations ```typescript // ❌ RISQUÉ — regex globale partagée entre tous les appels const LINK_PATTERN = /https?:\/\/\S+/gi; function processLinks(content: string) { return content.replace(LINK_PATTERN, ...); // OK today // Mais si quelqu'un ajoute LINK_PATTERN.test(x) ailleurs → bug lastIndex } // ✅ SÛR — nouvelle instance à chaque appel, aucun état partagé function makeLinkPattern(): RegExp { return /https?:\/\/\S+/gi; } function processLinks(content: string) { return content.replace(makeLinkPattern(), ...); } ``` - **Règle** : les regex avec flag `/g` ou `/y` utilisées pour transformation de strings → toujours créer via une factory, jamais en singleton de module - Contexte technique : TypeScript / React Native — app-alexandrie 24-03-2026