Laravel 13 todavía no ha sido lanzado oficialmente. Esto lo escribo a principios de marzo de 2026, con lanzamiento esperado alrededor del 17 de marzo. Todo lo que leerás aquí está mergeado en la rama de desarrollo y rastreado por Benjamin Crozat y Laravel News. Nada especulativo.
Fecha de lanzamiento esperada
Siguiendo la tradición de releases anuales de Laravel durante el primer trimestre, Laravel 13 se espera para Q1 2026. La fecha que maneja la comunidad es alrededor del 17 de marzo de 2026.
La versión estable actual sigue siendo Laravel 12 (lanzada el 24 de febrero de 2025, actualmente en la versión 12.11.2).
El cambio principal: PHP 8.3 como mínimo
Este es el único breaking change real que afectará a la mayoría. Laravel 13 requerirá PHP 8.3 como mínimo, abandonando el soporte para PHP 8.2.
# Versiones PHP que soportará Laravel 13
PHP 8.3
PHP 8.4
PHP 8.5
Si tu servidor o entorno todavía corre PHP 8.2, tendrás que quedarte en Laravel 12 por ahora o actualizar primero el runtime. PHP 8.3 lleva bastante tiempo disponible así que no debería ser un problema en la mayoría de los casos.
PHP Attributes en modelos, jobs y más
Esta es la novedad que más me llama la atención y está confirmada. Laravel 13 introducirá soporte para PHP Attributes como alternativa a las propiedades de clase para configurar componentes del framework.
Attributes en modelos Eloquent
Antes definías cosas como el nombre de la tabla, los fillable o los campos ocultos como propiedades:
class Post extends Model
{
protected $table = 'posts';
protected $fillable = ['title', 'body', 'published_at'];
protected $hidden = ['internal_notes'];
}
Con Laravel 13 podrás usar Attributes directamente sobre la clase:
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
{
//
}
Lo importante aqui es que no es un cambio breaking. Ambas formas van a funcionar. Puedes seguir usando las propiedades como siempre o migrar gradualmente a Attributes. Nadie te obliga a nada.
Attributes en Queue Jobs
Lo mismo aplicará para los jobs de colas. En lugar de definir propiedades:
class ProcessOrder implements ShouldQueue
{
public $connection = 'redis';
public $queue = 'orders';
public $tries = 3;
}
Podrás usar:
use Illuminate\Queue\Attributes\Connection;
use Illuminate\Queue\Attributes\Queue;
use Illuminate\Queue\Attributes\Tries;
#[Connection('redis')]
#[Queue('orders')]
#[Tries(3)]
class ProcessOrder implements ShouldQueue
{
//
}
Los Attributes también estarán disponibles en console commands, form requests, API resources, factories y test seeders. Una forma más declarativa de configurar componentes. Me gusta.
Cache::touch() para extender TTL sin re-almacenar
Pequeña pero útil. Cache::touch() resuelve un problema concreto: extender el tiempo de expiración de un item en caché sin necesidad de obtenerlo ni re-almacenarlo.
// 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 algo así:
$data = Cache::get('session_data');
Cache::put('session_data', $data, now()->addMinutes(60));
Con Cache::touch() eliminas el round-trip innecesario. Funcionará en todos los drivers: Redis, Memcached, Database y File. El método retorna true si la clave existe o false si no la encuentra.
Otros cambios confirmados
Hay un par de cambios más pequeños pero también confirmados:
Subdomain routes primero: Las rutas de subdominio se registrarán antes que las rutas sin dominio, mejorando la consistencia en la resolución de rutas.
Nombres de vistas de paginación: Se estandarizan los nombres de las vistas de paginación en todo el framework. Nada que impacte al usuario final directamente, pero es trabajo de limpieza que suma.
Soporte para Symfony 7.4 y 8.0: Bajo el capó, Laravel 13 actualizará sus dependencias de Symfony. Trabajo de mantenimiento que el usuario final no nota, pero garantiza que el framework esté construido sobre cimientos con soporte oficial activo.
Restricción en Model::boot()
Hay un segundo cambio que puede afectar código existente: ya no se podrán crear nuevas instancias de un modelo dentro de su propio método boot().
Si tienes algo como esto:
class User extends Model
{
protected static function boot()
{
parent::boot();
static::creating(function ($user) {
$config = AppConfig::first();
$user->role = $config->default_role;
});
}
}
Dependiendo de cómo esté estructurado, puede que necesites refactorizar esa lógica. No es un caso común, pero si lo tienes, toma nota antes de migrar.
En resumen
Laravel 13 se perfila como una versión enfocada en modernizar la base del framework y agregar herramientas útiles sin romper lo que ya existe. No es una release de grandes titulares pero si de mejoras concretas.
Lo que está confirmado hasta ahora:
| Caracteristica | Estado |
|---|---|
| PHP 8.3 minimo | Confirmado (breaking change) |
| PHP Attributes en modelos y jobs | Confirmado |
| Cache::touch() | Confirmado |
| Restriccion en Model::boot() | Confirmado (breaking change menor) |
| Symfony 7.4 / 8.0 | Confirmado |
| Mejoras en routing y paginación | Confirmado |
Actualizaré este artículo el día del lanzamiento oficial. Si ya usás Laravel 12 y tenés PHP 8.3, la migración debería ser tranquila.
Preguntas frecuentes
¿Cuándo sale Laravel 13 exactamente?
No hay una fecha oficial confirmada pero la comunidad estima que será alrededor del 17 de marzo de 2026, siguiendo la tradición de Q1 releases del framework. La versión estable actual es Laravel 12.
¿Qué versión de PHP necesito para Laravel 13?
PHP 8.3 como mínimo. También soportará PHP 8.4 y 8.5. Si estás en PHP 8.2 tendrás 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 migración desde Laravel 12 es complicada?
En principio no. El principal requisito es PHP 8.3. El resto de cambios son aditivos o no breaking. El único otro cambio que podría afectar código existente es la restricción en Model::boot() si usabas ese patrón.
¿Cache::touch() funciona con todos los drivers de caché?
Sí. Cache::touch() será compatible con Redis, Memcached, Database y File.
¿Puedo probar Laravel 13 antes del lanzamiento oficial?
Sí. Puedes correr cualquiera de estos comandos para probar la rama de desarrollo:
laravel new mi-proyecto --dev
o directamente con Composer:
composer require laravel/framework:13.x-dev
No para producción, claro.
