Casos de éxitoBlogSobre nosotros
Solicitar

Cómo implementamos SWR en un proyecto y por qué nos encantó

Kamil Polok

09 jun 20216 min de lectura

Next.jsReact

Tabla de contenidos

  • ¿Por qué SWR?

  • ¿Qué es SWR?

  • Por qué nos encantó SWR

  • Cómo funciona SWR

  • Mutación de datos

  • Integraciones de SWR

¿Por qué SWR?

Recientemente, en SDH tuvimos la oportunidad de desarrollar un proyecto con React y soporte de Redux/Toolkit. El tema es que, aunque los datos se guardaban y se obtenían desde el store, la app no tenía ningún mecanismo de caché implementado.  Y mantener decenas de respuestas en el estado no me parece precisamente buena idea. En cualquier caso, pronto se volvió demasiado fácil perderse entre tantos slices de estado, a pesar de usar Toolkit.  

Además, en ese momento no tenía ninguna influencia en el backend. Con esos bloques de datos del tamaño de un iceberg flotando por ahí, algunas peticiones tardaban una eternidad en resolverse.  Y como la UI de la aplicación consistía en largas listas de ítems con pocas operaciones CRUD,  quedó claro que algún tipo de caché vendría de perlas. Así que nos decidimos por SWR, una librería creada por los desarrolladores de Vercel (también conocidos por Next.js).

¿Qué es SWR?

Vale, ¿te gusta leer definiciones? Espero que no, porque esta será de las más cortas que hayas visto. ‘SWR es una librería de React Hooks para obtener datos remotos’. Ya está. ¿Simple? Sí, pero ahora te voy a mostrar que SWR también es muy potente. Y por si te lo preguntabas, SWR significa stale-while-revalidate, lo que ya explica cómo funciona. SWR devuelve datos de la caché (stale), envía una petición para obtener datos actualizados (revalidate) y después devuelve los nuevos datos.  Como decía, simple. 


Por qué nos encantó SWR

Es fácil ver cómo usar SWR elimina los problemas descritos al principio de este artículo. Gracias a SWR, nosotros:

  • Hicimos que la UI funcionara de maravilla (tras las peticiones iniciales) gracias al almacenamiento en caché de datos 
  • Eliminamos casi todos los slices que contenían datos de la API y su lógica asociada
  • Simplificamos el flujo de revalidación de datos tras realizar operaciones CRUD sobre colecciones
  • Aceleramos el desarrollo de nuevas funcionalidades dependientes de la API

¿Cómo implementamos realmente esta librería para lograr resultados tan mágicos? 

Cómo funciona SWR

Tras poco tiempo trabajando con SWR, quedó claro que es bastante simple y muy amigable de usar. ¿Te apetece hacer una petición a una API con SWR? Mira esto:

Screenshot 2023-07-21 at 16.32.34.png

La única particularidad es el fetcher. No es más que tu función personalizada para obtener datos. La aplicación en la que trabajamos ya tenía axios configurado y funcionando con toda su configuración (interceptors, headers, base URL, etc.), así que simplemente envolvimos nuestra instancia de axios así para obtener nuestro propio fetcher personalizado:

Screenshot 2023-07-21 at 16.32.42.png

Por lo tanto, el hook completo podría ser tan simple como esto (omitemos el manejo de errores en este ejemplo):

Screenshot 2023-07-21 at 16.32.48.png

Y... ¡eso es todo! Hemos creado un hook para obtener datos de la API aprovechando todas las bondades de SWR. Cada vez que se ejecute este hook, primero devolverá los datos obtenidos previamente (si existen) y solo entonces revalidará los datos y devolverá la nueva colección.

SWR viene de serie con un buen puñado de parámetros preconfigurados (todos están listados aquí), que hacen que trabajar con él sea pan comido. Una opción favorita a mencionar es dedupingInterval.

Escenario típico: obtienes datos en un componente, sigues desarrollándolo, los hijos se multiplican sin control y, al final, un hijo de cuarto nivel necesita esos datos. Conseguir llevar esos datos al componente hijo sin demasiado esfuerzo y evitando peticiones repetidas siempre es un reto. Pero no temas: simplemente reutiliza el hook de SWR... El deduping interval no permitirá que se haga la petición de nuevo dentro de un tiempo determinado (2 segundos por defecto). Nada mal.

"Pero si llamo al endpoint y devuelve los mismos datos de antes, mi componente se volverá a renderizar". No: SWR implementa comparación profunda, así que solo se renderizará de nuevo cuando los datos hayan cambiado de verdad. Y la función de comparación puede, por supuesto, personalizarse. 

Mutación de datos

Pero quizá digas que hacer un GET siempre es fácil: ¿qué pasa con las mutaciones? Seguro que eso es más complicado. Pues no tanto: las mutaciones no tienen por qué ser una pesadilla, y me sorprendió lo fácil que es mutar datos usando SWR (después de haberme divertido antes con Apollo). Aquí va un ejemplo real:

Screenshot 2023-07-21 at 16.32.54.png

En este ejemplo, mutate es una función importada de SWR y /users es la clave que le dimos en el hook useUsers (no tiene por qué ser la URL del endpoint: puedes pasar la clave y la URL por separado).

Si quieres almacenar en caché y actualizar una sola entidad (objeto) obtenida de una colección más grande, simplemente muta por su clave así:

Screenshot 2023-07-21 at 16.33.01.png

¿Parece demasiado simple? Es simple. Pruébalo y puede que te ahorres mucho tiempo escribiendo lógica extensa de Redux y depurando tus llamadas a la API.

Integraciones de SWR

Como ves, implementar SWR es sencillo; con un par de toques,  no cuesta llevar los ejemplos anteriores a niveles más altos y abstractos. Obviamente, SWR no se limita a esto y hay un buen número de opciones e integraciones disponibles:

integración con GraphQL

manejo de errores con opciones de reintento

revalidación automática

soporte de paginación (también para carga infinita)

prefetching de datos

y muchas más (documentación)

Trabajar con SWR nos pareció súper interesante y sin duda lo consideraremos para futuros proyectos. Si quieres saber más sobre esta fantástica librería, visita su sitio oficial con documentación, configuraciones y ejemplos aquí.

¡Feliz programación!

Unicorn3.png

 

Publicado el 09 de junio de 2021

Compartir


Kamil Polok

Front-end developer Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Digital Transformation Strategy for Siemens Finance

Cloud-based platform for Siemens Financial Services in Poland

See full Case Study
Ad image
Cómo implementamos SWR en un proyecto y por qué nos encantó
No te pierdas nada: suscríbete a nuestro boletín
Acepto recibir comunicaciones de marketing de Startup House. Haz clic para ver los detalles

También te puede gustar...

Cómo generar un PDF desde HTML en una aplicación React/Node.js
ReactNode.js

Cómo generar un PDF desde HTML en una aplicación React/Node.js

Generar archivos PDF desde HTML puede resultar complicado, pero con los métodos adecuados puedes conseguir el resultado que buscas. Explora distintas soluciones, desde las reglas de impresión de CSS hasta bibliotecas como html2canvas, jsPDF y Puppeteer. Comprende las ventajas y desventajas de cada enfoque para encontrar la mejor solución para tu proyecto. Contáctanos en hello@start-up.house para más información y asistencia. ¡Éxitos en tus proyectos de generación de PDF!

Eugene Zolotarenko

20 may 20216 min de lectura

4 razones para usar Chakra UI en tu próximo proyecto
Chakra UIReact

4 razones para usar Chakra UI en tu próximo proyecto

Chakra UI es una biblioteca de componentes sencilla, modular y accesible para crear aplicaciones con React rápidamente. Gracias a su fácil personalización, soporte para modo oscuro, capacidades de diseño responsive y enfoque en la accesibilidad, Chakra UI destaca entre otras bibliotecas de UI, lo que la convierte en una excelente opción para desarrolladores de React.

Mateusz Wójcik

19 ene 20214 min de lectura

Añadido recientemente

FinTech engineers reviewing transaction processing architecture and financial compliance requirements
FintechFinancial Software DevelopmentFinancial software compliance

Servicios de desarrollo de software financiero

En el software financiero, la fiabilidad, la seguridad y la velocidad no son características, sino condiciones previas para generar confianza. Esta guía cubre los pilares de la ingeniería financiera, el espectro completo de servicios, desde pasarelas de pago hasta sistemas core bancarios, y los stacks tecnológicos idóneos para el procesamiento transaccional de alto rendimiento. Explica estrategias de integración para ecosistemas financieros, los obstáculos de cumplimiento normativo que ralentizan la entrega y los KPIs que conviene seguir tras el lanzamiento. Las tendencias emergentes y los modelos de partnership completan el panorama.

Alexander Stasiak

13 ago 202610 min de lectura

FinTech engineers reviewing transaction processing architecture and financial compliance requirements
FinTechFinancial Software Compliance

Desarrollo de software a medida para seguros

El sector asegurador se rige por normativas y reglas tan específicas y tan dependientes de cada jurisdicción que las plataformas genéricas no las modelan con eficacia. Esta guía explica qué abarca el desarrollo de software de seguros a medida: desde la administración de pólizas y los flujos de gestión de siniestros hasta los motores de tarificación y los portales para clientes. Revisa el stack tecnológico que aporta la fiabilidad que el sector exige, sigue un desarrollo desde la fase de discovery hasta el despliegue y analiza dónde la IA está transformando la suscripción de riesgos. También aborda de forma directa los obstáculos más comunes y el coste real de la inacción.

Alexander Stasiak

11 ago 20268 min de lectura

Outsourced programming team working alongside an in-house product team on shared sprint goals
Software outsourcingComputer programmingCooperation Models

Servicios de outsourcing de programación

El outsourcing de programación ha pasado de ser un mero mecanismo de ahorro de costos a convertirse en una forma de incorporar talento especializado justo cuando la hoja de ruta lo requiere. Esta guía define qué abarcan los servicios de outsourcing de programación, por qué los eligen startups y grandes empresas, y cómo difieren en la práctica los principales modelos de colaboración. También propone un método para evaluar proveedores candidatos y recorre el proceso de entrega, desde la fase de discovery hasta el lanzamiento. Secciones sobre platform engineering, mitigación de riesgos, ROI y tendencias futuras completan el análisis.

Alexander Stasiak

10 ago 20268 min de lectura

Platform engineering team designing a multi-service enterprise platform architecture
Platform EngineeringEnterpriseStartup scalability

Servicios de desarrollo de plataformas empresariales

Una plataforma no es lo mismo que una aplicación: debe dar servicio a múltiples equipos, cargas de trabajo y casos de uso a la vez. Esta guía presenta los pilares de la arquitectura moderna de plataformas empresariales y compara los modelos de colaboración que mejor se adaptan al trabajo de plataforma de larga duración. Analiza plataformas verticales por industria, recorre el ciclo de vida desde el descubrimiento hasta el escalado y aborda los desafíos que dificultan la gobernanza de los proyectos de plataforma. La selección del stack, la preparación para el futuro y el caso de negocio de la mentalidad de plataforma completan la guía.

Alexander Stasiak

09 ago 20269 min de lectura

SaaS developers reviewing multi-tenant architecture and platform uptime metrics
SaaSCloud InfrastructureMulti-Tenancy

Desarrollo de SaaS en 2026

La ingeniería de SaaS es una disciplina aparte; no es simplemente desarrollo web con una suscripción encima. Esta guía explica qué hacen realmente de forma diferente los desarrolladores de SaaS, desde el aislamiento de datos multicliente y la infraestructura de alta disponibilidad hasta la facturación por uso y las optimizaciones de rendimiento críticas para el churn. Cubre las decisiones de stack tecnológico que, sin hacer ruido, determinan tus márgenes a largo plazo, y las habilidades en las que conviene insistir al contratar. Léela antes de encargar trabajo a un equipo o redactar una descripción de puesto.

Alexander Stasiak

08 ago 20268 min de lectura

SaaS product team reviewing multi-tenant platform architecture and subscription metrics
SaaSMulti-TenancySubscription Platforms

Servicios de desarrollo de aplicaciones SaaS

El éxito o fracaso de un producto SaaS depende de decisiones de arquitectura tomadas mucho antes de alcanzar los primeros mil usuarios. Esta guía cubre los pilares arquitectónicos del SaaS moderno, incluida la estrategia de multicliente, los objetivos de disponibilidad y la infraestructura de suscripciones. Recorre, fase por fase, el ciclo de vida del desarrollo, explica dónde encajan la IA y las integraciones avanzadas, y detalla los verdaderos factores de costo detrás del desarrollo de un SaaS. Las consideraciones específicas por industria y las recomendaciones para prepararse para el futuro ayudan a planificar el escalado en lugar de reaccionar ante él.

Alexander Stasiak

07 ago 20269 min de lectura

¿Listo para centralizar tu know-how con IA?

Empieza un nuevo capítulo en la gestión del conocimiento, donde el Asistente de IA se convierte en el pilar central de tu experiencia de soporte digital.

Reservar una consulta gratuita

Trabaja con un equipo de confianza para empresas líderes.

Rainbow logo
Siemens logo
Toyota logo

Construimos lo que viene después.

Empresa

Startup Development House sp. z o.o.

Aleje Jerozolimskie 81

Varsovia, 02-001

VAT-ID: PL5213739631

KRS: 0000624654

REGON: 364787848

Contáctanos

hello@startup-house.com

Nuestra oficina: +48 789 011 336

Nuevos negocios: +48 798 874 852

Síguenos

Award
logologologologo

Copyright © 2026 Startup Development House sp. z o.o.

Proyectos UEPolítica de privacidad