v2.4.0
Release Date: February 2026
This release adds the apiName property to all services for REST API configuration, new component identifier enums across Pro packages, phone number verification in Account Pro, and several API improvements.
Highlights
- Service
apiNameProperty - All services now have anapiNameproperty for REST API configuration - Component Identifier Enums - New
eComponentsenums for component registration and customization - Phone Number Verification - New methods in Account Pro for SMS-based phone verification
- Admin Credentials for Tenants - Tenant creation now requires admin email and password
getAllRoles()Method - New method in Identity Pro to fetch all roles without pagination
Breaking Changes
@abpjs/tenant-management
The AddRequest interface now requires adminEmailAddress and adminPassword fields:
// Before (v2.2.0)
interface AddRequest {
name: string;
}
// After (v2.4.0)
interface AddRequest {
name: string;
adminEmailAddress: string;
adminPassword: string;
}
The UpdateRequest interface no longer extends AddRequest:
// After (v2.4.0)
interface UpdateRequest {
id: string;
name: string;
}
@abpjs/saas
The CreateTenantRequest interface now requires adminEmailAddress and adminPassword:
// Before (v2.2.0) - optional
interface CreateTenantRequest {
name: string;
adminEmailAddress?: string;
adminPassword?: string;
}
// After (v2.4.0) - required
interface CreateTenantRequest {
name: string;
adminEmailAddress: string;
adminPassword: string;
}
New Features
All Packages
Service apiName Property
All services now include an apiName property for REST API configuration, defaulting to 'default':
// Available on all services
AccountService.apiName = 'default';
IdentityService.apiName = 'default';
TenantManagementService.apiName = 'default';
// ... and all other services
@abpjs/account-pro
Phone Number Verification
New methods for SMS-based phone verification:
import { useAccountProService } from '@abpjs/account-pro';
function PhoneVerification() {
const accountProService = useAccountProService();
const sendCode = async () => {
await accountProService.sendPhoneNumberConfirmationToken();
};
const confirmPhone = async (token: string) => {
await accountProService.confirmPhoneNumber(token);
};
}
New ProfileResponse.phoneNumberConfirmed field (replaces deprecated isPhoneNumberConfirmed).
@abpjs/identity-pro
Get All Roles
New method to fetch all roles without pagination:
import { useIdentityService } from '@abpjs/identity-pro';
function RoleSelector() {
const identityService = useIdentityService();
useEffect(() => {
// Calls /api/identity/roles/all
identityService.getAllRoles().then((response) => {
console.log(response.items);
});
}, []);
}
@abpjs/tenant-management
Admin Credentials for New Tenants
When creating a tenant, admin credentials are now required:
import { useTenantManagement } from '@abpjs/tenant-management';
function CreateTenant() {
const { createTenant } = useTenantManagement();
const handleCreate = async () => {
await createTenant({
name: 'New Tenant',
adminEmailAddress: 'admin@newtenant.com',
adminPassword: 'SecurePassword123!',
});
};
}
The TenantManagementModal component automatically displays admin email and password fields when creating new tenants.
Component Identifier Enums
New enums for component registration and customization:
// @abpjs/audit-logging
import { eAuditLoggingComponents } from '@abpjs/audit-logging';
// eAuditLoggingComponents.AuditLogs = 'AuditLogging.AuditLogsComponent'
// @abpjs/identity-pro
import { eIdentityComponents } from '@abpjs/identity-pro';
// eIdentityComponents.Claims = 'Identity.ClaimsComponent'
// eIdentityComponents.Roles = 'Identity.RolesComponent'
// eIdentityComponents.Users = 'Identity.UsersComponent'
// @abpjs/language-management
import { eLanguageManagementComponents } from '@abpjs/language-management';
// eLanguageManagementComponents.Languages = 'LanguageManagement.LanguagesComponent'
// eLanguageManagementComponents.LanguageTexts = 'LanguageManagement.LanguageTextsComponent'
// @abpjs/saas
import { eSaasComponents } from '@abpjs/saas';
// eSaasComponents.Editions = 'Saas.EditionsComponent'
// eSaasComponents.Tenants = 'Saas.TenantsComponent'
Deprecations
@abpjs/account-pro
ProfileResponse.isPhoneNumberConfirmed- UsephoneNumberConfirmedinstead
Packages
| Package | Version | Changes |
|---|---|---|
| @abpjs/core | 2.4.0 | apiName property |
| @abpjs/theme-shared | 2.4.0 | ThemeSharedAppendContentContext, deprecation updates |
| @abpjs/theme-basic | 2.4.0 | Version alignment |
| @abpjs/account | 2.4.0 | AuthWrapper.isMultiTenancyEnabled, apiName property |
| @abpjs/identity | 2.4.0 | getAllRoles() method, apiName property |
| @abpjs/feature-management | 2.4.0 | apiName property |
| @abpjs/permission-management | 2.4.0 | apiName property |
| @abpjs/setting-management | 2.4.0 | Version alignment |
| @abpjs/tenant-management | 2.4.0 | Admin credentials for tenants, apiName property |
| @abpjs/account-pro | 2.4.0 | Phone verification methods, apiName property |
| @abpjs/audit-logging | 2.4.0 | eAuditLoggingComponents enum, apiName property |
| @abpjs/identity-pro | 2.4.0 | getAllRoles(), eIdentityComponents enum, apiName property |
| @abpjs/language-management | 2.4.0 | eLanguageManagementComponents enum, apiName property |
| @abpjs/saas | 2.4.0 | eSaasComponents enum, required admin credentials, apiName property |
Upgrade
npm install @abpjs/core@2.4.0 @abpjs/theme-shared@2.4.0 @abpjs/theme-basic@2.4.0 @abpjs/account@2.4.0 @abpjs/identity@2.4.0 @abpjs/feature-management@2.4.0 @abpjs/permission-management@2.4.0 @abpjs/setting-management@2.4.0 @abpjs/tenant-management@2.4.0
For Pro packages:
npm install @abpjs/account-pro@2.4.0 @abpjs/audit-logging@2.4.0 @abpjs/identity-pro@2.4.0 @abpjs/language-management@2.4.0 @abpjs/saas@2.4.0