v2.0.0
Release Date: January 2026
This major release introduces comprehensive State Services with dispatch methods across all packages, improved TypeScript support with component interface types, and several breaking changes as deprecated APIs have been removed.
Highlights
- State Services with Dispatch Methods - All packages now include state services that mirror the Angular NGXS store pattern
- Component Interface Types - TypeScript interfaces for all component inputs/outputs
- Breaking Changes - Deprecated routes and constants from v1.x have been removed
- Improved Type Safety - Callback signatures updated from
anyto proper types
Breaking Changes
@abpjs/core
eLayoutType.settingremoved - Use a custom layout instead (deprecated in v1.0.0)ConfigServicealias removed - UseConfigStateServicedirectly (deprecated in v1.1.0)
@abpjs/account
ACCOUNT_ROUTESremoved - UseuseSelfRegistrationEnabledhook and ABP settings instead
@abpjs/identity
IDENTITY_ROUTESremoved - Use identity config services for route configurationIdentityProvidersremoved - Use identity config services instead
@abpjs/tenant-management
TENANT_MANAGEMENT_ROUTESremoved - UseTENANT_MANAGEMENT_ROUTE_PATHSandTENANT_MANAGEMENT_POLICIESinstead
New Features
State Services with Dispatch Methods
All packages now include state services that provide programmatic access to state management, mirroring the Angular NGXS store pattern. These services maintain internal state and provide dispatch methods for API operations.
@abpjs/core
New session actions and selectors:
import { sessionActions } from '@abpjs/core';
// New actions
dispatch(sessionActions.setSessionDetail(detail));
dispatch(sessionActions.patchSessionDetail(partialDetail));
dispatch(sessionActions.clearSessionDetail());
New configActions.addRoute for dynamic route registration:
import { configActions } from '@abpjs/core';
dispatch(configActions.addRoute({
path: '/custom',
name: 'Custom Page',
}));
@abpjs/identity
New IdentityStateService:
import { IdentityStateService } from '@abpjs/identity';
const stateService = new IdentityStateService();
await stateService.dispatchGetRoles();
await stateService.dispatchGetUsers();
await stateService.dispatchCreateRole({ name: 'Manager', isDefault: false, isPublic: true });
@abpjs/tenant-management
New TenantManagementStateService:
import { TenantManagementStateService } from '@abpjs/tenant-management';
await stateService.dispatchGetTenants();
await stateService.dispatchCreateTenant({ name: 'NewTenant', adminEmailAddress: 'admin@example.com', adminPassword: 'Password123!' });
@abpjs/permission-management
New dispatch methods for PermissionManagementStateService:
import { PermissionManagementStateService } from '@abpjs/permission-management';
await stateService.dispatchGetPermissions({ providerKey: 'role-id', providerName: 'R' });
await stateService.dispatchUpdatePermissions({ providerKey: 'role-id', providerName: 'R', permissions: [...] });
Pro Packages
All pro packages now include comprehensive state services:
| Package | State Service |
|---|---|
| @abpjs/identity-pro | IdentityStateService with 17 dispatch methods |
| @abpjs/audit-logging | AuditLoggingStateService |
| @abpjs/language-management | LanguageManagementStateService |
| @abpjs/saas | SaasStateService |
Component Interface Types
All packages now export TypeScript interfaces for component inputs and outputs:
import type { Identity } from '@abpjs/identity';
// Component input/output types
type RolesInputs = Identity.RolesComponentInputs;
type RolesOutputs = Identity.RolesComponentOutputs;
type UsersInputs = Identity.UsersComponentInputs;
type UsersOutputs = Identity.UsersComponentOutputs;
New Component Props
@abpjs/identity & @abpjs/identity-pro
onVisiblePermissionChangeprop onRolesComponentandUsersComponent
@abpjs/tenant-management
onVisibleFeaturesChangeprop onTenantManagementModal
@abpjs/account & @abpjs/account-pro
enableLocalLoginoption forAccountProProviderisSelfRegistrationEnabledprop onLoginFormandRegisterForm- ABP settings support:
Abp.Account.EnableLocalLogin,Abp.Account.IsSelfRegistrationEnabled
Type Improvements
@abpjs/theme-shared
- Toaster methods now return
number(toast ID) instead ofPromise<Status> - Severity
'warn'renamed to'warning' - New
'neutral'severity added - New
show()method,subscribe()method,listenToEscape()for confirmation containerKeysupport for scoped toasters
Packages
| Package | Version | Changes |
|---|---|---|
| @abpjs/core | 2.0.0 | Breaking: removed deprecated APIs; New: session detail, addRoute |
| @abpjs/theme-shared | 2.0.0 | Breaking: toaster return types; New: neutral severity, subscribe |
| @abpjs/theme-basic | 2.0.0 | Version alignment |
| @abpjs/account | 2.0.0 | Breaking: ACCOUNT_ROUTES removed; New: ABP settings support |
| @abpjs/identity | 2.0.0 | Breaking: IDENTITY_ROUTES removed; New: IdentityStateService |
| @abpjs/feature-management | 2.0.0 | New: Component interface types |
| @abpjs/permission-management | 2.0.0 | New: dispatch methods, interface types |
| @abpjs/setting-management | 2.0.0 | Version alignment |
| @abpjs/tenant-management | 2.0.0 | Breaking: TENANT_MANAGEMENT_ROUTES removed; New: StateService |
| @abpjs/account-pro | 2.0.0 | New: enableLocalLogin, isSelfRegistrationEnabled |
| @abpjs/audit-logging | 2.0.0 | New: AuditLoggingStateService |
| @abpjs/identity-pro | 2.0.0 | New: IdentityStateService with 17 methods |
| @abpjs/language-management | 2.0.0 | New: LanguageManagementStateService |
| @abpjs/saas | 2.0.0 | New: SaasStateService |
Upgrade
npm install @abpjs/core@2.0.0 @abpjs/theme-shared@2.0.0 @abpjs/theme-basic@2.0.0
Or update all packages:
npm install @abpjs/core@latest @abpjs/theme-shared@latest @abpjs/account@latest @abpjs/identity@latest @abpjs/feature-management@latest @abpjs/permission-management@latest @abpjs/setting-management@latest @abpjs/tenant-management@latest
Migration Guide
1. Remove deprecated route constants
// Before (v1.x)
import { IDENTITY_ROUTES, ACCOUNT_ROUTES, TENANT_MANAGEMENT_ROUTES } from '@abpjs/...';
// After (v2.0.0) - use route paths and policies
import { IDENTITY_ROUTE_PATHS, IDENTITY_POLICIES } from '@abpjs/identity';
import { TENANT_MANAGEMENT_ROUTE_PATHS, TENANT_MANAGEMENT_POLICIES } from '@abpjs/tenant-management';
2. Update ConfigService imports
// Before
import { ConfigService } from '@abpjs/core';
// After
import { ConfigStateService } from '@abpjs/core';
3. Update Toaster usage
// Before (v1.x)
const status = await toaster.success('Message'); // Promise<Status>
// After (v2.0.0)
const toastId = toaster.success('Message'); // number
toaster.remove(toastId); // Remove by ID
4. Update severity naming
// Before
toaster.warn('Warning message');
// After
toaster.warning('Warning message');
5. Update Confirmation yesCopy/cancelCopy
// Before
confirmation.show({ yesCopy: 'Delete', cancelCopy: 'Keep' });
// After
confirmation.show({ yesText: 'Delete', cancelText: 'Keep' });