Laravel 13.36.0 se publicó el 14 de octubre de 2026. Esta versión añade a Illuminate\Validation\Rule un builder para cada regla de validación que antes solo podía expresarse como cadena. Entre ellas están required_with, accepted_if, url, uuid y distinct. La nueva API permite usar autocompletado en el IDE.

validation-rules.php
use Illuminate\Validation\Rule;

$request->validate([
    'phone' => [Rule::requiredWithout('email')],
    'website' => ['nullable', Rule::url()->protocols(['https'])],
    'device_id' => [Rule::uuid()->version(4)],
    'tags.*' => [Rule::distinct()->ignoreCase()],
    'password' => ['required', Rule::confirmed()],
]);

Las reglas sin parámetros, como Rule::required() y Rule::nullable(), devuelven cadenas de regla simples. Los builders que reciben nombres de campos o valores pasan esos argumentos como un array. Las comas dentro de un valor dejan de interpretarse como separadores. Rule::date() también incorpora equals(). El cambio fue aportado por @ericmp33 en el pull request #61833.

Jack Bayliss añadió olap() e isVitess() a la conexión MySQL. PlanetScale funciona sobre Vitess, cuya carga OLTP predeterminada limita cada consulta a 100.000 filas. DB::olap() cambia las conexiones de lectura y escritura a la carga OLAP durante un callback y después restaura el estado anterior. En una base de datos que no usa Vitess, solo ejecuta el callback. El mismo código puede utilizarse con un servidor MySQL local.

Los workers de queue pueden establecer Worker::$flushStickyConnections = true para restablecer las conexiones sticky antes de cada trabajo. Con este comportamiento, una escritura dirige las lecturas posteriores a la conexión de escritura. La opción viene desactivada porque un trabajo posterior puede depender de datos escritos por uno anterior.

Kévin Dunglas modificó los broadcasts de Mercure. Los eventos destinados únicamente a Mercure se publican ahora de forma síncrona por defecto. Los eventos que también apuntan a otra conexión siguen en la cola. MERCURE_ASYNC=true vuelve a activar el modo asíncrono. En ese modo, los workers necesitan MERCURE_URL. La versión también evita fallos de Artisan cuando BROADCAST_CONNECTION=mercure no tiene URL o cuando FrankenPHP no dispone de mercure_publish().

Los mailables en cola respetan ahora #[DeleteWhenMissingModels] y #[FailOnTimeout], junto con sus propiedades equivalentes. Si el modelo Order se elimina antes del envío, el trabajo se elimina y no termina con una ModelNotFoundException. Un mailable que supera el tiempo límite se marca como fallido. Así no puede producir un segundo envío durante un reintento automático. Volodya Kurshudyan aportó esta corrección.

Stephen Rees-Carter corrigió el escape en los correos Markdown. Una barra inversa en una entrada del usuario podía escapar el corchete de cierre de un enlace y cambiar su destino. Las barras inversas ahora se escapan junto con los corchetes.

El resto del changelog incluye códigos de salida para timeouts de workers, una conexión de fondo en la configuración predeterminada de queue y datos de conexión en queue:work --json. También corrige una fuga de memoria relacionada con Prompts en las suites de pruebas. Se añaden proveedores de credenciales S3 con nombre, discos Cloud IAM, EncodedParameter y compatibilidad con phpstan/phpstan:2.3.1. phpredis reconstruye correctamente el cliente cuando ningún nodo del clúster está disponible y libera antes los sockets persistentes.

Otros cambios corrigen errores SSL EOF de failover en PgBouncer, Notification::locale(), alias de morph map en constrain(), morphWith() y loadMorph(), claves numéricas en archivos de traducción JSON, Number::pairs(), retry_after en mailers y saltos de línea en mensajes de eventStream(). También se actualizan Schema::getColumn(), Arr::first(), Context::pop(), la agrupación de notificaciones de queue, las actualizaciones de rutas JSON, los timeouts de procesos, los bloqueos de listeners únicos, los atributos UniqueFor de broadcasts, las reconexiones recursivas, la búsqueda de bindings contextuales y los casts de atributos de modelos. El release incluye además limpiezas en pruebas, caché, proxies, consola, StyleCI, GitHub Actions y vistas.