diff --git a/ee/app/assets/javascripts/pages/groups/epics/index/index.js b/ee/app/assets/javascripts/pages/groups/epics/index/index.js
index 3c1dfb628c8283f942f40f038474c6b2b0248fb3..1dc2103f33c1ed3611441d6f1fc380b76fa17163 100644
--- a/ee/app/assets/javascripts/pages/groups/epics/index/index.js
+++ b/ee/app/assets/javascripts/pages/groups/epics/index/index.js
@@ -1,5 +1,15 @@
-import initEpicsList from 'ee/epics_list/epics_list_bundle';
-
-initEpicsList({
-  mountPointSelector: '#js-epics-list',
-});
+if (gon.features.workItemEpicsList && gon.features.namespaceLevelWorkItems) {
+  import(/* webpackChunkName: 'workItemsList' */ '~/work_items/list')
+    .then(({ mountWorkItemsListApp }) => {
+      mountWorkItemsListApp();
+    })
+    .catch(() => {});
+} else {
+  import(/* webpackChunkName: 'epicsList' */ 'ee/epics_list/epics_list_bundle')
+    .then(({ default: initEpicsList }) => {
+      initEpicsList({
+        mountPointSelector: '#js-epics-list',
+      });
+    })
+    .catch(() => {});
+}
diff --git a/ee/app/controllers/groups/epics_controller.rb b/ee/app/controllers/groups/epics_controller.rb
index 152f883b711c09bbf0d1f594bd6deeb39d508dac..53bef6b1d4427db6d9a0d3a5c53b2d6c716d5a4e 100644
--- a/ee/app/controllers/groups/epics_controller.rb
+++ b/ee/app/controllers/groups/epics_controller.rb
@@ -23,10 +23,14 @@ class Groups::EpicsController < Groups::ApplicationController
     push_force_frontend_feature_flag(:namespace_level_work_items, epic_work_items_enabled?)
   end
 
+  before_action only: :index do
+    push_frontend_feature_flag(:work_item_epics_list, @group)
+    push_force_frontend_feature_flag(:namespace_level_work_items, epic_work_items_enabled?)
+  end
+
   feature_category :portfolio_management
   urgency :default, [:show, :new, :realtime_changes]
   urgency :low, [:discussions]
-
   def show
     respond_to do |format|
       format.html do
@@ -42,6 +46,14 @@ def new
     @noteable = Epic.new
   end
 
+  def index
+    if Feature.enabled?(:work_item_epics_list, @group) && epic_work_items_enabled?
+      render 'work_items_index'
+    else
+      render 'index'
+    end
+  end
+
   def create
     @epic = ::Epics::CreateService.new(group: @group, current_user: current_user, params: epic_params).execute
 
diff --git a/ee/app/views/groups/epics/work_items_index.html.haml b/ee/app/views/groups/epics/work_items_index.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..707c8b83ed9ed435a3ba723dc222dd5610750b4b
--- /dev/null
+++ b/ee/app/views/groups/epics/work_items_index.html.haml
@@ -0,0 +1,4 @@
+- page_title _("Epics")
+- add_page_specific_style 'page_bundles/issuable_list'
+
+.js-work-items-list-root{ data: work_items_list_data(@group, current_user).merge(work_item_type: 'EPIC') }
diff --git a/ee/config/feature_flags/wip/work_item_epics_list.yml b/ee/config/feature_flags/wip/work_item_epics_list.yml
new file mode 100644
index 0000000000000000000000000000000000000000..771ce66a64eaea65f8b40b86249f9b7586aad8c4
--- /dev/null
+++ b/ee/config/feature_flags/wip/work_item_epics_list.yml
@@ -0,0 +1,9 @@
+---
+name: work_item_epics_list
+feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/471578
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/159604
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/473073
+milestone: '17.3'
+group: group::product planning
+type: wip
+default_enabled: false
diff --git a/ee/spec/features/epics/delete_epic_spec.rb b/ee/spec/features/epics/delete_epic_spec.rb
index fba5ebdaf823ac7b21d852f42e249497aebb1858..e57b8780a4a16eb2ebef7099358f586e4e32cdb3 100644
--- a/ee/spec/features/epics/delete_epic_spec.rb
+++ b/ee/spec/features/epics/delete_epic_spec.rb
@@ -12,7 +12,8 @@
 
   before do
     stub_licensed_features(epics: true)
-    stub_feature_flags(work_item_epics: false, namespace_level_work_items: false, work_item_epics_rollout: false)
+    stub_feature_flags(work_item_epics: false, namespace_level_work_items: false, work_item_epics_rollout: false,
+      work_item_epics_list: false)
 
     sign_in(user)
   end
diff --git a/ee/spec/features/epics/epics_list_spec.rb b/ee/spec/features/epics/epics_list_spec.rb
index b5b96cb230faa19f5a49e90448266975131dd5a3..a0e376ef56f03d6a082195be2ffab27bac7ba075 100644
--- a/ee/spec/features/epics/epics_list_spec.rb
+++ b/ee/spec/features/epics/epics_list_spec.rb
@@ -15,7 +15,7 @@
 
   before do
     stub_licensed_features(epics: true)
-    stub_feature_flags(work_item_epics: false, namespace_level_work_items: false, work_item_epics_rollout: false)
+    stub_feature_flags(work_item_epics: false, namespace_level_work_items: false, work_item_epics_rollout: false, work_item_epics_list: false)
 
     sign_in(user)
   end
@@ -223,6 +223,37 @@
           end
         end
       end
+
+      context 'when work_item_epics_list is enabled' do
+        let_it_be(:epic_work_item_1) do
+          create(:work_item, :epic_with_legacy_epic, namespace: group, title: "WorkItem Epic 1", assignees: [user])
+        end
+
+        let_it_be(:epic_work_item_2) do
+          create(:work_item, :epic_with_legacy_epic, namespace: group, title: "WorkItem Epic 2", assignees: [user])
+        end
+
+        before do
+          stub_feature_flags(work_item_epics: true, work_item_epics_rollout: true, work_item_epics_list: true)
+        end
+
+        it 'renders work item epics' do
+          visit group_epics_path(group)
+
+          # We create a synced epic work item for each epic and legacy epic for each WI epic.
+          # We therefore expect 6 epics (4 legacy epics and their synced work item + 2 work item epics)
+          expect(page).to have_selector('.issue', count: 6)
+          expect(page).to have_link(epic_work_item_1.title)
+          expect(page).to have_link(epic_work_item_2.title)
+        end
+
+        it 'displays epic assignees' do
+          visit group_epics_path(group)
+
+          expect(page.find("#issuable_#{epic_work_item_1.id}")).to have_link("Assigned to #{user.name}")
+          expect(page.find("#issuable_#{epic_work_item_2.id}")).to have_link("Assigned to #{user.name}")
+        end
+      end
     end
 
     describe 'within a sub-group group' do