mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat: deprecate feature toggle variants at environment level (#7058)
This commit is contained in:
		
							parent
							
								
									85d3ccbd79
								
							
						
					
					
						commit
						88e3b1b79e
					
				@ -48,6 +48,8 @@ import { ReactComponent as ParentLinkIcon } from 'assets/icons/link-parent.svg';
 | 
				
			|||||||
import { ChildrenTooltip } from './FeatureOverview/FeatureOverviewMetaData/ChildrenTooltip';
 | 
					import { ChildrenTooltip } from './FeatureOverview/FeatureOverviewMetaData/ChildrenTooltip';
 | 
				
			||||||
import copy from 'copy-to-clipboard';
 | 
					import copy from 'copy-to-clipboard';
 | 
				
			||||||
import useToast from 'hooks/useToast';
 | 
					import useToast from 'hooks/useToast';
 | 
				
			||||||
 | 
					import { useUiFlag } from 'hooks/useUiFlag';
 | 
				
			||||||
 | 
					import type { IFeatureToggle } from 'interfaces/featureToggle';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const StyledHeader = styled('div')(({ theme }) => ({
 | 
					const StyledHeader = styled('div')(({ theme }) => ({
 | 
				
			||||||
    backgroundColor: theme.palette.background.paper,
 | 
					    backgroundColor: theme.palette.background.paper,
 | 
				
			||||||
@ -133,6 +135,14 @@ export const StyledLink = styled(Link)(({ theme }) => ({
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
}));
 | 
					}));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const useLegacyVariants = (environments: IFeatureToggle['environments']) => {
 | 
				
			||||||
 | 
					    const enableLegacyVariants = useUiFlag('enableLegacyVariants');
 | 
				
			||||||
 | 
					    const existingLegacyVariantsExist = environments.some(
 | 
				
			||||||
 | 
					        (environment) => environment.variants?.length,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    return enableLegacyVariants || existingLegacyVariantsExist;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const FeatureView = () => {
 | 
					export const FeatureView = () => {
 | 
				
			||||||
    const projectId = useRequiredPathParam('projectId');
 | 
					    const projectId = useRequiredPathParam('projectId');
 | 
				
			||||||
    const featureId = useRequiredPathParam('featureId');
 | 
					    const featureId = useRequiredPathParam('featureId');
 | 
				
			||||||
@ -157,6 +167,8 @@ export const FeatureView = () => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const basePath = `/projects/${projectId}/features/${featureId}`;
 | 
					    const basePath = `/projects/${projectId}/features/${featureId}`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const showLegacyVariants = useLegacyVariants(feature.environments);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const tabData = [
 | 
					    const tabData = [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            title: 'Overview',
 | 
					            title: 'Overview',
 | 
				
			||||||
@ -168,7 +180,15 @@ export const FeatureView = () => {
 | 
				
			|||||||
            path: `${basePath}/metrics`,
 | 
					            path: `${basePath}/metrics`,
 | 
				
			||||||
            name: 'Metrics',
 | 
					            name: 'Metrics',
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        { title: 'Variants', path: `${basePath}/variants`, name: 'Variants' },
 | 
					        ...(showLegacyVariants
 | 
				
			||||||
 | 
					            ? [
 | 
				
			||||||
 | 
					                  {
 | 
				
			||||||
 | 
					                      title: 'Variants',
 | 
				
			||||||
 | 
					                      path: `${basePath}/variants`,
 | 
				
			||||||
 | 
					                      name: 'Variants',
 | 
				
			||||||
 | 
					                  },
 | 
				
			||||||
 | 
					              ]
 | 
				
			||||||
 | 
					            : []),
 | 
				
			||||||
        { title: 'Settings', path: `${basePath}/settings`, name: 'Settings' },
 | 
					        { title: 'Settings', path: `${basePath}/settings`, name: 'Settings' },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            title: 'Event log',
 | 
					            title: 'Event log',
 | 
				
			||||||
 | 
				
			|||||||
@ -85,6 +85,7 @@ export type UiFlags = {
 | 
				
			|||||||
    projectsListNewCards?: boolean;
 | 
					    projectsListNewCards?: boolean;
 | 
				
			||||||
    newCreateProjectUI?: boolean;
 | 
					    newCreateProjectUI?: boolean;
 | 
				
			||||||
    manyStrategiesPagination?: boolean;
 | 
					    manyStrategiesPagination?: boolean;
 | 
				
			||||||
 | 
					    enableLegacyVariants?: boolean;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface IVersionInfo {
 | 
					export interface IVersionInfo {
 | 
				
			||||||
 | 
				
			|||||||
@ -93,6 +93,7 @@ exports[`should create default config 1`] = `
 | 
				
			|||||||
      "edgeBulkMetrics": false,
 | 
					      "edgeBulkMetrics": false,
 | 
				
			||||||
      "embedProxy": true,
 | 
					      "embedProxy": true,
 | 
				
			||||||
      "embedProxyFrontend": true,
 | 
					      "embedProxyFrontend": true,
 | 
				
			||||||
 | 
					      "enableLegacyVariants": false,
 | 
				
			||||||
      "enableLicense": false,
 | 
					      "enableLicense": false,
 | 
				
			||||||
      "enableLicenseChecker": false,
 | 
					      "enableLicenseChecker": false,
 | 
				
			||||||
      "encryptEmails": false,
 | 
					      "encryptEmails": false,
 | 
				
			||||||
 | 
				
			|||||||
@ -60,7 +60,8 @@ export type IFlagKey =
 | 
				
			|||||||
    | 'parseProjectFromSession'
 | 
					    | 'parseProjectFromSession'
 | 
				
			||||||
    | 'createProjectWithEnvironmentConfig'
 | 
					    | 'createProjectWithEnvironmentConfig'
 | 
				
			||||||
    | 'manyStrategiesPagination'
 | 
					    | 'manyStrategiesPagination'
 | 
				
			||||||
    | 'newCreateProjectUI';
 | 
					    | 'newCreateProjectUI'
 | 
				
			||||||
 | 
					    | 'enableLegacyVariants';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;
 | 
					export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -289,6 +290,10 @@ const flags: IFlags = {
 | 
				
			|||||||
        process.env.UNLEASH_EXPERIMENTAL_MANY_STRATEGIES_PAGINATION,
 | 
					        process.env.UNLEASH_EXPERIMENTAL_MANY_STRATEGIES_PAGINATION,
 | 
				
			||||||
        false,
 | 
					        false,
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
 | 
					    enableLegacyVariants: parseEnvVarBoolean(
 | 
				
			||||||
 | 
					        process.env.UNLEASH_EXPERIMENTAL_ENABLE_LEGACY_VARIANTS,
 | 
				
			||||||
 | 
					        false,
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const defaultExperimentalOptions: IExperimentalOptions = {
 | 
					export const defaultExperimentalOptions: IExperimentalOptions = {
 | 
				
			||||||
 | 
				
			|||||||
@ -55,6 +55,7 @@ process.nextTick(async () => {
 | 
				
			|||||||
                        parseProjectFromSession: true,
 | 
					                        parseProjectFromSession: true,
 | 
				
			||||||
                        createProjectWithEnvironmentConfig: true,
 | 
					                        createProjectWithEnvironmentConfig: true,
 | 
				
			||||||
                        manyStrategiesPagination: true,
 | 
					                        manyStrategiesPagination: true,
 | 
				
			||||||
 | 
					                        enableLegacyVariants: false,
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                authentication: {
 | 
					                authentication: {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,14 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
title: Feature Toggle Variants
 | 
					title: Feature Toggle Variants (deprecated)
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					:::warning
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Feature Toggle Variants at the environment level are deprecated in favor of the [strategy variants](./strategy-variants.md). 
 | 
				
			||||||
 | 
					Only features that have existing feature environment variants will keep them. 
 | 
				
			||||||
 | 
					If you'd like to keep the old variants in your hosted instance [contact us](https://slack.unleash.run) for further assistance.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:::info Availability
 | 
					:::info Availability
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Feature toggle variants** were first introduced in Unleash 3.2.
 | 
					**Feature toggle variants** were first introduced in Unleash 3.2.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user