Laravel shipped 13.30.0 and 13.30.1 back to back on 1 September 2026. On the menu: vector index management from migrations, a new Eloquent method for idempotent inserts, and a set of targeted fixes across queues, cache and the SQL Server driver. No breaking changes are reported, so upgrading takes no rewrite.
Vector indexes you can drive from a migration
The headline change is dropVectorIndex() landing on the schema builder. Creating vector indexes already existed in the 13 branch; what was missing was dropping them cleanly from a migration, which is exactly what a reversible down() method needs. Storing vectors in the database directly powers semantic search, now common in applications that expose tools to agents.
Schema::table('documents', function (Blueprint $table) {
// Create the vector index (already available before 13.30)
$table->vectorIndex('embedding');
});
// Reverse migration, now symmetrical
Schema::table('documents', function (Blueprint $table) {
$table->dropVectorIndex('embedding');
});Eloquent: insert without duplicating, and get the rows back
The insertOrIgnoreReturning() method rounds out the pair of insertOrIgnore() and insertGetId(). It inserts a batch while ignoring unique-constraint violations, then returns the records actually created, on drivers that support the RETURNING clause.
$inserted = Document::insertOrIgnoreReturning([
['reference' => 'DOC-1024', 'status' => 'indexed'],
['reference' => 'DOC-1024', 'status' => 'indexed'], // duplicate ignored
]);
// $inserted only holds the rows that were actually writtenQueues and fixes worth knowing
The WorkerStopping event now carries the connection and queue names involved, which makes diagnosing worker shutdowns in production easier. The improvement extends the queue work started in Laravel 13.26. Two fixes deserve attention: on SQL Server the limit() clause was ignored during an update(), and the tagged Redis cache left orphaned entries after invalidation. Both are the kind of bug that stays invisible until it surfaces as flaky production behaviour, which is reason enough to track the patch.
| Component | Change | Kind |
|---|---|---|
| Schema | dropVectorIndex() | Addition |
| Eloquent | insertOrIgnoreReturning() | Addition |
| Queues | Connection and queue on WorkerStopping | Improvement |
| SQL Server | limit() honoured on update() | Fix |
| Redis cache | Orphaned tagged entries removed | Fix |
Dropping vector indexes was the missing piece: without it, no semantic-search migration was truly reversible.
Vector index support depends on the database driver and its engine. Check that the feature is available server-side, for instance PostgreSQL with pgvector, before shipping a migration to production.
The takeaway
Laravel 13.30 changes nothing dramatic but consolidates two long-running threads: native vector search and Eloquent ergonomics for bulk inserts. The upgrade carries no breaking risk and mainly pays off for projects that handle embeddings or sensitive queues. Teams already on the 13 branch can adopt it during routine maintenance, since Composer resolves it as a standard patch-level bump with no configuration change.
On my own projects, dropVectorIndex() solves a real friction point: until now I handled vector index removal in raw SQL inside my migrations, with the risk of forgetting the test version. Seeing symmetry return to the schema builder is the kind of detail that saves time over the long run. — Simon Janvier
Further reading
Official release notes: Laravel 13.30.0 on GitHub and the repository CHANGELOG.
