v1.0.0
Release Date: January 2026
This is the first stable release of ABP React! All packages have been aligned to version 1.0.0, marking the library as production-ready.
Breaking Changes
@abpjs/core
eLayoutType.setting Deprecated
The eLayoutType.setting layout type has been deprecated. Use a custom layout instead.
Before (v0.9.0):
import { eLayoutType } from '@abpjs/core';
const route = {
path: '/settings',
layout: eLayoutType.setting,
};
After (v1.0.0):
import { eLayoutType } from '@abpjs/core';
const route = {
path: '/settings',
layout: eLayoutType.application, // Or create a custom layout
};
What's New
Sorting Support in Hooks
The useRoles, useUsers, and useTenantManagement hooks now include built-in sorting state:
import { useUsers } from '@abpjs/identity';
function UsersPage() {
const {
users,
sortKey,
sortOrder,
setSortKey,
setSortOrder
} = useUsers();
const handleSort = (field: string) => {
if (sortKey === field) {
setSortOrder(sortOrder === 'asc' ? 'desc' : 'asc');
} else {
setSortKey(field);
setSortOrder('asc');
}
};
return (
<Table>
<Thead>
<Tr>
<Th onClick={() => handleSort('userName')}>
Username {sortKey === 'userName' && (sortOrder === 'asc' ? '↑' : '↓')}
</Th>
</Tr>
</Thead>
{/* ... */}
</Table>
);
}
Available in:
useUsersfrom@abpjs/identityuseRolesfrom@abpjs/identityuseTenantManagementfrom@abpjs/tenant-management
LazyLoadService Array Support
Load multiple scripts or styles at once:
import { LazyLoadService } from '@abpjs/core';
// Before: Load one at a time
await lazyLoadService.load('/scripts/vendor.js');
await lazyLoadService.load('/scripts/plugin.js');
// After: Load multiple at once
await lazyLoadService.load([
'/scripts/vendor.js',
'/scripts/plugin.js',
]);
New Selectors
selectSettings
Get all settings with optional keyword filter:
import { selectSettings } from '@abpjs/core';
import { useSelector } from 'react-redux';
// Get all settings
const allSettings = useSelector(selectSettings());
// Filter by keyword
const emailSettings = useSelector(selectSettings('Email'));
selectLocalizationString
Localization with interpolation support:
import { selectLocalizationString } from '@abpjs/core';
import { useSelector } from 'react-redux';
// Simple usage
const welcome = useSelector(selectLocalizationString('Welcome'));
// With interpolation
const greeting = useSelector(
selectLocalizationString('HelloUser', { name: 'John' })
);
// "Hello, John!"
Dynamic Route Registration
New API for registering routes programmatically:
import { addAbpRoutes, getAbpRoutes } from '@abpjs/core';
// Register routes
addAbpRoutes([
{
path: '/custom',
name: 'Custom',
component: CustomPage,
},
]);
// Get all registered routes
const routes = getAbpRoutes();
New Types
ABP.Dictionary<T>
Generic key-value dictionary type:
import { ABP } from '@abpjs/core';
const settings: ABP.Dictionary<string> = {
'App.Name': 'My App',
'App.Version': '1.0.0',
};
SortOrder
Type for sort direction values:
import { SortOrder } from '@abpjs/core';
const order: SortOrder = 'asc'; // 'asc' | 'desc' | ''
Config.LocalizationWithDefault
Localization key with fallback value:
import { Config } from '@abpjs/core';
const label: Config.LocalizationWithDefault = {
key: 'CustomLabel',
defaultValue: 'Default Text',
};
New Package: @abpjs/account-pro
The Pro version of the account module with enhanced authentication features:
import { AccountProProvider, LoginForm, ForgotPassword } from '@abpjs/account-pro';
function App() {
return (
<AccountProProvider options={{ redirectUrl: '/dashboard', enableTwoFactor: true }}>
<LoginForm showForgotPasswordLink />
</AccountProProvider>
);
}
Features:
- Password recovery flow (forgot/reset password)
- Profile management (personal settings, change password)
- Two-factor authentication support
- Social login providers (planned)
See @abpjs/account-pro documentation for full details.
New Package: @abpjs/audit-logging
View and analyze audit logs with advanced filtering and statistics:
import { AuditLogsComponent, useAuditLogs } from '@abpjs/audit-logging';
function AuditLogsPage() {
return <AuditLogsComponent />;
}
// Or use the hook for custom implementations
function CustomAuditLogs() {
const { auditLogs, fetchAuditLogs } = useAuditLogs();
// ...
}
Features:
- Paginated audit logs table with sorting
- Advanced filtering (user, URL, HTTP method, status code, etc.)
- Entity change tracking with property diffs
- Execution duration and error rate statistics
See @abpjs/audit-logging documentation for full details.
Deprecations
@abpjs/core
| Deprecated | Replacement | Notes |
|---|---|---|
eLayoutType.setting | Custom layout | Will be removed in v2 |
ApplicationConfiguration.Setting | ApplicationConfiguration.Value | Type alias |
ApplicationConfiguration.Features | ApplicationConfiguration.Value | Type alias |
selectCopy | selectLocalizationString | Will be removed in v2 |
@abpjs/account
| Deprecated | Replacement | Notes |
|---|---|---|
ACCOUNT_ROUTES | AccountProvider config | Routes now configured via provider |
@abpjs/identity
| Deprecated | Replacement | Notes |
|---|---|---|
IDENTITY_ROUTES | Identity config services | Routes now configured via services |
IdentityProviders | Identity config services | Use services instead |
Packages
| Package | Version |
|---|---|
| @abpjs/core | 1.0.0 |
| @abpjs/account | 1.0.0 |
| @abpjs/account-pro | 1.0.0 (new) |
| @abpjs/audit-logging | 1.0.0 (new) |
| @abpjs/identity | 1.0.0 |
| @abpjs/feature-management | 1.0.0 |
| @abpjs/permission-management | 1.0.0 |
| @abpjs/setting-management | 1.0.0 |
| @abpjs/tenant-management | 1.0.0 |
| @abpjs/theme-basic | 1.0.0 |
| @abpjs/theme-shared | 1.0.0 |
Upgrade
npm update @abpjs/core @abpjs/account @abpjs/account-pro @abpjs/audit-logging @abpjs/feature-management @abpjs/identity @abpjs/permission-management @abpjs/setting-management @abpjs/tenant-management @abpjs/theme-basic @abpjs/theme-shared
Migration Guide
-
Update
eLayoutType.settingusage: Replace witheLayoutType.applicationor a custom layout. -
Update deprecated type aliases: Replace
ApplicationConfiguration.SettingandApplicationConfiguration.FeatureswithApplicationConfiguration.Value. -
Update
selectCopyusage (recommended): Replace withselectLocalizationStringfor better interpolation support. -
Update route constants (recommended): Migrate from
ACCOUNT_ROUTESandIDENTITY_ROUTESto provider/service-based configuration.