> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Actualización de Laravel — Junio de 2026

> Actualización del ecosistema Laravel de junio de 2026. Bus::bulk(), soporte del pooler de transacciones de Postgres, cliente/servidor MCP, comando artisan dev, metadatos de rutas, y más.

En junio de 2026, Laravel Cloud pasó a soportar aplicaciones Symfony, y en Forge se añadieron caché Valkey gestionada y almacenamiento de objetos. En el framework llegaron actualizaciones sustanciosas como despacho de jobs en bloque, soporte de pooler de Postgres, y cliente/servidor MCP.

Fuente: [Laravel June Product Updates](https://laravel.com/blog/laravel-june-product-updates)

***

## Laravel Framework

### Bus::bulk() — despacho de jobs en bloque

Ahora es posible registrar un gran número de jobs con un único INSERT a la base de datos. Como el INSERT en bloque se realiza por conexión de cola, se elimina el coste de INSERT uno a uno.

```php theme={null}
use Illuminate\Support\Facades\Bus;

Bus::bulk([
    new ProcessOrder($order1),
    new ProcessOrder($order2),
    new ProcessOrder($order3),
    // Eficiente incluso con miles de elementos
]);
```

### Soporte del pooler de transacciones de Postgres

El framework soporta ahora, a nivel de framework, poolers de conexiones de Postgres en modo transacción como PgBouncer, AWS RDS Proxy o Neon.

```php theme={null}
// config/database.php
'pgsql' => [
    'driver' => 'pgsql',
    'pooled' => true,  // Declarar que la conexión va a través del pooler
    // ...
],
```

<Info>
  Cuando necesites conexión directa para operaciones de esquema o sentencias DDL, añade `::direct` al nombre de la conexión para saltarte el pooler.
  `DB::connection('pgsql::direct')->statement('CREATE INDEX ...')`
</Info>

El framework realiza automáticamente los emulated prepares, el boolean binding y todo lo que el pooler requiera.

### Soporte de cliente y herramientas de servidor MCP

Los agentes de IA de Laravel pueden ahora usar herramientas de servidores MCP remotos (por HTTP) y de clases de servidor MCP locales. La conversión de esquemas, el wrapping y las invocaciones se procesan todas automáticamente.

```php theme={null}
class MyAgent extends Agent
{
    public function tools(): array
    {
        return [
            // Usar herramientas de un servidor MCP remoto
            McpClient::tools('https://mcp.example.com'),
            // Usar herramientas de un servidor MCP local
            McpServer::tools(MyMcpServer::class),
        ];
    }
}
```

### Comando artisan dev

Se ha añadido `artisan dev`, que arranca todos los procesos de desarrollo con un único comando. Servidor, workers de cola, tail de logs y Vite operan simultáneamente con salidas codificadas por colores.

```bash theme={null}
php artisan dev
```

```php theme={null}
// Registrar comandos adicionales en un service provider
use Illuminate\Foundation\Console\DevCommands;

DevCommands::artisan('reverb:start', 'reverb')->orange();
DevCommands::register('stripe listen --forward-to ' . config('app.url'))->green();
```

<Tip>
  Detecta automáticamente los gestores de paquetes de Node.js (npm, yarn, pnpm, bun). Es la convención oficial de Artisan que sustituye al tradicional script `composer dev`.
</Tip>

### Soporte de metadatos de rutas

Se ha añadido el método `->metadata()` para asignar metadatos arbitrarios a las rutas. Es totalmente compatible con la caché de rutas, y los metadatos definidos en un grupo se fusionan con las rutas hijas.

```php theme={null}
Route::metadata(['head' => ['robots' => ['noindex'], 'author' => 'Taylor']])
    ->group(function () {
        Route::get('/users', [UserController::class, 'index'])
            ->metadata(['head' => ['title' => 'Users']]);
    });

// Acceso desde controladores o middlewares
$request->route()->getMetadata('head.title');          // 'Users'
$request->route()->getMetadata('head.author', 'Taylor'); // 'Taylor'
```

### Excepciones que no reintentan

Ahora puedes evitar reintentos para excepciones cuya reintentación no tiene sentido (entrada inválida, fallos externos permanentes, etc.).

```php theme={null}
// Definido directamente en la clase de excepción
class InvalidInputException extends RuntimeException
{
    public function retry(): bool
    {
        return false;
    }
}

// También configurable en bootstrap/app.php
->withExceptions(function (Exceptions $exceptions) {
    $exceptions->dontRetry(InvalidInputException::class);
})
```

### Flag --without-migration-data para schema:dump

`schema:dump` puede ahora generar un volcado puro de estructura omitiendo las filas de la tabla de migraciones.

```bash theme={null}
php artisan schema:dump --without-migration-data
```

### Corrección de zona horaria en between()/unlessBetween()

Independientemente del orden en que llames a `timezone()` antes de `between()` o `unlessBetween()`, la programación funciona ahora con la zona horaria correcta.

```php theme={null}
// Ambos comportamientos son iguales (antes, si escribías between primero, se acababa usando UTC)
$schedule->command('foo')->timezone('Europe/Rome')->between('10:00', '12:00');
$schedule->command('foo')->between('10:00', '12:00')->timezone('Europe/Rome');
```

### Otros cambios del framework

* **Soporte de traits en `Bus::bulk()`**: puedes definir atributos de cola en traits
* **Índices vectoriales de MariaDB**: soporte de índices vectoriales en MariaDB
* **Helper `attachFromStorage()`**: añadir archivos adjuntos desde storage al `MailMessage` de notificaciones
* **`Cache::rememberWithState()`**: soporte de caché con estado
* **Driver de mantenimiento para tests en paralelo**: con el driver `array`, cada proceso puede tener su propio estado de mantenimiento independiente
* **`whenFilledEnum()`**: procesamiento condicional de campos usando Enum
* **Soporte de anyOf de JSON Schema**: se puede usar `anyOf` de JSON Schema en la validación

***

## Inertia

* **`Client\Request::uri()`**: obtener la URI de la petición cliente
* **Soporte del atributo `target` de anchor**: se puede usar `target="_blank"` y similares en el componente `<Link>`
* **Opción `async` de formulario**: soporte de envío asíncrono en el componente de formulario
* **Información de página en `titleCallback`**: se pasa la información de la página al callback de título

***

## Laravel Cloud y Laravel Forge

| Producto          | Actualizaciones principales                                                                                                                                                                                    |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Laravel Cloud** | Soporte completo de aplicaciones Symfony (Symfony 7.4 LTS y 8.x, compatible con PHP 8.2–8.5), despliegue y pagos desde Stripe Projects, configuración de notificaciones por Slack/email por miembro del equipo |
| **Laravel Forge** | Caché Valkey gestionada (creación y gestión desde el dashboard), almacenamiento de objetos gestionado, rediseño de emails de notificación                                                                      |


## Related topics

- [Actualización de Laravel — Mayo de 2026](/es/blog/changelog/202605.md)
- [Actualización de Laravel — Marzo de 2026](/es/blog/changelog/202603.md)
- [Actualización de Laravel — Abril de 2026](/es/blog/changelog/202604.md)
- [Guía de actualización de Laravel 12 a 13](/es/blog/upgrade-12-to-13.md)
- [Actualización de Laravel 8 a 9](/es/blog/upgrade-8-to-9.md)
