Release Notes
v2.7.0
February 2026
New Features
Password Validation Utilities
New utilities for validating passwords against ABP Identity settings:
import { useAbpConfig } from '@abpjs/core';
import { getPasswordValidators, getPasswordValidationRules } from '@abpjs/theme-shared';
import { useForm } from 'react-hook-form';
function PasswordForm() {
const { getSetting } = useAbpConfig();
const { register, formState: { errors } } = useForm();
// Option 1: Get validators array
const validators = getPasswordValidators({ getSetting });
// Option 2: Get react-hook-form compatible rules
const passwordRules = getPasswordValidationRules({ getSetting });
return (
<form>
<input
type="password"
{...register('password', passwordRules)}
/>
{errors.password && <span>{errors.password.message}</span>}
</form>
);
}
The validators read settings from ABP's Abp.Identity.Password.* configuration:
RequiredLength- Minimum password lengthMaxLength- Maximum password lengthRequireDigit- Requires at least one digitRequireLowercase- Requires at least one lowercase letterRequireUppercase- Requires at least one uppercase letterRequireNonAlphanumeric- Requires at least one special characterRequiredUniqueChars- Minimum unique characters
ModalService
New service for programmatic modal rendering:
import { ModalProvider, ModalContainer, useModal } from '@abpjs/theme-shared';
// Wrap your app with ModalProvider
function App() {
return (
<ModalProvider>
<MainContent />
<ModalContainer />
</ModalProvider>
);
}
// Use the modal service in components
function MyComponent() {
const modal = useModal();
const openModal = () => {
modal.renderTemplate(
(context) => (
<Dialog open onClose={() => modal.clearModal()}>
<DialogContent>Hello {context?.name}</DialogContent>
</Dialog>
),
{ name: 'World' }
);
};
return <button onClick={openModal}>Open Modal</button>;
}
ModalService methods:
renderTemplate(render, context?)- Render a template in the modal containerclearModal()- Clear the current modalgetContainer()- Get the container ref for the modaldetectChanges()- Force a re-render of the modal content
HTTP Error Configuration
New context and hook for HTTP error configuration:
import { HttpErrorConfigContext, useHttpErrorConfig, httpErrorConfigFactory } from '@abpjs/theme-shared';
function App() {
const httpErrorConfig = {
skipHandledErrorCodes: [404], // Let 404s pass through
errorScreen: {
component: MyCustomErrorComponent,
forWhichErrors: [401, 403, 500],
},
};
return (
<HttpErrorConfigContext.Provider value={httpErrorConfig}>
<YourApp />
</HttpErrorConfigContext.Provider>
);
}
// Access config in components
function MyComponent() {
const config = useHttpErrorConfig();
if (config.skipHandledErrorCodes?.includes(404)) {
// Skip handling 404 errors
}
}
API Changes
HttpErrorConfig
skipHandledErrorCodes- New property to specify error codes that should pass through without being handlederrorScreen.forWhichErrors- Simplified from a tuple type toErrorScreenErrorCodes[]array
// Before (v2.4.0)
interface HttpErrorConfig {
errorScreen?: {
forWhichErrors?: [401] | [401, 403] | [401, 403, 404] | [401, 403, 404, 500];
};
}
// After (v2.7.0)
interface HttpErrorConfig {
skipHandledErrorCodes?: ErrorScreenErrorCodes[] | number[];
errorScreen?: {
forWhichErrors?: ErrorScreenErrorCodes[]; // Simple array
};
}
New Exports
getPasswordValidators(store)- Get password validators from ABP settingsgetPasswordValidationRules(store)- Get react-hook-form compatible validation rulesgetPasswordSettings(store)- Get password settings from storePasswordSettings- Interface for password settingsPasswordValidator- Type for password validator functionsPASSWORD_SETTING_KEYS- Constants for ABP Identity password setting keysModalProvider- Provider component for modal serviceModalContainer- Component to render modal contentuseModal()- Hook to access modal serviceuseModalState()- Hook to access current modal stateuseModalContext()- Hook to access full modal contextModalService- Interface for modal serviceModalState- Interface for modal stateModalTemplateRender- Type for modal render functionsHttpErrorConfigContext- Context for HTTP error configurationuseHttpErrorConfig()- Hook to access HTTP error configurationhttpErrorConfigFactory()- Factory function for default HTTP error configHTTP_ERROR_CONFIG- Token name constant
v2.4.0
February 2026
New Features
-
ThemeSharedAppendContentContext- New React context for appending scripts or stylesheets to the document. This is the React equivalent of Angular'sTHEME_SHARED_APPEND_CONTENTinjection token:import { ThemeSharedAppendContentContext } from '@abpjs/theme-shared';
function App() {
const appendContent = async () => {
// Custom logic to append scripts/styles to the document
};
return (
<ThemeSharedAppendContentContext.Provider value={appendContent}>
<YourApp />
</ThemeSharedAppendContentContext.Provider>
);
} -
THEME_SHARED_APPEND_CONTENTconstant - Token name constant matching Angular's InjectionToken name
Deprecation Updates
Toaster.Statusremoval postponed - Now scheduled for removal in v3.0 (previously v2.2). Continue usingConfirmation.Statusfor new code.appendScriptfunction deprecated - Will be removed in v2.6. UseThemeSharedAppendContentContextinstead.
v2.2.0
February 2026
- Version alignment with @abpjs/core
v2.1.0
February 2026
New Types
Confirmation.Statusenum - New confirmation-specific status enum, replacing usage ofToaster.Statusfor confirmation dialogs:import { Confirmation } from '@abpjs/theme-shared';
const status = await confirmation.info('Are you sure?');
if (status === Confirmation.Status.confirm) {
// User confirmed
} else if (status === Confirmation.Status.reject) {
// User rejected
} else if (status === Confirmation.Status.dismiss) {
// User dismissed (escape key, click outside)
}
API Changes
- Confirmation service return type - All confirmation methods (
info,success,warn,error,show) now returnPromise<Confirmation.Status>instead ofPromise<Toaster.Status> confirmation.clear(status?)parameter - Now acceptsConfirmation.Statusinstead ofToaster.StatususeConfirmationState().respond()- Now acceptsConfirmation.Statusinstead ofToaster.Status
Deprecations
Toaster.Statusdeprecated - UseConfirmation.Statusfor confirmation dialogs.Toaster.Statuswill be removed in v2.2.0.
Migration
// Before (v2.0.0)
import { Toaster } from '@abpjs/theme-shared';
const status = await confirmation.info('Are you sure?');
if (status === Toaster.Status.confirm) { /* ... */ }
// After (v2.1.0)
import { Confirmation } from '@abpjs/theme-shared';
const status = await confirmation.info('Are you sure?');
if (status === Confirmation.Status.confirm) { /* ... */ }
v2.0.0
January 2026
Breaking Changes
- ToasterService return type - Methods (
info,success,warn,error) now returnnumber(toast ID) instead ofPromise<Toaster.Status> toaster.remove(id)- Now takesnumberinstead ofstringtoaster.addAll()removed - Useshow()method insteadToaster.Optionsrenamed - UseToaster.ToastOptions(old interface kept for compatibility, deprecated)Toaster.Severitychanged -'warn'renamed to'warning', added'neutral'Confirmation.Options- RemovedyesCopyandcancelCopy(useyesTextandcancelText)Confirmation.Options- No longer extendsToaster.Options
New Features
toaster.show(message, title?, severity?, options)- Create toast with specified severitytoaster.subscribe(callback)- Subscribe to toast state changes (observable pattern)toaster.clear(containerKey?)- Clear toasts by container keyToastContainercontainerKeyprop - Filter toasts to specific containers- Toast positions - New
'top','top-left','bottom','bottom-left'positions confirmation.show(message, title?, severity?, options)- Create with specified severityconfirmation.listenToEscape()- Enable escape key dismissalconfirmation.subscribe(callback)- Subscribe to confirmation changesConfirmation.Options.closable- Control dismiss behaviorConfirmation.Severitytype - Separate from Toaster, includes'neutral'- Sorting icon CSS classes -
.sorting,.sorting_asc,.sorting_desc
Style Updates
- Updated animation timing (0.4s → 0.2s for fade effects)
- Added table scrollbar styling
- Added collapse/expand height transition classes
v1.1.0
January 2026
New Features
- ToasterService localization support -
info(),success(),warn(),error()now acceptConfig.LocalizationParamfor message and title - LoaderBar customization - New
intervalPeriodandstopDelayprops for animation control - HttpErrorConfig - New types for custom error screen configuration (
RootParams,HttpErrorConfig,ErrorScreenErrorCodes)
Deprecations
- Confirmation.Options -
cancelCopyandyesCopydeprecated in favor ofcancelTextandyesText(which acceptConfig.LocalizationParam)
v1.0.0
January 2026
Version alignment with ABP Framework v1.0.0. No new features or breaking changes.
v0.9.0
January 2026
New Features
- Modal enhancements - New
busy,height,minHeight, andonInitprops - Profile component - Moved from
@abpjs/theme-basic(see Profile docs) - ChangePassword component - Moved from
@abpjs/theme-basic(see Profile docs) - SettingTab model - Interface for settings management tabs
- Statistics models -
Statistics.Response,Statistics.Data,Statistics.Filter
v0.8.0
January 2026
New Features
- LoaderBar - Progress bar that shows during HTTP requests
- ErrorComponent - Full-page error display (404, 500, etc.)
- DEFAULT_STYLES - Global CSS styles constant
- useErrorHandler enhancements -
createErrorComponent,clearErrorComponentmethods
v0.7.6
January 2026 - Initial Release
- Toaster service (success, error, warning, info)
- Confirmation service with promise-based dialogs
- Global error handler for ABP errors
- Light and dark mode support