Skip to main content
Version: 3.0.0

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:

  • useUsers from @abpjs/identity
  • useRoles from @abpjs/identity
  • useTenantManagement from @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

DeprecatedReplacementNotes
eLayoutType.settingCustom layoutWill be removed in v2
ApplicationConfiguration.SettingApplicationConfiguration.ValueType alias
ApplicationConfiguration.FeaturesApplicationConfiguration.ValueType alias
selectCopyselectLocalizationStringWill be removed in v2

@abpjs/account

DeprecatedReplacementNotes
ACCOUNT_ROUTESAccountProvider configRoutes now configured via provider

@abpjs/identity

DeprecatedReplacementNotes
IDENTITY_ROUTESIdentity config servicesRoutes now configured via services
IdentityProvidersIdentity config servicesUse services instead

Packages

PackageVersion
@abpjs/core1.0.0
@abpjs/account1.0.0
@abpjs/account-pro1.0.0 (new)
@abpjs/audit-logging1.0.0 (new)
@abpjs/identity1.0.0
@abpjs/feature-management1.0.0
@abpjs/permission-management1.0.0
@abpjs/setting-management1.0.0
@abpjs/tenant-management1.0.0
@abpjs/theme-basic1.0.0
@abpjs/theme-shared1.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

  1. Update eLayoutType.setting usage: Replace with eLayoutType.application or a custom layout.

  2. Update deprecated type aliases: Replace ApplicationConfiguration.Setting and ApplicationConfiguration.Features with ApplicationConfiguration.Value.

  3. Update selectCopy usage (recommended): Replace with selectLocalizationString for better interpolation support.

  4. Update route constants (recommended): Migrate from ACCOUNT_ROUTES and IDENTITY_ROUTES to provider/service-based configuration.