NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1375 most downloaded on Packagist
Make your Laravel app usable by multiple tenants
Last release 16 days ago
22 Sep 2026
Release timing varies
gaps range from 9 days to 5 months
Most releases are documented
notes for 53 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
69 releases · first in 2020
One column per quarter.
Fix documentation link in README by @flavius-constantin in #649
Full Changelog: 4.2.0...4.2.1
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.2.0...4.2.1
Processing a job no longer leaves the surrounding code with a different current tenant than it had before ( #639 , #643 ).
Processing a job no longer leaves the surrounding code with a different current tenant than it had before (#639, #643).
On the sync connection and through dispatchSync(), a job runs inside the request that dispatched it. A job that is not tenant aware forgot the current tenant and never put it back, so the rest of the request continued without one. A tenant aware job for another tenant left that other tenant current. Whatever tenant was current before a job starts is now restored when it finishes, on both the success and the failure path, and nested sync dispatches restore per level.
queue:retry behaves the same way. It needs the tenant of a failed job while it pushes that job back onto the queue, but the tenant of the code that ran the command is restored once it finishes. This matters when retrying jobs from a request with Artisan::call('queue:retry').
Behaviour worth knowing about when upgrading: on a queue worker the tenant of a processed job no longer stays current after that job finishes. Every job binds its own tenant, so jobs are unaffected, but code reading Tenant::current() in between jobs now sees no tenant. Listeners that are part of processing a job, Queue::after() and JobFailed for instance, still see the tenant of the job they are handling.
Full Changelog: 4.1.5...4.2.0
Fix tenant id retrival during job retry by @gazben in #642
Full Changelog: 4.1.4...4.1.5
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.1.4...4.1.5
Support legacy queue payloads in tenant-awareness detection by @ragulka in #640
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.1.3...4.1.4
Resolve tenant from payload context when retrying jobs by @freekmurze in #638
Full Changelog: 4.1.2...4.1.3
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.1.2...4.1.3
Add Laravel Boost skill by @victoryoalli in #635
Full Changelog: 4.1.1...4.1.2
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.1.1...4.1.2
Add description to TenantsArtisanCommand by @dac514 in #633
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.1.0...4.1.1
Nothing published for this version
Fix #617 : Add default value for TasksCollection constructor parameter by @freekmurze in #625
Full Changelog: 4.0.8...4.0.9
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.8...4.0.9
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com
execute() by @moisish in https://github.com/spatie/laravel-multitenancy/pull/622$latestResponse error on prefer-lowestFull Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.7...4.0.8
Fix syntax for tenant aware interface config by @danharrin in #608
Full Changelog: 4.0.6...4.0.7
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.6...4.0.7
Command state persistence with TenantAware by @SethSharp in https://github.com/spatie/laravel-multitenancy/pull/602
TenantAware by @SethSharp in https://github.com/spatie/laravel-multitenancy/pull/602TenantAware and NotTenantAware interfaces by @przemyslaw-przylucki in https://github.com/spatie/laravel-multitenancy/pull/607Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.5...4.0.6
Update using-multiple-databases.md by @najbo in https://github.com/spatie/laravel-multitenancy/pull/584
ShouldBeEncrypted need to be decrypted by @Joel-Jensen in https://github.com/spatie/laravel-multitenancy/pull/588Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.4...4.0.5
Laravel 12.x Compatibility by @laravel-shift in https://github.com/spatie/laravel-multitenancy/pull/580
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.3...4.0.4
Docs: Fix formatting in interface code block by @inmanturbo in https://github.com/spatie/laravel-multitenancy/pull/560
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.2...4.0.3
Update using-a-custom-tenant-model.md by @thoresuenert in https://github.com/spatie/laravel-multitenancy/pull/553
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.1...4.0.2
Fix NotTenantAware notifications, mailables, closures, listeners & broadcast events in a default tenant aware application
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/4.0.0...4.0.1
Refactor registerTenantFinder method to reduce complexity by @misaf in https://github.com/spatie/laravel-multitenancy/pull/536
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/3.2.0...4.0.0
Laravel 11.x Compatibility by @laravel-shift in https://github.com/spatie/laravel-multitenancy/pull/522
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/3.1.1...3.2.0
Update migration stub by @sevannerse in https://github.com/spatie/laravel-multitenancy/pull/495
TenantNotFoundForRequestEvent by @jacobmllr95 in https://github.com/spatie/laravel-multitenancy/pull/502Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/3.1.0...3.1.1
Add support to queued closures by @masterix21 in https://github.com/spatie/laravel-multitenancy/pull/492
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/3.0.3...3.1.0
[no ci] Fix typo in config comment by @inmanturbo in https://github.com/spatie/laravel-multitenancy/pull/454
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/3.0.2...3.0.3
Fresh Tenant on each job by @masterix21 in https://github.com/spatie/laravel-multitenancy/pull/438
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/3.0.1...3.0.2
Correct doc url version for v3 by @l3aro in https://github.com/spatie/laravel-multitenancy/pull/412
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/3.0.0...3.0.1
NotTenantAware jobs will now forget any current tenant that might have been set when starting processing.
NotTenantAware jobs will now forget any current tenant that might have been set when starting processing.Fix an issue where the Illuminate\Cache\Repository was not being cleared from the container
Illuminate\Cache\Repository was not being cleared from the containerFull Changelog: https://github.com/spatie/laravel-multitenancy/compare/2.3.8...2.3.9
Replace id with getKey() so uuids could be used as primary keys by @lartisan in https://github.com/spatie/laravel-multitenancy/pull/392
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/2.3.7...2.3.8
Prefix Cache Task - Cache Store by @moisish in https://github.com/spatie/laravel-multitenancy/pull/374
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/2.3.6...2.3.7
Nothing published for this version
Nothing published for this version
Nothing published for this version
docs: change method visibility in example by @medvinator in https://github.com/spatie/laravel-multitenancy/pull/326
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/2.3.2...2.3.3
- add support for Laravel 9
Reload Router instance when switching route cache on Laravel Octane by @AlexVanderbist in https://github.com/spatie/laravel-multitenancy/pull/309
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/2.3.0...2.3.1
Add route cache path switcher by @AlexVanderbist in https://github.com/spatie/laravel-multitenancy/pull/308
Full Changelog: https://github.com/spatie/laravel-multitenancy/compare/2.2.0...2.3.0
Handle JobRetryRequested queue event and fix
add filterCurrent and rejectCurrent to TenantCollection
- add Laravel Octane support
- drop support for PHP 7
Nothing published for this version
Nothing published for this version
Nothing published for this version
- allow PHP 8
NeedsTenant ability to return or redirect
- fix for BroadcastEvent
add ability to dispatch events tenant aware
- add support for Laravel 8
restored check isCurrent from makeCurrent
🐛 removed check isCurrent from makeCurrent
forget current when making new tenant current
removed $guarded from Tenant model
TenantAware now uses the Tenant model from config
TenantsArtisanCommand now uses TenantAware trait
- added TenantAware
TenantAware🐛 properly handle queued mailables and notification
database switch fails with misconfigured tenant
- added execute for the landlord
execute for the landlordadded $tenant->execute($callable) to execute isolated tenant code
$tenant->execute($callable) to execute isolated tenant code (#60)tenant:artisan search field customizable using config
tenant:artisan search field customizable using config (#52)allow mass assignment when creating a new tenant by default
Your coding agent can read these notes before it upgrades. Set up the MCP server →