Skip to main content
Version: Next

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