¿Qué es React?
React es una biblioteca de JavaScript para construir interfaces de usuario, desarrollada y mantenida por Meta (antes Facebook). Se caracteriza por su descripción declarativa de la UI y una arquitectura basada en componentes, y se utiliza en un amplio rango: desde pequeños widgets hasta SPAs completas. El núcleo de React es el renderizado eficiente a través del DOM virtual. Cuando cambia el estado (state), React refleja en el DOM solo la diferencia, así que no hace falta manipular manualmente el DOM.En esta página se explica la combinación de React 19 e Inertia v3. Los starter kits de Laravel 13 usan esta configuración por defecto.
JSX y TSX
Los componentes de React se escriben con la sintaxis JSX (JavaScript XML). Permite escribir una notación parecida a HTML directamente dentro de JavaScript..tsx) como estándar. Con las definiciones de tipo se mejora el autocompletado del IDE y se detectan bugs de forma temprana.
Posición dentro de Laravel
Historia
La relación entre React y Laravel es algo más reciente que la de Vue, pero actualmente tiene un tratamiento igual o superior. En Laravel 6 (2019) el scaffold de autenticación se separó al paquetelaravel/ui, y junto con Vue se ofreció también un scaffold para React. Sin embargo, en aquel momento Vue era predominante y la presencia de la versión React era escasa.
Con la incorporación del stack Inertia + React en Laravel Breeze (2021) comenzó su adopción real, y con la renovación de los starter kits de Laravel 12 (2025), React pasó a estar en pie de igualdad con Vue (más aún, apareciendo el primero).
Estilo dominante actual: Inertia × React
El uso central de React en Laravel actualmente es Inertia × React. Inertia permite realizar una arquitectura de “monolito moderno” en la que se pasan datos directamente desde los controladores de Laravel a componentes de React sin diseñar una API.Configuración
Vía starter kit (recomendado)
Al iniciar un proyecto nuevo, usar el starter kit es lo más sencillo.inertiajs/inertia-laravel(adaptador del lado servidor)@inertiajs/react(adaptador del lado cliente)react+react-dom(React 19)@vitejs/plugin-react(plugin de Vite)- TypeScript +
@types/react - Tailwind CSS + biblioteca de componentes shadcn/ui
- Middleware
HandleInertiaRequests - Pantallas de autenticación como login y registro (ya implementadas con Inertia + React + TypeScript)
Instalación manual
Si vas a añadirlo a un proyecto existente, instala por separado el lado servidor y el lado cliente.vite.config.ts.
resources/js/app.tsx.
Para los detalles de la instalación manual (configuración de la plantilla raíz, registro del middleware, etc.), consulta la documentación oficial de Inertia.
Estructura de directorios
En los starter kits, los componentes de página de React se colocan en el directorioresources/js/pages/.
Inertia::render('posts/index', [...]), el componente correspondiente es resources/js/pages/posts/index.tsx.
Fundamentos de la sintaxis JSX
React usa JSX. Es un estilo en el que se escribe sintaxis parecida a HTML dentro de JavaScript. Presentamos los patrones mínimos que conviene conocer para leer el código de los starter kits.{} — Interpolación de variables
Dentro de JSX se usa {} para incrustar valores o expresiones de JavaScript.
Condicionales — && y operador ternario
React no tiene una directiva equivalente a v-if. Para condicionales simples usa el operador &&, y para if/else, el operador ternario ? :.
Renderizado de listas — .map()
Para renderizar listas se usa Array.map(). Para permitir un diff eficiente, hay que indicar siempre la prop key.
v-for :key de Vue o {#each} de Svelte.
className — Nombre de clase CSS
Como JSX se compila a JavaScript, class es palabra reservada. Para las clases CSS se usa className.
Manejadores de eventos — camelCase
Los atributos de evento en JSX se escriben en camelCase, y se les pasa la referencia a una función.Fundamentos del componente de página
Los componentes de página de Inertia son componentes React normales. Los datos pasados desde el controlador de Laravel se reciben como props.Controlador
Componente de página React
Componente Link
Al usar el componente <Link> que ofrece @inertiajs/react, la navegación entre páginas se hace por XHR y se evita la recarga completa del navegador.
<a> normal, pero por debajo Inertia solo cambia el componente de página, con lo que se logra una sensación de operación como en una SPA.
Componente Form
El componente <Form> que ofrece @inertiajs/react es el estilo recomendado de envío de formularios que se usa en las pantallas de autenticación del starter kit. Se indican action y method como props, y en la función children (render prop) se reciben errors y processing.
Uso básico
<Form> es una función del tipo ({ errors, processing }) => JSX (patrón render prop). El componente Form calcula automáticamente esos valores y te los pasa. En los campos del formulario, en lugar de un handler onChange, se usa el atributo nativo name de HTML, y funciona la recolección estándar de datos de formulario del navegador.
Patrón del starter kit
El starter kit gestiona las rutas como objetos usando Wayfinder.store.form() devuelve un objeto que incluye action y method del objeto de ruta, y se aplica al <Form> con spread.
resetOnSuccess se resetean automáticamente al enviar con éxito. Se indican en campos que se quieren dejar vacíos tras el envío, como la contraseña.
Si no usas Wayfinder, pasando directamente la URL con
action="/login" funciona igual.Hook useForm
Para el procesamiento de formularios se usa el hook useForm de @inertiajs/react. La gestión del estado del formulario, el envío y la visualización de errores de validación se implementan de forma sencilla.
Lado del controlador
Componente de formulario React
useForm.
Cuando se devuelve un error de validación,
useForm mantiene el contenido introducido y muestra el error.
Datos compartidos (Shared Data)
Los datos comunes a todas las páginas (información del usuario autenticado, mensajes flash, etc.) se definen en el métodoshare() del middleware HandleInertiaRequests.
usePage().
Como los datos compartidos se incluyen en todas las peticiones, se recomienda limitarlos al mínimo necesario. Si los pasas mediante una evaluación diferida con
fn(), solo se evalúan cuando realmente se acceden.Fundamentos de los hooks de React
Presentamos los hooks básicos de React que conviene conocer para desarrollar con Inertia × React.useState — Gestión de estado local
useEffect — Procesamiento de efectos secundarios
useMemo y useCallback — Optimización de rendimiento
Soporte de TypeScript
La versión React de los starter kits usa TypeScript por defecto. Combinado con las definiciones de tipo de Inertia, se garantiza la seguridad de tipos de las props.Definiciones de tipo globales
En los starter kits, los tipos de los datos compartidos se definen enresources/js/types/index.d.ts.
Uso de tipos en el componente de página
Conclusión
React saca su potencial al combinarse con Laravel, especialmente en la configuración de “monolito moderno” a través de Inertia. Su compatibilidad con TypeScript también es excelente, y encaja bien con el desarrollo de aplicaciones a gran escala.
Con Inertia × React obtienes una experiencia de desarrollo que combina la sencillez del backend Laravel con el potente ecosistema de React. Si creas el proyecto con el starter kit, puedes empezar a desarrollar de inmediato con las pantallas de autenticación incluidas.
Documentación oficial de Inertia.js
Para todas las funcionalidades de Inertia v3, consulta la documentación oficial.