chore: remove IS_APPLICATION_ENABLED feature flag (#19081)

## Summary
- Remove the `IS_APPLICATION_ENABLED` feature flag — application
features are now always enabled
- Remove `@RequireFeatureFlag` decorators and `FeatureFlagGuard` from 7
application resolvers (registration, development, manifest, install,
upgrade, marketplace, oauth)
- Remove frontend feature flag checks: settings navigation visibility,
route protection wrapper, side panel widget type gating, and role
permission flag filtering
- Delete the integration test for disabled-flag behavior
- Clean up seed data, test mocks, and generated schema files
This commit is contained in:
Charles Bochet
2026-03-29 11:43:35 +02:00
committed by GitHub
parent 05c0713474
commit 4d74cc0a28
19 changed files with 13 additions and 180 deletions
@@ -689,7 +689,7 @@ export const SettingsRoutes = ({ isAdminPageEnabled }: SettingsRoutesProps) => (
<Route
element={
<SettingsProtectedRouteWrapper
requiredFeatureFlag={FeatureFlagKey.IS_APPLICATION_ENABLED}
settingsPermission={PermissionFlagType.APPLICATIONS}
/>
}
>
@@ -75,9 +75,6 @@ const useSettingsNavigationItems = (): SettingsNavigationSection[] => {
(currentUser?.canImpersonate || currentUser?.canAccessFullAdminPanel) ??
false;
const isAIEnabled = useIsFeatureEnabled(FeatureFlagKey.IS_AI_ENABLED);
const isApplicationEnabled = useIsFeatureEnabled(
FeatureFlagKey.IS_APPLICATION_ENABLED,
);
const isSupportChatConfigured =
supportChat?.supportDriver === 'FRONT' &&
isNonEmptyString(supportChat.supportFrontChatId);
@@ -178,9 +175,7 @@ const useSettingsNavigationItems = (): SettingsNavigationSection[] => {
label: t`Apps`,
path: SettingsPath.Applications,
Icon: IconPlug,
isHidden:
!isApplicationEnabled ||
!permissionMap[PermissionFlagType.WORKSPACE],
isHidden: !permissionMap[PermissionFlagType.APPLICATIONS],
modifier: 'new',
},
{
@@ -34,9 +34,6 @@ export const useSettingsRolePermissionFlagConfig = ({
assignmentCapabilities,
}: UseSettingsRolePermissionFlagConfigParams = {}): SettingsRolePermissionsSettingPermission[] => {
const isAIEnabled = useIsFeatureEnabled(FeatureFlagKey.IS_AI_ENABLED);
const isApplicationEnabled = useIsFeatureEnabled(
FeatureFlagKey.IS_APPLICATION_ENABLED,
);
const {
canBeAssignedToAgents = false,
@@ -180,13 +177,6 @@ export const useSettingsRolePermissionFlagConfig = ({
if (permission.key === PermissionFlagType.AI_SETTINGS && !isAIEnabled) {
return false;
}
if (
permission.key === PermissionFlagType.APPLICATIONS &&
!isApplicationEnabled
) {
return false;
}
if (hasAssignmentCapabilities) {
if (canBeAssignedOnlyToAgents && !permission.isRelevantForAgents) {
return false;
@@ -209,6 +199,5 @@ export const useSettingsRolePermissionFlagConfig = ({
canBeAssignedToUsers,
canBeAssignedToApiKeys,
isAIEnabled,
isApplicationEnabled,
]);
};
@@ -86,19 +86,13 @@ export const SidePanelPageLayoutWidgetTypeSelect = () => {
const { removePageLayoutWidgetAndPreservePosition } =
useRemovePageLayoutWidgetAndPreservePosition(pageLayoutId);
const isApplicationEnabled = useIsFeatureEnabled(
FeatureFlagKey.IS_APPLICATION_ENABLED,
);
const isRecordTableWidgetEnabled = useIsFeatureEnabled(
FeatureFlagKey.IS_RECORD_TABLE_WIDGET_ENABLED,
);
const { data: frontComponentsData } = useQuery<{
frontComponents: FrontComponent[];
}>(FIND_MANY_FRONT_COMPONENTS, {
skip: !isApplicationEnabled,
});
}>(FIND_MANY_FRONT_COMPONENTS);
const frontComponents = frontComponentsData?.frontComponents ?? [];
@@ -288,7 +282,7 @@ export const SidePanelPageLayoutWidgetTypeSelect = () => {
</SelectableListItem>
</SidePanelGroup>
{isApplicationEnabled && frontComponentsWithSelectItemId.length > 0 && (
{frontComponentsWithSelectItemId.length > 0 && (
<SidePanelGroup heading={t`Front Components`}>
{frontComponentsWithSelectItemId.map(
({ frontComponent, selectItemId }) => (