Mejores Prácticas de Networking
Un resumen condensado de las 25 prácticas de networking más importantes extraídas de cada página en esta sección.
Busca en todas las páginas de la documentación
Un resumen condensado de las 25 prácticas de networking más importantes extraídas de cada página en esta sección.
Centraliza HTTP en un módulo client: adjunta la URL base, headers de autenticación, tiempos de espera y comprobaciones HTTPS en api/client.ts - las características nunca dispersan fetch crudo a hosts arbitrarios.
Aplica HTTPS en compilaciones de producción: rechaza http:// en el punto de estrangulamiento del cliente - android.usesCleartextTraffic es solo para desarrollo local.
Siempre establece tiempos de espera de solicitud: usa AbortController + temporizador (8-15 s de lecturas, más ajustado para mutaciones) - los cambios de LTE se cuelgan indefinidamente sin ellos.
Cancela solicitudes en vuelo al desmontar: pasa signal desde la limpieza de useEffect o queryFn de TanStack Query - evita setState-después-desmontaje y tiempo de radio desperdiciado.
Analiza JSON en el borde de la red con Zod: nunca conviertas res.json() ciegamente - un esquema por endpoint atrapa la desviación del backend antes de que los usuarios vean fallos.
Clasifica los errores antes de mostrar texto: offline (TypeError), timeout (AbortError), estado HTTP y fallos de análisis necesitan mensajes diferentes - ver Network Failure UX.
fetch por defecto en Hermes: cero bytes de bundle extra - añade axios solo cuando los interceptors, isAxiosError o convenciones del equipo justifiquen -13-15 KB gzip.
Implementa interceptors una sola vez: ya sea un envoltorio fetch o axios, la adjunción de autenticación y el manejo de 401 viven en un módulo único emparejado con Refresh Token Rotation.
El progreso de carga requiere XMLHttpRequest o FileSystem: ni fetch ni axios exponen progreso de carga confiable en React Native - planifica XHR o expo-file-system para avatares y medios.
Adopta TanStack Query para estado del servidor compartido: reemplaza hooks fetch manual useEffect cuando múltiples pantallas leen la misma API - cache, deduplicación y refetch en segundo plano son gratuitos.
Conecta focusManager a AppState: refetch de consultas obsoletas cuando la app se vuelve active - móvil no tiene eventos de window focus.
Conecta onlineManager a NetInfo: pausa reintentos de consultas offline; reanuda al reconectar - reintentos sin límite en modo avión agotan la batería.
Ajusta staleTime por clave de consulta: 30-60 s para feeds, más largo para catálogos - global staleTime: 0 refetch demasiado agresivamente en cada primer plano.
Muestra etiquetas de antigüedad: muestra dataUpdatedAt o "Actualizado hace 2 min" - usuarios en LTE inestable necesitan saber que los datos pueden ser antiguos.
Reintenta GET con backoff exponencial y jitter: límite en 3-4 intentos - jitter evita picos de cliente sincronizados cuando las torres se recuperan.
Nunca reintentar POST no-idempotente ciegamente: usa headers Idempotency-Key y deduplicación del servidor para pagos y creaciones - ver Retries, Backoff & Idempotency.
Establece mutations.retry de TanStack Query a 0 por defecto: reintento de capa de transporte con claves de idempotencia estables vence invocaciones de función de mutación duplicadas.
Persiste caches de lectura selectivamente: persistQueryClient con AsyncStorage o MMKV para catálogos - limpia al cerrar sesión; excluye PII sin encriptar.
Cierra WebSockets en segundo plano: reconecta con backoff en primer plano - dejar sockets abiertos desperdicia batería y se mata por el SO.
Ofrece fallback de polling para características en tiempo real: intervalos más lentos en celular y en segundo plano - o notificaciones push para eventos de entrega obligatoria.
Elige urql para GraphQL ligero; Apollo para gráficos complejos: mide bundle con expo export - persiste cache normalizado con límites de tamaño en dispositivo.
TLS del sistema por defecto; fija solo con un ADR: el fijado de certificados necesita reconstrucciones nativas, runbooks de rotación y rompe proxies corporativos - la mayoría de apps no deberían fijar en el primer día.
Encola mutaciones offline con UI optimista: persiste escrituras fallidas, muestra estado pending, vacía al reconectar - empareja con Optimistic UI.
Nunca bloquees el hilo UI en análisis de red: transformaciones JSON grandes pertenecen fuera de la ruta caliente; transmite o pagina listas enormes - mantén pulsaciones responsivas.
Lista de verificación de networking previo al lanzamiento: dispositivo físico en LTE, comportamiento de reintento en modo avión, limpieza de caché de cierre de sesión, verificación puntual de idempotencia y búsqueda de política TLS antes del envío a la tienda.
fetch con un envoltorio client delgado a menos que los interceptors o ergonomía de carga fuercen axios. TanStack Query se sitúa encima de cualquier transporte.
QueryClientProvider, focusManager + AppState, onlineManager + NetInfo, staleTime sensible y signal en queryFn.
Raro - finanzas reguladas/salud con ops de seguridad siendo propietario de rotación. TLS del sistema por defecto per Certificate Pinning y Security Rules.
Las páginas de networking cubren transporte, cache y UX de fallos. El offline-first completo añade sincronización SQLite - Offline-First Basics.
Versiones de stack: Esta página se escribió para React 19.2.3, React Native 0.86.0 y Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última actualización: 19 jul 2026