diff --git a/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectFeatureToggles.test.tsx b/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectFeatureToggles.test.tsx
index 19f4441408..bcd455c3e8 100644
--- a/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectFeatureToggles.test.tsx
+++ b/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectFeatureToggles.test.tsx
@@ -207,3 +207,34 @@ test('Project is not onboarded', async () => {
);
await screen.findByText('Welcome to your project');
});
+
+test('renders lifecycle filters', async () => {
+ setupApi();
+
+ render(
+
+
+ }
+ />
+ ,
+ {
+ route: '/projects/default',
+ },
+ );
+
+ const addFilter = await screen.findByText('Filter');
+ fireEvent.click(addFilter);
+
+ const lifecycleFilter = await screen.findByText('Lifecycle stage');
+ fireEvent.click(lifecycleFilter);
+
+ await screen.findByText('Define');
+ await screen.findByText('Develop');
+ await screen.findByText('Rollout production');
+ await screen.findByText('Cleanup');
+});
diff --git a/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectFeatureToggles.tsx b/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectFeatureToggles.tsx
index cca3070422..03a6127891 100644
--- a/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectFeatureToggles.tsx
+++ b/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectFeatureToggles.tsx
@@ -113,6 +113,7 @@ export const ProjectFeatureToggles = ({
state: tableState.state,
createdBy: tableState.createdBy,
archived: tableState.archived,
+ lifecycle: tableState.lifecycle,
};
const { favorite, unfavorite } = useFavoriteFeaturesApi();
diff --git a/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectOverviewFilters.tsx b/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectOverviewFilters.tsx
index 8380743795..017ca188cc 100644
--- a/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectOverviewFilters.tsx
+++ b/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/ProjectOverviewFilters.tsx
@@ -111,6 +111,19 @@ export const ProjectOverviewFilters: VFC = ({
singularOperators: ['IS'],
pluralOperators: ['IS_ANY_OF'],
},
+ {
+ label: 'Lifecycle stage',
+ icon: 'model_training',
+ options: [
+ { label: 'Define', value: 'initial' },
+ { label: 'Develop', value: 'pre-live' },
+ { label: 'Rollout production', value: 'live' },
+ { label: 'Cleanup', value: 'completed' },
+ ],
+ filterKey: 'lifecycle',
+ singularOperators: ['IS', 'IS_NOT'],
+ pluralOperators: ['IS_ANY_OF', 'IS_NONE_OF'],
+ },
];
setAvailableFilters(availableFilters);
diff --git a/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/useProjectFeatureSearch.ts b/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/useProjectFeatureSearch.ts
index 29976c741f..c1cfb6e969 100644
--- a/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/useProjectFeatureSearch.ts
+++ b/frontend/src/component/project/Project/PaginatedProjectFeatureToggles/useProjectFeatureSearch.ts
@@ -41,6 +41,7 @@ export const useProjectFeatureSearch = (
type: FilterItemParam,
createdBy: FilterItemParam,
archived: FilterItemParam,
+ lifecycle: FilterItemParam,
};
const [tableState, setTableState] = usePersistentTableState(
`${storageKey}-${projectId}`,