The Laravel team released v13.14.0 (on 06/04/2026) with a new deserializer for the JSON Schema library, fixes to how queue jobs inherit attributes, more visibility into pending jobs, and a round of HTTP client and mail fixes.
JsonSchema::fromArray()for rebuildingTypeobjects from arrays- Child queue properties now override inherited queue attributes
- A
queueproperty added toInspectedJob - Falsy JSON payloads cached correctly in HTTP client responses
- Mail embed and null header fixes
What's New
JSON Schema Array Deserialization
@pushpak1300 added JsonSchema::fromArray(), which converts a raw JSON Schema array back into a Type object. Until now the library only went one direction: you could build Type objects and serialize them to arrays. The new Deserializer mirrors the existing Serializer, so a schema received over the wire can be turned back into the objects the rest of the API expects.
$type = JsonSchema::fromArray([ 'type' => 'object', 'properties' => [ 'name' => ['type' => 'string', 'minLength' => 1], 'age' => ['type' => 'integer', 'minimum' => 0], ], 'required' => ['name'],]);// Returns an ObjectType
The two operations round-trip, so JsonSchema::fromArray() applied to a serialized type produces an equivalent type.
PR: #60384
Child Queue Properties Override Inherited Attributes
@mattiasgeniar fixed an inheritance edge case in the queue system. Previously, when a parent class declared a queue attribute such as #[Timeout(40)], a child class could not override it by redeclaring the matching property with a different value. The fix sets a clear precedence: same-class attributes still win over same-class default properties, runtime-modified properties stay prioritized, and child class properties now override queue attributes inherited from a parent.
PR: #60369
Queue Name on Inspected Jobs
@jackbayliss added a queue property to the InspectedJob class, so you can see which queue a job is assigned to when inspecting pending jobs. The property is tracked for both the database and Redis queue drivers.
PR: #60374
Falsy JSON Payloads Cached Correctly
@Button99 fixed a bug where valid falsy JSON payloads (false, 0, or null) were not cached on HTTP client responses. The fix uses a separate boolean flag to track whether decoding has happened, so a falsy decoded value is no longer mistaken for "not yet decoded" and re-decoded on each access.
PR: #60357
Mail and Header Fixes
This release also includes several fixes:
- @miladev95 fixed
Message::embeddata attachment handling (#60361). - @GrahamCampbell fixed the treatment of null headers (#60386).
- @irabbi360 fixed
Request::createFromBase()compatibility with Symfony 8.1 (#60354). - @tontonsb registered the lazy refresh hook on all connections (#60359).
- @timacdonald namespaced the cloud logging formatter (#60362).
- @jackbayliss documented that
DebounceForis measured in seconds (#60388).
References