Saltar al contenido principal

Introducción

Laravel 13 se lanzó el 17 de marzo de 2026. Aunque es la habitual release mayor anual, Laravel 13 pone el foco especialmente en flujos de trabajo nativos de IA, valores por defecto más seguros y APIs para desarrolladores más expresivas. Los cambios disruptivos se han reducido al mínimo, y la mayoría de aplicaciones podrán actualizarse con pocas modificaciones. Al mismo tiempo, se han añadido numerosas funciones nuevas que pueden transformar el desarrollo moderno de aplicaciones, como Laravel AI SDK y la búsqueda semántica.
Política de soporte de Laravel 13: se ofrecen correcciones de errores hasta el Q3 de 2027 y correcciones de seguridad hasta el 17 de marzo de 2028.

Actualización del requisito de PHP

Laravel 13 requiere PHP 8.3 o superior. El soporte para PHP 8.2 ha finalizado.
VersiónPHPFecha de lanzamientoFin de correcciones de erroresFin de correcciones de seguridad
118.2 - 8.412 de marzo de 20243 de septiembre de 202512 de marzo de 2026
128.2 - 8.524 de febrero de 202513 de agosto de 202624 de febrero de 2027
138.3 - 8.517 de marzo de 2026Q3 de 202717 de marzo de 2028
Como principales beneficios de PHP 8.3, se pueden usar constantes tipadas, la función json_validate() y el atributo #[\Override], entre otros.

Principales novedades

Laravel AI SDK

La estrella de Laravel 13 es el AI SDK de primera parte. Ofrece una API unificada para generación de texto, agentes de tool calling, embeddings, audio, generación de imágenes e integración con vector stores. Puedes construir funciones de IA de forma independiente del proveedor manteniendo una experiencia de desarrollador propia de Laravel. Generación de texto (agente)
use App\Ai\Agents\SalesCoach;

$response = SalesCoach::make()->prompt('Analiza esta transcripción de ventas...');

return (string) $response;
Generación de imágenes
use Laravel\Ai\Image;

$image = Image::of('un dónut sobre la encimera de la cocina')->generate();

$rawContent = (string) $image;
Síntesis de audio
use Laravel\Ai\Audio;

$audio = Audio::of('Me encanta programar en Laravel.')->generate();

$rawContent = (string) $audio;
Generación de embeddings
use Illuminate\Support\Str;

$embeddings = Str::of('Los vinos de Napa Valley son los mejores.')->toEmbeddings();
Para más detalles, consulta la documentación del Laravel AI SDK.

Búsqueda semántica y vectorial

Se ha añadido soporte nativo para consultas vectoriales integrado con el AI SDK. Puedes ejecutar búsqueda semántica con PostgreSQL + pgvector directamente desde el query builder.
$documents = DB::table('documents')
    ->whereVectorSimilarTo('embedding', 'Las mejores bodegas de Napa Valley')
    ->limit(10)
    ->get();
Desde añadir la columna de embeddings hasta la consulta, todo se completa dentro del ecosistema Laravel.

Recursos JSON:API

Se ha añadido soporte de primera parte para recursos JSON:API en Laravel. Ahora es fácil devolver respuestas conformes a la especificación JSON:API.
  • Serialización de objetos recurso
  • Inclusión de relaciones
  • Sparse fieldsets
  • Links
  • Cabeceras de respuesta conformes con JSON:API

Ampliación de los atributos PHP

Laravel 13 extiende a todo el framework la configuración declarativa mediante atributos PHP. Aplicación a controladores
<?php

namespace App\Http\Controllers;

use App\Models\Comment;
use App\Models\Post;
use Illuminate\Routing\Attributes\Controllers\Authorize;
use Illuminate\Routing\Attributes\Controllers\Middleware;

#[Middleware('auth')]
class CommentController
{
    #[Middleware('subscribed')]
    #[Authorize('create', [Comment::class, 'post'])]
    public function store(Post $post)
    {
        // ...
    }
}
Aplicación a jobs de cola
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Backoff;
use Illuminate\Queue\Attributes\Timeout;
use Illuminate\Queue\Attributes\FailOnTimeout;

#[Tries(3)]
#[Backoff(60)]
#[Timeout(120)]
#[FailOnTimeout]
class ProcessPodcast implements ShouldQueue
{
    // ...
}
Principales atributos añadidos:
AtributoUso
#[Middleware]Aplicación de middleware a controladores/métodos
#[Authorize]Comprobación de policy en controladores
#[Tries]Número máximo de intentos del job de cola
#[Backoff]Tiempo de backoff del job de cola
#[Timeout]Tiempo de timeout del job de cola
#[FailOnTimeout]Flag de fallo del job en timeout
También se han introducido atributos adicionales en Eloquent, eventos, notificaciones, validación, tests y en la API de serialización de recursos.

Enrutamiento de cola

Con Queue::route(...) puedes definir en un único lugar las reglas de enrutamiento por defecto de cola y conexión para jobs concretos.
use App\Jobs\ProcessPodcast;
use Illuminate\Support\Facades\Queue;

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
Ya no tienes que codificar el nombre de la cola en la clase del job y puedes separar la configuración de infraestructura del código.

Extensión del TTL de la caché

Con Cache::touch(...) puedes extender el TTL de un elemento de caché sin obtener ni volver a guardar el valor.
// Extiende el TTL en 3600 segundos sin cambiar el valor actual
Cache::touch('expensive-computation', 3600);

Refuerzo de seguridad

Refuerzo de la protección CSRF (PreventRequestForgery)

El middleware CSRF se ha renombrado de VerifyCsrfToken a PreventRequestForgery, y se ha añadido verificación del origen de la petición usando la cabecera Sec-Fetch-Site.
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;

// Excluir el middleware en tests
->withoutMiddleware([PreventRequestForgery::class]);
VerifyCsrfToken permanece como alias obsoleto, pero se recomienda migrar al nuevo nombre de clase.

Restricción de deserialización de la caché

Se ha añadido la opción serializable_classes en config/cache.php, con valor por defecto false. Esto previene ataques de deserialización de PHP en caso de que se filtre APP_KEY.
// config/cache.php
'serializable_classes' => [
    App\Data\CachedDashboardStats::class,
    App\Support\CachedPricingSnapshot::class,
],
Si guardas objetos PHP en la caché, deberás añadirlos explícitamente a la lista de permitidos.

Cambios en los starter kits

Los starter kits renovados en Laravel 12 (basados en React/Vue/Livewire) siguen estando disponibles en Laravel 13. Coincidiendo con el lanzamiento de Laravel 13 también se lanzó Inertia v3. Principales cambios:
  • Props de layout más simples
  • Soporte de Vite 8
  • Añadido del callback withApp
  • Nuevos componentes Blade
Si usas Inertia v3, considera también su actualización.

Otras mejoras

Actualización asistida por IA (Laravel Boost)

Laravel Boost es un servidor MCP de primera parte. Puedes semi-automatizar la actualización con el slash command /upgrade-laravel-v13, integrándolo con editores de IA como Claude Code, Cursor, OpenCode, Gemini o VS Code.
composer require laravel/boost:^2.0 --dev

Añadido a los contratos

Se han añadido nuevos métodos a los siguientes contratos:
ContratoMétodo añadido
Bus\DispatcherdispatchAfterResponse
Routing\ResponseFactoryeventStream (soporte SSE)
Auth\MustVerifyEmailmarkEmailAsUnverified
Queue\QueuependingSize, delayedSize, reservedSize, creationTimeOfOldestPendingJob
Cache\Store / Cache\Repositorytouch

Conclusión

Laravel 13 es una release de “pocos cambios disruptivos y muchas novedades”. La actualización requiere un esfuerzo mínimo, y a la vez, especialmente el AI SDK y la búsqueda semántica tienen potencial para cambiar la forma en que se desarrollan las aplicaciones modernas. Cuando estés listo para actualizar una aplicación existente de Laravel 12 a 13, consulta el procedimiento detallado en la guía siguiente.

Guía de actualización de Laravel 12 a 13

Se explican la lista de cambios disruptivos y los pasos de actualización paso a paso.
Última modificación el 13 de julio de 2026