Diferencia estado local y server state, y explica caché, deduplicación, revalidación, sincronización y herramientas para consumir datos remotos en React.
La selección actual de una fila es estado local. La lista de productos obtenida del servidor es server state. No deben gestionarse necesariamente con la misma herramienta.
Todos los parámetros que cambian el resultado deben formar parte de la key. Si omites storeId, dos tiendas podrían compartir datos incorrectos. Usa valores serializables y consistentes.
Fresh: la caché puede reutilizarse sin revalidar según política.
Stale: puede mostrarse mientras se solicita una versión nueva.
Garbage collected: ya no se conserva porque no hay consumidores o expiró.
Estas políticas pertenecen a la herramienta. No confundas stale con necesariamente incorrecto: puede ser una estrategia para mantener UI visible durante revalidación.
Si tres componentes solicitan la misma key, una capa de server state puede compartir una Promise y una entrada de caché. Effects independientes pueden producir tres requests y tres estados de loading.
Un router o framework puede iniciar datos antes del render de la página, evitar waterfalls y coordinar errores. Server Components pueden acceder a datos en servidor y reducir fetching cliente. La caché e invalidación concretas dependen del framework; no generalices reglas de una implementación a React base.
Reintentar GET idempotente puede ser razonable con backoff. No reintentes automáticamente una mutación no idempotente sin protección. Clasifica códigos y errores; un 400 no se arregla repitiendo.
Una caché puede mostrar datos anteriores offline. Comunica que pueden estar desactualizados y encola mutaciones solo si puedes resolver conflictos y reintentos de forma segura.
El cache cliente es visible y modificable. No almacenes secretos ni confíes en datos cacheados para autorización. El servidor valida cada operación y filtra campos según permisos.