Aller au contenu principal
    Blog
    3 juin 20263 min

    Race conditions React : les 4 patterns qui les éliminent

    Une race condition React = bug 1 fois sur 50 invisible en dev, critique en prod. Les 4 patterns qui les éliminent avec exemples concrets.

    MB

    Meymoun Boualaoui

    Président · DG · CTO, Fondateur

    Race conditions React : les 4 patterns qui les éliminent

    Une race condition = 2 opérations async dont l'ordre n'est pas garanti. En React, c'est le bug "1 fois sur 50" impossible à reproduire en dev.

    Les 4 cas les plus fréquents

    | Cas | Symptôme | Solution |

    |---|---|---|

    | Double fetch sur même resource | 2 setStates, ordre indéterminé | React Query (dedup native) |

    | Fetch après unmount | Warning "setState on unmounted" | AbortController dans useEffect |

    | Click pendant requête en cours | Soumission double, doublon en DB | Disable button + flag isPending |

    | Navigation pendant fetch | Données affichées sur mauvaise page | AbortController + cleanup |

    Pattern 1 : AbortController

    tsx
    useEffect(() => {
      const ctrl = new AbortController();
      fetch(url, { signal: ctrl.signal })
        .then(setData)
        .catch(e => { if (e.name !== "AbortError") throw e });
      return () => ctrl.abort();
    }, [url]);

    Pattern 2 : flag isPending (mutations)

    Toute mutation expose isPending. Button disabled tant que true. Sinon : 1 user excité → 3 requêtes → 3 lignes en DB.

    Pattern 3 : React Query / SWR

    Dedup, cache, refetch sur focus, gestion stale gratuite. Ne pas réinventer.

    Pattern 4 : optimistic update + rollback

    UI update immédiat, rollback si l'API échoue. Évite le "j'attends 800ms et je crois que ça a marché". useMutation({ onMutate, onError }).

    Anti-pattern : setState dans .then() sans guard

    fetch().then(data => setState(data)) après unmount = warning + memory leak. Toujours AbortController OU vérifier isMounted via ref.

    Partager

    Questions fréquentes

    MB

    Écrit par

    Meymoun Boualaoui

    Président · DG · CTO, Fondateur

    Fondateur de Next Generation. Dev full-stack, SEO technique et architecture web, il maîtrise toute la chaîne de production, de l'infra au contenu qui ranke. Direct, analytique, perfectionniste.

    Voir le profil & tous les articles
    Service lié

    Besoin d'un accompagnement en seo & référencement ?

    Vos concurrents passent devant vous sur Google ? Audit, contenu, fiche Google et liens : on travaille votre place mois après mois, et on vous montre d'où vient chaque demande.

    Besoin d'aide pour votre stratégie digitale ?

    Nos experts sont là pour transformer vos ambitions en résultats concrets.

    Audit gratuitPremier mois en testRéponse sous 24h ouvrées