---
title: "Descubre las novedades de Laravel 13"
excerpt: "Laravel 13 fue lanzado el 17 de marzo de 2026 con PHP 8.3 mínimo, el Laravel AI SDK de primera parte, soporte JSON:API, búsqueda vectorial, passkeys y mucho más. Guía completa de novedades y breaking changes."
date: "2026-03-04T10:00:00.000Z"
lastModified: "2026-03-23T00:00:00.000Z"
category: "Laravel"
seo_title: "Laravel 13: todas las novedades y cambios del lanzamiento oficial"
seo_description: "Laravel 13 lanzado el 17 de marzo de 2026. PHP 8.3 mínimo, Laravel AI SDK, soporte JSON:API nativo, búsqueda vectorial con pgvector, passkeys, Server-Sent Events y más. Guía completa."
author:
  name: "angel cruz"
  picture: "https://angelcruzdevcdn.nyc3.cdn.digitaloceanspaces.com/images/me/angel-cruz.png"
ogImage:
  url: "/images/open-graph/laravel-opengraph-image.png"
---

**Laravel 13 fue lanzado oficialmente el 17 de marzo de 2026.** Actualicé este artículo con todas las novedades confirmadas tras el lanzamiento. Si lo leíste antes, vas a encontrar bastante información nueva: el AI SDK de primera parte, soporte JSON:API, búsqueda vectorial y passkeys son los titulares que no estaban antes.

## Fecha de lanzamiento

**Laravel 13 salió el 17 de marzo de 2026**, cumpliendo la tradición de releases anuales en el primer trimestre. El soporte oficial es el siguiente:

| Versión | PHP | Lanzamiento | Bug fixes hasta | Seguridad hasta |
|---------|-----|-------------|-----------------|-----------------|
| 11 | 8.2–8.4 | Mar 2024 | Sep 2025 | Mar 2026 |
| 12 | 8.2–8.5 | Feb 2025 | Ago 2026 | Feb 2027 |
| **13** | **8.3–8.5** | **17 Mar 2026** | **Q3 2027** | **17 Mar 2028** |

## PHP 8.3 como mínimo

Este sigue siendo el único **breaking change real** que afectará a la mayoría. **Laravel 13 requiere PHP 8.3 como mínimo**, abandonando el soporte para PHP 8.2.

```bash
# Versiones PHP que soporta Laravel 13
PHP 8.3
PHP 8.4
PHP 8.5
```

Soltar PHP 8.2 no es solo una decision administrativa: permite usar readonly classes, typed class constants y `#[\Override]` de forma nativa, sin polyfills. El paquete `symfony/polyfill-php83` fue eliminado de las dependencias. Las primeras mediciones muestran mejoras de 5–10% en velocidad solo por ese motivo.

Si tu servidor todavía corre PHP 8.2, tendrás que quedarte en Laravel 12 o actualizar el runtime primero.

## Laravel AI SDK — primera parte, estable en producción

Esta es la novedad más grande de Laravel 13 y no estaba en los primeros reportes pre-lanzamiento. **Laravel incluye ahora un SDK de inteligencia artificial de primera parte** (`laravel/ai`) que llega estable con esta versión.

El SDK ofrece una interfaz unificada, agnóstica del proveedor, para:

- Generación de texto y agentes con tool-calling
- Generación de imágenes
- Síntesis de audio
- Generación de embeddings
- Integración con vector stores

La filosofía es la misma de siempre en Laravel: abstraer la complejidad y que el código sea expresivo sin importar si usas OpenAI, Anthropic u otro proveedor por debajo.

## PHP Attributes — ahora en 15+ ubicaciones

El artículo original cubría los Attributes en modelos y jobs. Con el lanzamiento oficial, la cobertura es mucho más amplia: **más de 15 ubicaciones** en el framework.

### Attributes en modelos Eloquent

```php
use Illuminate\Database\Eloquent\Attributes\Table;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Hidden;

#[Table('posts')]
#[Fillable('title', 'body', 'published_at')]
#[Hidden('internal_notes')]
class Post extends Model
{
    //
}
```

### Attributes en Queue Jobs

```php
use Illuminate\Queue\Attributes\Connection;
use Illuminate\Queue\Attributes\Queue;
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Backoff;
use Illuminate\Queue\Attributes\Timeout;

#[Connection('redis')]
#[Queue('orders')]
#[Tries(3)]
#[Backoff(60)]
#[Timeout(120)]
class ProcessOrder implements ShouldQueue
{
    //
}
```

### Attributes en controladores

```php
use Illuminate\Routing\Attributes\Middleware;
use Illuminate\Auth\Attributes\Authorize;

#[Middleware('throttle:api')]
#[Authorize('view-dashboard')]
class DashboardController extends Controller
{
    //
}
```

Los Attributes también están disponibles en console commands, form requests, API resources, listeners, mailables, notifications, factories y test seeders. **No es un cambio breaking**: ambas formas (properties y Attributes) funcionan. Puedes migrar gradualmente o no migrar nunca.

## Soporte JSON:API de primera parte

Laravel 13 introduce clases de recursos JSON:API nativas que manejan:

- Serialización de objetos de respuesta
- Inclusión de relaciones
- Sparse fieldsets
- Links
- Headers `Content-Type: application/vnd.api+json` correctos

Esto elimina la necesidad de paquetes de terceros como `laravel-json-api` o `frappe/laravel-json-api` para proyectos que consumen este estándar.

## Queue routing centralizado por clase

En lugar de definir la conexión y la cola dentro de cada job, ahora puedes centralizar todo eso en un service provider:

```php
use App\Jobs\ProcessPodcast;
use Illuminate\Support\Facades\Queue;

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
```

Menos repetición, configuración en un solo lugar. Una mejora pequeña pero muy práctica en proyectos con muchos jobs.

## Búsqueda vectorial / semántica con pgvector

Laravel 13 agrega soporte nativo para búsqueda vectorial usando PostgreSQL y la extensión `pgvector`:

```php
DB::table('documents')
    ->whereVectorSimilarTo('embedding', 'Las mejores bodegas de la Rioja')
    ->limit(10)
    ->get();
```

El ORM se encarga de construir la query. Muy relevante si estás construyendo aplicaciones con RAG (Retrieval-Augmented Generation) o cualquier búsqueda semántica.

## Cache::touch() para extender TTL sin re-almacenar

Pequeña pero útil. `Cache::touch()` extiende el tiempo de expiración de un item en caché **sin necesidad de obtenerlo ni re-almacenarlo**:

```php
// Extiende el TTL 60 minutos más sin leer ni escribir el valor
Cache::touch('session_data', now()->addMinutes(60));
```

Antes tenías que hacer esto:

```php
$data = Cache::get('session_data');
Cache::put('session_data', $data, now()->addMinutes(60));
```

Con `Cache::touch()` eliminas el round-trip innecesario. Funciona en todos los drivers: Redis, Memcached, Database y File. Retorna `true` si la clave existe o `false` si no la encuentra.

## Passkey authentication

Soporte para passkeys integrado directamente en los starter kits y en Laravel Fortify. Ya no necesitas un paquete separado para implementar autenticación sin contraseña basada en WebAuthn/FIDO2.

## Server-Sent Events con Response::eventStream()

```php
return response()->eventStream(function () {
    foreach ($events as $event) {
        yield $event;
    }
});
```

Un método nativo en `ResponseFactory` para streaming de eventos desde el servidor al cliente. Útil para notificaciones en tiempo real sin la complejidad de WebSockets cuando la comunicación es unidireccional.

## Breaking changes

Laravel 13 tiene pocos breaking changes reales pero hay varios que conviene revisar antes de migrar.

### Alto impacto

**PHP 8.2 eliminado.** El único breaking change que afectará a la mayoría.

**Dependencias en `composer.json`** que debes actualizar:

```bash
laravel/framework → ^13.0
laravel/tinker → ^3.0
phpunit/phpunit → ^12.0
pestphp/pest → ^4.0
```

**CSRF middleware renombrado.** `VerifyCsrfToken` ahora se llama `PreventRequestForgery`. También agrega verificación de origen via el header `Sec-Fetch-Site`. Los aliases antiguos están deprecados, no eliminados, así que no romperá inmediatamente, pero conviene actualizar.

**Deserialización de objetos en caché restringida por defecto.** Si almacenas objetos PHP en caché, ahora necesitas allowlistear explícitamente las clases permitidas en la configuración. Una medida de seguridad correcta.

### Impacto medio

**Prefijos de caché y Redis cambiaron de formato**: de guión bajo (`app_cache_`) a guión (`app-cache-`). Si usas prefijos, define `CACHE_PREFIX`, `REDIS_PREFIX` y `SESSION_COOKIE` explícitamente en `.env` para evitar que las claves existentes queden huérfanas.

**Nombre de la cookie de sesión**: ahora usa `Str::snake()` en lugar de `Str::slug()`. Revisa si tienes algo que dependa del nombre exacto de esa cookie.

### Bajo impacto

**`Model::boot()` no puede instanciar el mismo modelo.** Ya no se pueden crear nuevas instancias del modelo dentro de su propio `boot()`. Si tienes ese patrón, lanzará `LogicException`. Hay que refactorizar esa lógica.

**Rutas con dominio se registran primero** que las rutas sin dominio, mejorando la consistencia en la resolución.

**Nombres de vistas de paginación cambiaron**: `pagination::default` → `pagination::bootstrap-3`, `pagination::simple-default` → `pagination::simple-bootstrap-3`.

**Eventos de cola cambiaron**: `JobAttempted::$exceptionOccurred` (bool) ahora es `$exception` (object|null). `QueueBusy::$connection` ahora es `$connectionName`.

**`Container::call()`** ahora respeta los defaults de parámetros nullable (retorna `null` en vez de intentar resolver un binding).

**MySQL DELETE con JOIN** ahora incluye cláusulas `ORDER BY` y `LIMIT`. Puede surfacear un `QueryException` en MySQL/MariaDB si tenías queries que dependían del comportamiento anterior.

**Tablas pivot polimórficas**: los nombres de tabla ahora se pluralizan para modelos pivot personalizados. Agrega la propiedad `$table` explícita para evitar problemas.

### Métodos eliminados

Estos métodos estaban deprecados desde L11/L12 y ahora fueron removidos:

- `Route::controller()` — usar `Route::resource()` o definiciones explícitas
- `$request->has()` con sintaxis de array — usar `$request->hasAny()`
- `Model::unguard()` — usar `Model::preventSilentlyDiscardingAttributes()`
- El patrón `app/Http/Kernel.php` — fue deprecado en L11 y ahora está completamente eliminado

## Resumen de novedades

| Caracteristica | Estado |
|----------------|--------|
| PHP 8.3 minimo | Confirmado (breaking change) |
| Laravel AI SDK (`laravel/ai`) | Nuevo — primera parte |
| PHP Attributes en 15+ ubicaciones | Confirmado |
| Soporte JSON:API nativo | Nuevo |
| Queue routing centralizado por clase | Nuevo |
| Busqueda vectorial con pgvector | Nuevo |
| Cache::touch() | Confirmado |
| Passkey authentication | Nuevo |
| Server-Sent Events nativo | Nuevo |
| Restriccion en Model::boot() | Breaking change menor |
| Symfony 7.4 / 8.0 | Confirmado |
| CSRF middleware renombrado | Breaking change menor |

## Migracion desde Laravel 12

La estimacion oficial es aproximadamente **10 minutos** para la mayoria de aplicaciones. Si tienes **Laravel Boost** instalado, puedes usar el comando `/upgrade-laravel-v13` directamente desde tu editor (funciona con Claude Code, Cursor y VS Code). Tambien esta disponible el upgrade automatizado via [LaravelShift](https://laravelshift.com).

Los pasos manuales basicos son:

1. Verificar que tienes PHP 8.3+
2. Actualizar `composer.json` con las versiones nuevas
3. Revisar el upgrade guide oficial si tienes codigo que usa los patrones afectados
4. Correr `composer update`

---

## Preguntas frecuentes

### ¿Cuando salio Laravel 13?

El **17 de marzo de 2026**, siguiendo la tradicion de Q1 releases del framework.

### ¿Que version de PHP necesito para Laravel 13?

**PHP 8.3 como minimo.** Tambien soporta PHP 8.4 y 8.5. Si estas en PHP 8.2 tendras que quedarte en Laravel 12 o actualizar el runtime primero.

### ¿Los PHP Attributes reemplazan las propiedades de clase en los modelos?

No, son una **alternativa opcional**. Puedes seguir usando `$fillable`, `$hidden`, `$table` exactamente como antes. Los Attributes son otra forma de hacer lo mismo, no un reemplazo obligatorio.

### ¿La migracion desde Laravel 12 es complicada?

En principio no. El principal requisito es PHP 8.3. El resto de cambios son aditivos o cambios menores. Los puntos que pueden requerir atencion son el prefijo de cache, el CSRF middleware renombrado y la restriccion en `Model::boot()`.

### ¿Cache::touch() funciona con todos los drivers de cache?

Si. `Cache::touch()` es compatible con Redis, Memcached, Database y File.

### ¿El Laravel AI SDK requiere un proveedor especifico?

No. Es agnóstico del proveedor. Puedes usarlo con OpenAI, Anthropic u otros sin cambiar el código de tu aplicación.

---

## Referencias

- [Release Notes | Laravel 13.x — Documentacion oficial](https://laravel.com/docs/13.x/releases)
- [Upgrade Guide | Laravel 13.x — Documentacion oficial](https://laravel.com/docs/13.x/upgrade)
- [Laravel 13 Released — Laravel News](https://laravel-news.com/laravel-13-released)
- [What We Know About Laravel 13 — Laravel News](https://laravel-news.com/laravel-13)
- [Laravel 13 released: features and upgrade guide — Benjamin Crozat](https://benjamincrozat.com/laravel-13)
- [Laravel Versions Timeline — laravelversions.com](https://laravelversions.com/en)
- [PHP Attributes — PHP Manual](https://www.php.net/manual/es/language.attributes.overview.php)

---

## Sitemap

Índice completo del sitio: [/sitemap.md](https://angelcruz.dev/sitemap.md)

Canónico HTML: [https://angelcruz.dev/post/laravel-13-novedades](https://angelcruz.dev/post/laravel-13-novedades)
