Release Notes
v2.9.0
February 2026
- Version alignment with @abpjs/core
v2.7.0
February 2026
New Features
Component Replacement Keys
New constants for replacing tenant management components:
import { eTenantManagementComponents } from '@abpjs/tenant-management';
// Available component keys:
// eTenantManagementComponents.Tenants = 'TenantManagement.TenantsComponent'
Route Names
New constants for tenant management route names (localization keys):
import { eTenantManagementRouteNames } from '@abpjs/tenant-management';
// Available route names:
// eTenantManagementRouteNames.Administration = 'AbpUiNavigation::Menu:Administration'
// eTenantManagementRouteNames.TenantManagement = 'AbpTenantManagement::Menu:TenantManagement'
// eTenantManagementRouteNames.Tenants = 'AbpTenantManagement::Tenants'
New Exports
eTenantManagementComponents- Constants for component replacement keysTenantManagementComponentKey- Type for tenant management component key valueseTenantManagementRouteNames- Constants for route names (localization keys)TenantManagementRouteNameKey- Type for tenant management route name values
v2.4.0
February 2026
New Features
-
TenantManagementService.apiNameproperty - New property for REST API configuration. Defaults to'default'. -
Admin credentials for new tenants - When creating a new tenant, you must now provide admin credentials:
import { useTenantManagement } from '@abpjs/tenant-management';
function CreateTenantExample() {
const { createTenant } = useTenantManagement();
const handleCreate = async () => {
await createTenant({
name: 'New Tenant',
adminEmailAddress: 'admin@newtenant.com',
adminPassword: 'SecurePassword123!',
});
};
}The
TenantManagementModalcomponent automatically displays admin email and password fields when creating new tenants.
Breaking Changes
-
AddRequestinterface - Now requiresadminEmailAddressandadminPasswordfields:// Before (v2.2.0)
interface AddRequest {
name: string;
}
// After (v2.4.0)
interface AddRequest {
name: string;
adminEmailAddress: string;
adminPassword: string;
} -
UpdateRequestinterface - No longer extendsAddRequest. Now only requiresidandname:// Before (v2.2.0)
interface UpdateRequest extends AddRequest {
id: string;
}
// After (v2.4.0)
interface UpdateRequest {
id: string;
name: string;
}
v2.2.0
February 2026
New Features
- Features Modal Support in
useTenantManagement- New state and methods for managing the features modal:visibleFeatures- Whether the features modal is visiblefeaturesProviderKey- Provider key (tenant ID) for the features modalopenFeaturesModal(providerKey)- Open the features modal for a specific tenantonVisibleFeaturesChange(visible)- Handle features modal visibility changes
Example
import { useTenantManagement } from '@abpjs/tenant-management';
import { FeatureManagementModal } from '@abpjs/feature-management';
function TenantsWithFeatures() {
const {
tenants,
visibleFeatures,
featuresProviderKey,
openFeaturesModal,
onVisibleFeaturesChange,
} = useTenantManagement();
return (
<>
{tenants.map((tenant) => (
<div key={tenant.id}>
<span>{tenant.name}</span>
<button onClick={() => openFeaturesModal(tenant.id)}>
Manage Features
</button>
</div>
))}
<FeatureManagementModal
isOpen={visibleFeatures}
onClose={() => onVisibleFeaturesChange(false)}
providerName="T"
providerKey={featuresProviderKey}
/>
</>
);
}
v2.1.0
February 2026
- Version alignment with @abpjs/core
v2.0.0
January 2026
Breaking Changes
TENANT_MANAGEMENT_ROUTESremoved - This constant has been removed. UseTENANT_MANAGEMENT_ROUTE_PATHSandTENANT_MANAGEMENT_POLICIESinstead for route configuration.
New Features
-
TenantManagementStateServicedispatch methods - Added programmatic dispatch methods:dispatchGetTenants(params?)- Fetch tenants from API and update statedispatchGetTenantById(id)- Fetch a single tenant by IDdispatchCreateTenant(body)- Create a new tenantdispatchUpdateTenant(body)- Update an existing tenantdispatchDeleteTenant(id)- Delete a tenant
-
onVisibleFeaturesChangeprop - New callback prop onTenantManagementModalto handle features modal visibility changes -
Component Interface Types - Added TypeScript interfaces for component inputs/outputs:
TenantManagement.TenantsComponentInputsTenantManagement.TenantsComponentOutputs
Type Improvements
onSearchcallback - Updated signature from(value: any) => voidto(value: string) => voidonPageChangecallback - Updated signature from(data: any) => voidto(page: number) => void
v1.1.0
January 2026
New Features
TenantManagementStateService- New state service for managing tenant state:get()- Get all tenantsgetTenantsTotalCount()- Get total tenant countsubscribe()- Subscribe to state changesreset()- Reset state to initial values
getTenantManagementStateService()- Get singleton instance of the state serviceModalContentTypetype - Exported type for modal content ('saveConnStr'|'saveTenant')
Hook Enhancements
isDisabledSaveButton- Computed property that returnstruewhen save should be disabled (connection string required but empty)onSharedDatabaseChange()- Handler for shared database checkbox that auto-clears connection string
v1.0.0
January 2026
New Features
- Sorting support in
useTenantManagement- New sorting state and methods:sortKey- Current sort field (default:'name')sortOrder- Sort direction ('asc'|'desc'|'')setSortKey()- Update sort fieldsetSortOrder()- Update sort direction
SortOrdertype - Exported type for sort order values
v0.9.0
January 2026
New Features
TENANT_MANAGEMENT_ROUTES- Route constant (format:{ routes: ABP.FullRoute[] })TENANT_MANAGEMENT_ROUTE_PATHS- Path constants (BASE, TENANTS)TENANT_MANAGEMENT_POLICIES- Policy name constantsfetchTenantspagination - Now accepts optionalABP.PageQueryParamstotalCountin hook - Returns total count for pagination
v0.8.0
January 2026
- Version alignment with @abpjs/core
v0.7.6
January 2026 - Initial Release
- TenantManagementModal component
- useTenantManagement hook with CRUD operations
- Connection string management