mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-06-28 01:53:40 +02:00
docs(knowledge): capitalisation frontend — intégration du triage local (mai-juin 2026)
Triage et intégration des propositions frontend du buffer 95_a_capitaliser.md (lot local RL799_V2/Vue3 + app-alexandrie/RN-Expo, mai-juin 2026). ~73 entrées intégrées sur knowledge/frontend/ + 1 nouveau fichier, dont : - patterns/state.md : race-token partagé latest-wins (fusion 3 props), capture sync anti-race, event bus timestamp, clé cache composite, état dérivé = computed - risques/state.md : 9 risques Zustand/store (fetchId reset, useRef remount, re-fetch infini sur [], flag optimiste écrasé, cache détail/liste stale, latch sans reset, :key index) - patterns/navigation.md : Expo Router (tab bar, useFocusEffect, Href typé, routing pur fusionné) - patterns/general.md : helpers temps purs, composants génériques + skeleton, fail-fast, touch target - risques/general.md : 24 risques (sweep statique, filtre client liste paginée, hooks avant return, a11y VoiceOver/disabled, redirection allowlist, RangeError toISOString, section i18n...) - design-tokens (cluster theming light/dark MD3), tests, performance, react-native, nextjs - NOUVEAU risques/responsive.md (gating par capacité d'input + checklist régressions mobile) - READMEs patterns/risques mis à jour Doublons inter-fichiers évités (vérifié : aucune ancre dupliquée introduite). Rejets (doublons 91/9/87), reciblages workflow (156/257) et bloc 32 (CLAUDE projet) non intégrés ici. Source 95_a_capitaliser.md non purgée (purge en fin de capitalisation complète). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -376,3 +376,24 @@ function handleToggle(id: string) {
|
||||
- **Règle** : tout formulaire d'édition réutilisé pour plusieurs entités doit avoir une `key` distincte par entité
|
||||
|
||||
- Contexte technique : React / Next.js — app-template-resto 21-03-2026
|
||||
|
||||
---
|
||||
|
||||
<a id="risque-correlation-multi-onglets-sessionstorage"></a>
|
||||
## Corrélation d'un retour multi-onglets : `localStorage`, pas `sessionStorage`
|
||||
|
||||
### Risques
|
||||
|
||||
- Un flux qui ouvre un NOUVEL onglet (checkout Stripe web, OAuth popup) devant renvoyer un signal corrélé (nonce anti-rejeu) pose le nonce en `sessionStorage`
|
||||
- `sessionStorage` n'est PAS partagé entre onglets : l'onglet de retour a un `sessionStorage` vide → le nonce n'est jamais transmis → la validation doit être tolérante (accepte les messages sans nonce) donc **inopérante**
|
||||
|
||||
### Symptômes
|
||||
|
||||
- La corrélation anti-message-forgé devient une no-op silencieuse ; impossible d'exiger la présence du nonce
|
||||
|
||||
### Bonnes pratiques / mitigations
|
||||
|
||||
- Stocker le nonce en `localStorage` (partagé same-origin entre onglets), jamais en `sessionStorage`
|
||||
- Avec `localStorage`, le nonce est réellement lisible côté retour → on peut **EXIGER** sa présence (mode strict) au lieu de la tolérer ; nettoyer la clé après usage
|
||||
- `BroadcastChannel` reste le canal de transport (same-origin) mais ne porte pas l'état de session — d'où le besoin du storage partagé
|
||||
- Contexte technique : Next.js / web — app-alexandrie (review ux-parcours-1/8 + bo-2), 04-06-2026
|
||||
|
||||
Reference in New Issue
Block a user