React es la biblioteca de JavaScript desarrollada por Meta para construir interfaces de usuario declarativas basadas en componentes. La versión estable actual incorpora un conjunto de características que consolidan años de trabajo en renderizado concurrente, compilación automática y componentes de servidor, transformando la forma en que se escriben aplicaciones frontend profesionales.
Se utiliza principalmente en aplicaciones web de una sola página (SPA), sitios con renderizado híbrido (Next.js, Remix), aplicaciones móviles con React Native y experiencias de escritorio con Electron o Tauri.
Componentes y JSX
React se basa en componentes funcionales, piezas reutilizables que describen una parte de la interfaz. Los componentes se componen unos dentro de otros formando un árbol que construye la UI completa. JSX es la extensión de sintaxis de JavaScript que permite escribir markup declarativo dentro del código y se compila en llamadas a createElement.
Virtual DOM y renderizado concurrente
React mantiene una representación en memoria del DOM y usa un algoritmo de reconciliación para calcular el conjunto mínimo de cambios sobre el DOM real. El motor concurrente actual permite priorizar actualizaciones urgentes, pausar y reanudar trabajo de renderizado, y ejecutar transiciones en segundo plano sin bloquear la interfaz.
React Compiler
El React Compiler es un compilador que analiza los componentes y aplica memoización automática cuando es segura, eliminando la necesidad de envolver a mano con useMemo, useCallback y React.memo. El código fuente se mantiene limpio mientras el compilador genera las optimizaciones equivalentes en el build.
Server Components y Client Components
Los Server Components (RSC) se renderizan exclusivamente en el servidor y nunca envían su código al cliente, lo que reduce el tamaño del bundle y permite acceder a recursos de backend (base de datos, sistema de archivos) directamente desde el componente. Los Client Components son los componentes interactivos clásicos, marcados con la directiva "use client" cuando conviven con RSC.
Actions y formularios
Las Actions son funciones que encapsulan mutaciones asíncronas (crear, actualizar, eliminar). React gestiona automáticamente estados de pendiente, error y optimistic update a través de hooks dedicados:
- useActionState: conecta una action con un formulario y expone el estado de ejecución.
- useFormStatus: permite que un botón de envío conozca el estado del formulario padre sin prop drilling.
- useOptimistic: actualiza la interfaz con un valor tentativo mientras la mutación se completa, con rollback automático si falla.
Hooks y primitivas modernas
- use(): lee un recurso (promesa, contexto) dentro del render y se integra con Suspense.
- async transitions:
startTransitionadmite funciones async para transiciones diferidas que esperan datos. - ref como prop: los componentes funcionales reciben
refcomo una prop más, sin necesidad deforwardRef. - document metadata: etiquetas
<title>,<meta>y<link>declaradas dentro de cualquier componente se elevan automáticamente al<head>del documento.
Unidireccionalidad del flujo de datos
Los datos fluyen de padres a hijos mediante props, lo que hace el estado predecible y el código fácil de depurar. El estado se gestiona con useState, useReducer, Context API y bibliotecas externas como Redux Toolkit, Zustand, Jotai o TanStack Query para estado de servidor.
Usos de React
- Single Page Applications: aplicaciones web donde la navegación se resuelve en cliente sin recargas de página.
- Aplicaciones híbridas: SSR, SSG y streaming con frameworks como Next.js y Remix.
- Interfaces complejas: paneles administrativos, dashboards, plataformas SaaS, redes sociales y comercio electrónico.
- Aplicaciones móviles: React Native para iOS y Android compartiendo base de conocimiento con React web.
Ventajas de React
- Reutilización de componentes: menos código duplicado y coherencia visual garantizada.
- Rendimiento automático: el React Compiler aplica memoización sin intervención y el motor concurrente prioriza lo que importa.
- Ecosistema maduro: Vite, Next.js, React Router, TanStack Query, Redux Toolkit, Tailwind CSS, Radix UI y la suite de testing con Vitest y React Testing Library.
- Tipado profesional: integración de primera clase con TypeScript para contratos claros entre componentes.
- Comunidad y empleabilidad: es la biblioteca frontend más demandada en ofertas de empleo senior y en proyectos empresariales.