28 de febrero de 2023

Cómo actualizar tu proyecto Laravel a la última versión (Laravel 13 en 2026)

Foto de Marco Orta Marco Orta | 5 mins de lectura
Compartir
Terminal mostrando un composer update durante la actualización mayor de un proyecto Laravel

⚙️ Actualizado para Laravel 13 (marzo 2026). Si todavía estás en Laravel 9, 10 u 11, los pasos que verás abajo siguen siendo válidos: la mecánica del upgrade no ha cambiado, lo único que cambia son los requisitos de PHP y los paquetes a revisar.

Una de las preguntas más recurrentes de los desarrolladores Laravel es cómo actualizar el proyecto a la última versión sin romperlo. La buena noticia es que las últimas releases mayores —especialmente Laravel 13— han sido publicadas con la promesa explícita de “zero breaking changes” y un upgrade path de unos 10 minutos. La mala: si arrastras un proyecto desde Laravel 9 o anterior, conviene subir versión por versión, no saltar varias a la vez.

Versiones actuales y soporte (2026)

VersiónEstadoPHP mínimoSoporte de bugsSoporte de seguridad
Laravel 13Current (marzo 2026)8.3 (8.4 en práctica)Q3 2027Q1 2028
Laravel 12LTS / Bug fixes8.2Hasta 2027Hasta 2028
Laravel 11Solo security8.2CerradoHasta 2026
Laravel 10End of life8.1CerradoCerrado
Laravel 9 y anterioresEnd of life8.0CerradoCerrado

Si estás en Laravel 9 o 10, actualiza ya: ya no recibes parches de seguridad. Si estás en 11 o 12, el salto a 13 es trivial.

Requisitos previos para Laravel 13

  • PHP 8.3 mínimo. En la práctica, desde Laravel 13.3 las dependencias de Symfony 8 piden PHP 8.4, así que ese es el target recomendado.
  • Composer 2.7 o superior.
  • Una base de datos compatible (MySQL 8, MariaDB 11, PostgreSQL 16, SQLite, SQL Server).
php -v
composer --version

Paso 1: respaldo y rama de trabajo

Antes de tocar nada, crea una rama de Git dedicada y haz backup de la base de datos.

git checkout -b upgrade/laravel-13
mysqldump -u usuario -p mi_proyecto > backup.sql

Paso 2: actualiza Laravel a la última patch de tu versión actual

Antes de saltar a la siguiente major, ponte al día dentro de tu major actual.

composer update
php artisan test

Si los tests fallan aquí, arregla primero antes de continuar.

Paso 3: edita composer.json

Cambia las versiones del framework y de los paquetes principales. Ejemplo para subir a Laravel 13:

"require": {
    "php": "^8.3",
    "laravel/framework": "^13.0",
    "laravel/sanctum": "^4.0",
    "laravel/tinker": "^2.10"
},
"require-dev": {
    "phpunit/phpunit": "^11.0",
    "nunomaduro/collision": "^8.0",
    "spatie/laravel-ignition": "^2.7",
    "fakerphp/faker": "^1.23",
    "laravel/pint": "^1.13"
}

Si vas a Laravel 12 desde 11, ajusta a "laravel/framework": "^12.0" y revisa cada paquete equivalente.

Paso 4: actualiza dependencias

composer update --with-all-dependencies

Si Composer reporta conflictos, casi siempre son paquetes de terceros que aún no soportan la nueva major. Las opciones son:

  1. Esperar a que el paquete saque una versión compatible.
  2. Buscar un fork mantenido.
  3. Reemplazar el paquete por una alternativa moderna (muchos paquetes han sido absorbidos por el core de Laravel en versiones recientes).

Paso 5: revisa la guía oficial de upgrade

Esto es lo más importante. Cada major tiene su guía oficial detallada:

Léela completa antes de ejecutar y aplica los cambios marcados con Likelihood of impact: High. Para Laravel 13 son muy pocos: cambios menores en helpers, alguna firma de método y la actualización a Symfony 8.

Paso 6: limpieza de cachés y reconstrucción

php artisan optimize:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan event:clear
php artisan cache:clear
composer dump-autoload -o

Paso 7: regenera archivos del framework si es necesario

Algunas releases (Laravel 11 en su día) cambiaron el esqueleto del proyecto (bootstrap/app.php reemplazó a varios archivos de configuración). Si vienes de muy atrás, considera comparar tu estructura con un laravel new recién creado y migrar manualmente los archivos críticos.

Paso 8: ejecuta las pruebas y verifica manualmente

php artisan test
php artisan migrate:status

Y dale una vuelta manual al panel de administración, a las rutas API y a cualquier flujo crítico. Los problemas más típicos suelen estar en:

  • Middleware personalizado con firmas obsoletas.
  • Service providers que registran cosas antiguas.
  • Paquetes de terceros abandonados.
  • Notificaciones y mailables con métodos cambiados.

Paso 9: aprovecha lo nuevo de Laravel 13

Mientras actualizas, vale la pena revisar las funcionalidades que Laravel 13 trae listas para usar:

  • Laravel AI SDK integrado: una API unificada para LLMs, embeddings, agentes con tool calling y vector stores.
  • Passkey authentication y vector search de primera mano.
  • Atributos PHP nativos para controladores y jobs: #[Middleware], #[Authorize], #[Tries], #[Backoff], #[Timeout].

Errores frecuentes y cómo resolverlos

  • “Composer detected issues in your platform”: te falta subir PHP. Instala 8.4 con Laravel Herd en local.
  • “Class X not found”: revisa los namespaces movidos en la guía oficial.
  • storage/ con permisos rotos: corre php artisan storage:link y revisa permisos.
  • Sesiones que se invalidan: regenera php artisan key:generate solo si es seguro (rompe sesiones existentes en producción).

Conclusión

Actualizar Laravel ya no es la odisea que era hace unos años. Si mantienes tu proyecto al día (una major por año), cada upgrade es cuestión de un par de horas. Si llegas tarde y tienes que saltar varias versions, hazlo de una en una, ejecuta los tests entre cada paso y revisa siempre la guía oficial.

Si ya estás en Laravel 13 y quieres aprovechar el nuevo AI SDK, te recomiendo continuar con Cómo construir un agente de IA con Laravel y MCP y Cómo integrar la API de OpenAI en Laravel.

¿Tuviste algún error durante el upgrade? Déjalo en los comentarios y lo revisamos.

Compartir

Buscar

Etiquetas