Release Notes
v4.0.0
February 2026
Breaking Changes
Removed Deprecated Legacy Models
The following deprecated types from the FeatureManagement namespace have been removed (deprecated in v3.2.0):
| Removed | Replacement |
|---|---|
FeatureManagement.State | GetFeatureListResultDto |
FeatureManagement.ValueType | IStringValueType |
FeatureManagement.Feature | FeatureDto |
FeatureManagement.Features | UpdateFeaturesDto |
FeatureManagement.Provider | FeatureProviderDto |
// Before (v3.2.0)
import { FeatureManagement } from '@abpjs/feature-management';
const feature: FeatureManagement.Feature = { name: '...', value: '...' };
// After (v4.0.0)
import type { FeatureDto } from '@abpjs/feature-management';
const feature: FeatureDto = { name: '...', value: '...' };
Removed FeatureManagementService
The deprecated FeatureManagementService has been removed. Use FeaturesService (added in v3.2.0) instead:
// Before (v3.2.0)
import { FeatureManagementService } from '@abpjs/feature-management';
const service = new FeatureManagementService(restService);
const result = await service.getFeatures({ providerKey, providerName });
// After (v4.0.0)
import { FeaturesService } from '@abpjs/feature-management';
const service = new FeaturesService(restService);
const result = await service.get(providerName, providerKey);
useFeatureManagement Hook Changes
The hook now uses FeaturesService internally and returns grouped features:
// Before (v3.2.0)
const { features, fetchFeatures, saveFeatures } = useFeatureManagement();
// features: FeatureManagement.Feature[]
// After (v4.0.0)
const { groups, features, fetchFeatures, saveFeatures } = useFeatureManagement();
// groups: FeatureGroupDto[] ← NEW: features organized by group
// features: FeatureDto[] ← still available as flat list
New return property:
| Property | Type | Description |
|---|---|---|
groups | FeatureGroupDto[] | Features organized by group |
Changed return type:
| Property | Before | After |
|---|---|---|
features | FeatureManagement.Feature[] | FeatureDto[] |
The FeatureDto type includes additional fields like depth, parentName, description, displayName, and provider compared to the old Feature type, but the core name and value fields are the same.
v3.2.0
February 2026
New Features
FeaturesService (Proxy Service)
A new proxy service for feature management API calls:
import { FeaturesService } from '@abpjs/feature-management';
import { useRestService } from '@abpjs/core';
function useFeatures() {
const restService = useRestService();
const featuresService = new FeaturesService(restService);
// Get features for a tenant
const features = await featuresService.get('T', tenantId);
// Update features
await featuresService.update('T', tenantId, {
features: [
{ name: 'MyFeature', value: 'true' },
{ name: 'MaxUsers', value: '100' },
],
});
}
New Proxy Models
New DTOs that match the ABP backend API structure:
import type {
FeatureDto,
FeatureGroupDto,
FeatureProviderDto,
GetFeatureListResultDto,
UpdateFeatureDto,
UpdateFeaturesDto,
} from '@abpjs/feature-management';
// Feature list result contains groups
const result: GetFeatureListResultDto = await featuresService.get('T', tenantId);
result.groups.forEach((group: FeatureGroupDto) => {
console.log(group.displayName);
group.features.forEach((feature: FeatureDto) => {
console.log(feature.name, feature.value);
});
});
ValueTypes Enum
New enum for feature value types:
import { ValueTypes } from '@abpjs/feature-management';
function getFeatureEditor(feature: FeatureDto) {
switch (feature.valueType.name) {
case ValueTypes.ToggleStringValueType:
return <ToggleSwitch />;
case ValueTypes.FreeTextStringValueType:
return <TextInput />;
case ValueTypes.SelectionStringValueType:
return <SelectDropdown />;
}
}
Validation Models
New interfaces for feature value validation:
import type { IStringValueType, IValueValidator } from '@abpjs/feature-management';
// Value validator interface
interface IValueValidator {
name: string;
item: object;
properties: Record<string, object>;
}
// String value type with validator
interface IStringValueType {
name: string;
item: object;
properties: Record<string, object>;
validator: IValueValidator;
}
getInputType Utility
Utility function to determine input type for free text features:
import { getInputType, INPUT_TYPES } from '@abpjs/feature-management';
function FeatureInput({ feature }) {
const inputType = getInputType(feature);
// Returns 'number' for numeric validators, 'text' otherwise
return <input type={inputType} value={feature.value} />;
}
Deprecations
The following legacy models are deprecated and will be removed in v4.0:
| Deprecated | Replacement |
|---|---|
FeatureManagement.State | GetFeatureListResultDto |
FeatureManagement.ValueType | IStringValueType |
FeatureManagement.Feature | FeatureDto |
FeatureManagement.Features | UpdateFeaturesDto |
FeatureManagement.Provider | FeatureProviderDto |
New Exports
Services:
FeaturesService- Proxy service for feature management API
Types:
FeatureDto- Feature data transfer objectFeatureGroupDto- Feature group data transfer objectFeatureProviderDto- Feature provider data transfer objectGetFeatureListResultDto- Result of getting featuresUpdateFeatureDto- DTO for updating a single featureUpdateFeaturesDto- DTO for updating multiple featuresIStringValueType- String value type interfaceIValueValidator- Value validator interfaceFreeTextType- Free text feature type
Enums:
ValueTypes- Feature value types enum
Constants:
INPUT_TYPES- Input type constants for free text features
Functions:
getInputType()- Get input type for free text features
v3.1.0
February 2026
New Features
Feature.displayName Property
The Feature interface now includes a displayName property for user-friendly feature names:
import type { FeatureManagement } from '@abpjs/feature-management';
function FeatureItem({ feature }: { feature: FeatureManagement.Feature }) {
return (
<div>
<label>{feature.displayName}</label>
<input value={feature.value} />
{feature.description && <p>{feature.description}</p>}
</div>
);
}
The Feature interface now includes:
name- Feature identifierdisplayName- User-friendly display name (new in v3.1.0)value- Feature valuedescription- Optional descriptionvalueType- Value type definitiondepth- Hierarchy depth levelparentName- Parent feature name for hierarchy
v3.0.0
February 2026
- Version alignment with @abpjs/core
v2.9.0
February 2026
- Version alignment with @abpjs/core
v2.7.0
February 2026
New Features
Component Replacement Keys
New constants for replacing feature management components:
import { eFeatureManagementComponents } from '@abpjs/feature-management';
// Available component keys:
// eFeatureManagementComponents.FeatureManagement = 'FeatureManagement.FeatureManagementComponent'
New Exports
eFeatureManagementComponents- Constants for component replacement keys
v2.4.0
February 2026
FeatureManagementService.apiNameproperty - New property for REST API configuration. Defaults to'default'.
v2.2.0
February 2026
- Version alignment with @abpjs/core
v2.1.0
February 2026
- Version alignment with @abpjs/core
v2.0.0
January 2026
- Version alignment with @abpjs/core
- Added
FeatureManagement.FeatureManagementComponentInputsinterface - Added
FeatureManagement.FeatureManagementComponentOutputsinterface
v1.1.0
January 2026
- Version alignment with @abpjs/core
v1.0.0
January 2026
- Version alignment with @abpjs/core
v0.9.0
January 2026
- Version alignment with @abpjs/core
v0.8.0
Release Date: January 2026
Initial Release
The @abpjs/feature-management package is now available! This is the React equivalent of Angular's @abp/ng.feature-management module.
Components
- FeatureManagementModal - Ready-to-use modal for managing features
- Support for toggle (boolean) features
- Support for free text features
- Automatic input rendering based on value type
- Loading and error states
- Localized UI
Hooks
- useFeatureManagement - Hook for programmatic feature management
fetchFeatures()- Fetch features from serversaveFeatures()- Save features to serverupdateFeatureValue()- Update feature value locallygetFeatureValue()- Get current feature valueisFeatureEnabled()- Check if toggle feature is enabledreset()- Reset all state
Services
- FeatureManagementService - Direct API interaction
getFeatures()- GET /api/abp/featuresupdateFeatures()- PUT /api/abp/features
Models
FeatureManagement.Feature- Feature definitionFeatureManagement.Features- Features containerFeatureManagement.Provider- Provider infoFeatureManagement.ValueType- Value type definitionFeatureManagement.State- State interface
Installation
npm install @abpjs/feature-management
Dependencies
@abpjs/core>= 0.8.0@abpjs/theme-shared>= 0.8.0@chakra-ui/react>= 3.0.0react>= 18.0.0