Skip to main content
Version: 4.0.0

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 apiName Property - All services now have an apiName property for REST API configuration
  • Component Identifier Enums - New eComponents enums 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 - Use phoneNumberConfirmed instead

Packages​

PackageVersionChanges
@abpjs/core2.4.0apiName property
@abpjs/theme-shared2.4.0ThemeSharedAppendContentContext, deprecation updates
@abpjs/theme-basic2.4.0Version alignment
@abpjs/account2.4.0AuthWrapper.isMultiTenancyEnabled, apiName property
@abpjs/identity2.4.0getAllRoles() method, apiName property
@abpjs/feature-management2.4.0apiName property
@abpjs/permission-management2.4.0apiName property
@abpjs/setting-management2.4.0Version alignment
@abpjs/tenant-management2.4.0Admin credentials for tenants, apiName property
@abpjs/account-pro2.4.0Phone verification methods, apiName property
@abpjs/audit-logging2.4.0eAuditLoggingComponents enum, apiName property
@abpjs/identity-pro2.4.0getAllRoles(), eIdentityComponents enum, apiName property
@abpjs/language-management2.4.0eLanguageManagementComponents enum, apiName property
@abpjs/saas2.4.0eSaasComponents 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

See Also​