
Security News
GPT-6 Astra Attempts Supply Chain Attacks Against Open Source Maintainers in Testing
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.
@abpjs/feature-management
Advanced tools
ABP Framework feature-management components for React - translated from @abp/ng.feature-management
Feature management UI components for ABP Framework in React
@abpjs/feature-management provides feature management capabilities for ABP-based React applications. It allows managing features for tenants and editions with support for toggle and free-text value types.
This package is a React translation of the original @abp/ng.feature-management Angular package.
# Using npm
npm install @abpjs/feature-management
# Using yarn
yarn add @abpjs/feature-management
# Using pnpm
pnpm add @abpjs/feature-management
This package requires the following peer dependencies:
npm install @abpjs/core @abpjs/theme-shared @chakra-ui/react @emotion/react
import { useState } from 'react';
import { FeatureManagementModal } from '@abpjs/feature-management';
function TenantFeatures({ tenantId }: { tenantId: string }) {
const [visible, setVisible] = useState(false);
return (
<>
<button onClick={() => setVisible(true)}>Manage Features</button>
<FeatureManagementModal
providerName="T"
providerKey={tenantId}
visible={visible}
onVisibleChange={setVisible}
onSave={() => console.log('Features saved!')}
/>
</>
);
}
import { useFeatureManagement } from '@abpjs/feature-management';
import { useEffect } from 'react';
function CustomFeaturePage({ tenantId }: { tenantId: string }) {
const {
features,
isLoading,
fetchFeatures,
saveFeatures,
updateFeatureValue,
isFeatureEnabled,
} = useFeatureManagement();
useEffect(() => {
fetchFeatures(tenantId, 'T');
}, [tenantId, fetchFeatures]);
const handleToggle = (featureName: string) => {
const newValue = isFeatureEnabled(featureName) ? 'false' : 'true';
updateFeatureValue(featureName, newValue);
};
const handleSave = async () => {
const result = await saveFeatures(tenantId, 'T');
if (result.success) {
console.log('Features saved!');
}
};
return (
<div>
{features.map(feature => (
<div key={feature.name}>
<span>{feature.name}</span>
{feature.valueType?.name === 'ToggleStringValueType' ? (
<input
type="checkbox"
checked={isFeatureEnabled(feature.name)}
onChange={() => handleToggle(feature.name)}
/>
) : (
<input
type="text"
value={feature.value}
onChange={(e) => updateFeatureValue(feature.name, e.target.value)}
/>
)}
</div>
))}
<button onClick={handleSave} disabled={isLoading}>
Save
</button>
</div>
);
}
Modal component for managing features of a provider.
import { FeatureManagementModal } from '@abpjs/feature-management';
<FeatureManagementModal
providerName="T"
providerKey={tenantId}
visible={visible}
onVisibleChange={setVisible}
onSave={() => console.log('Saved!')}
/>
Props:
| Prop | Type | Required | Description |
|---|---|---|---|
providerName | string | Yes | Provider type ("T" for tenant, "E" for edition) |
providerKey | string | Yes | Provider identifier (tenant ID or edition ID) |
visible | boolean | Yes | Whether the modal is visible |
onVisibleChange | (visible: boolean) => void | No | Callback when visibility changes |
onSave | () => void | No | Callback when features are saved |
Hook for managing feature state and operations.
import { useFeatureManagement } from '@abpjs/feature-management';
const {
features, // Array of features
featureValues, // Current values (form state)
isLoading, // Loading state
error, // Error message
fetchFeatures, // Fetch features for provider
saveFeatures, // Save changes to server
updateFeatureValue, // Update a feature value locally
getFeatureValue, // Get current feature value
isFeatureEnabled, // Check if toggle feature is enabled
reset, // Reset all state
} = useFeatureManagement();
Service class for direct API interaction.
import { FeatureManagementService } from '@abpjs/feature-management';
import { useRestService } from '@abpjs/core';
function MyComponent() {
const restService = useRestService();
const service = new FeatureManagementService(restService);
// Get features
const features = await service.getFeatures({
providerName: 'T',
providerKey: tenantId,
});
// Update features
await service.updateFeatures({
providerName: 'T',
providerKey: tenantId,
features: [
{ name: 'MyFeature', value: 'true' },
],
});
}
import { FeatureManagement } from '@abpjs/feature-management';
interface FeatureManagement.Feature {
name: string;
value: string;
description?: string;
valueType?: ValueType;
depth?: number;
parentName?: string;
}
interface FeatureManagement.ValueType {
name: string; // 'ToggleStringValueType' or 'FreeTextStringValueType'
properties: object;
validator: object;
}
interface FeatureManagement.Provider {
providerName: string; // 'T' for tenant, 'E' for edition
providerKey: string; // Provider ID
}
interface FeatureManagement.Features {
features: Feature[];
}
| Value Type | Description | UI Component |
|---|---|---|
ToggleStringValueType | Boolean toggle | Checkbox/Switch |
FreeTextStringValueType | Free text input | Text input |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/abp/features | Fetch features for provider |
PUT | /api/abp/features | Update features for provider |
This package is part of the ABP React monorepo. Contributions are welcome!
LGPL-3.0 - See LICENSE for details.
FAQs
ABP Framework feature-management components for React - translated from @abp/ng.feature-management
The npm package @abpjs/feature-management receives a total of 13 weekly downloads. As such, @abpjs/feature-management popularity was classified as not popular.
We found that @abpjs/feature-management demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.

Product
Socket can now send alerts and supply chain attack notifications to Microsoft Teams, with filters that route the right updates to each channel.

Security News
pnpm 12 rewrites the package manager in Rust, cutting install times by up to 90% while preserving pnpm 11 workflows and lockfiles.