diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb
index 0e4aeaae20d628db07e099a673a9b1dac1e8ff3b..0fdb8b0726047ae03ed6b29880f765f08b4a0ae5 100644
--- a/app/helpers/groups_helper.rb
+++ b/app/helpers/groups_helper.rb
@@ -1,14 +1,6 @@
 # frozen_string_literal: true
 
 module GroupsHelper
-  def group_sidebar_links
-    @group_sidebar_links ||= get_group_sidebar_links
-  end
-
-  def group_sidebar_link?(link)
-    group_sidebar_links.include?(link)
-  end
-
   def can_change_group_visibility_level?(group)
     can?(current_user, :change_visibility_level, group)
   end
@@ -33,20 +25,6 @@ def can_admin_group_member?(group)
     Ability.allowed?(current_user, :admin_group_member, group)
   end
 
-  def group_issues_count(state:)
-    IssuesFinder
-      .new(current_user, group_id: @group.id, state: state, non_archived: true, include_subgroups: true)
-      .execute
-      .count
-  end
-
-  def group_merge_requests_count(state:)
-    MergeRequestsFinder
-      .new(current_user, group_id: @group.id, state: state, non_archived: true, include_subgroups: true)
-      .execute
-      .count
-  end
-
   def group_dependency_proxy_image_prefix(group)
     # The namespace path can include uppercase letters, which
     # Docker doesn't allow. The proxy expects it to be downcased.
@@ -181,36 +159,6 @@ def multiple_members?(group)
     group.member_count > 1 || group.members_with_parents.count > 1
   end
 
-  def get_group_sidebar_links
-    links = [:overview, :group_members]
-
-    resources = [:activity, :issues, :boards, :labels, :milestones,
-                 :merge_requests]
-    links += resources.select do |resource|
-      can?(current_user, "read_group_#{resource}".to_sym, @group)
-    end
-
-    # TODO Proper policies, such as `read_group_runners, should be implemented per
-    # See https://gitlab.com/gitlab-org/gitlab/-/issues/334802
-    if can?(current_user, :admin_group, @group) && Feature.enabled?(:runner_list_group_view_vue_ui, @group, default_enabled: :yaml)
-      links << :runners
-    end
-
-    if can?(current_user, :read_cluster, @group)
-      links << :kubernetes
-    end
-
-    if can?(current_user, :admin_group, @group)
-      links << :settings
-    end
-
-    if can?(current_user, :read_wiki, @group)
-      links << :wiki
-    end
-
-    links
-  end
-
   def group_title_link(group, hidable: false, show_avatar: false, for_dropdown: false)
     link_to(group_path(group), class: "group-path #{'breadcrumb-item-text' unless for_dropdown} js-breadcrumb-item-text #{'hidable' if hidable}") do
       icon = group_icon(group, class: "avatar-tile", width: 15, height: 15) if (group.try(:avatar_url) || show_avatar) && !Rails.env.test?
diff --git a/app/views/layouts/nav/sidebar/_group.html.haml b/app/views/layouts/nav/sidebar/_group.html.haml
index 980730bc3be43af76372b1b9cf1042373f7fd50a..c2b50bc0e52f9d9d4fbb9d0cfdc0fa8255c0d588 100644
--- a/app/views/layouts/nav/sidebar/_group.html.haml
+++ b/app/views/layouts/nav/sidebar/_group.html.haml
@@ -1,3 +1 @@
--# We're migration the group sidebar to a logical model based structure. If you need to update
--# any of the existing menus, you can find them in app/views/layouts/nav/sidebar/_group_menus.html.haml.
 = render partial: 'shared/nav/sidebar', object: Sidebars::Groups::Panel.new(group_sidebar_context(@group, current_user))
diff --git a/app/views/layouts/nav/sidebar/_group_menus.html.haml b/app/views/layouts/nav/sidebar/_group_menus.html.haml
deleted file mode 100644
index 4c0ed6a888d470e7c0717c00844ef67200ce2235..0000000000000000000000000000000000000000
--- a/app/views/layouts/nav/sidebar/_group_menus.html.haml
+++ /dev/null
@@ -1 +0,0 @@
-= render 'shared/sidebar_toggle_button'
diff --git a/ee/app/helpers/ee/groups_helper.rb b/ee/app/helpers/ee/groups_helper.rb
index 56ea15185884e489e8464f100b90885594a6b3e5..3036c8179a401531a7485ae9de4d6519b8315d16 100644
--- a/ee/app/helpers/ee/groups_helper.rb
+++ b/ee/app/helpers/ee/groups_helper.rb
@@ -10,10 +10,6 @@ def size_limit_message_for_group(group)
       "Max size for repositories within this group #{show_lfs}. Can be overridden inside each project. For no limit, enter 0. To inherit the global value, leave blank."
     end
 
-    def group_path_params(group)
-      { group_id: group }
-    end
-
     override :remove_group_message
     def remove_group_message(group)
       return super unless group.licensed_feature_available?(:adjourned_deletion_for_projects_and_groups)
@@ -63,55 +59,5 @@ def show_delayed_project_removal_setting?(group)
     def show_product_purchase_success_alert?
       !params[:purchased_product].blank?
     end
-
-    private
-
-    def get_group_sidebar_links
-      links = super
-
-      resources = [:cycle_analytics, :merge_request_analytics, :repository_analytics]
-
-      links += resources.select do |resource|
-        can?(current_user, "read_group_#{resource}".to_sym, @group)
-      end
-
-      if can?(current_user, :read_group_contribution_analytics, @group) || show_promotions?
-        links << :contribution_analytics
-      end
-
-      if can?(current_user, :read_epic, @group)
-        links << :epics
-      end
-
-      if @group.licensed_feature_available?(:issues_analytics)
-        links << :analytics
-      end
-
-      if @group.insights_available?
-        links << :group_insights
-      end
-
-      if @group.licensed_feature_available?(:productivity_analytics) && can?(current_user, :view_productivity_analytics, @group)
-        links << :productivity_analytics
-      end
-
-      if ::Feature.enabled?(:group_iterations, @group, default_enabled: true) && @group.licensed_feature_available?(:iterations)
-        if ::Feature.enabled?(:iteration_cadences, @group, default_enabled: :yaml) && can?(current_user, :read_iteration_cadence, @group)
-          links << :iteration_cadences
-        elsif can?(current_user, :read_iteration, @group)
-          links << :iterations
-        end
-      end
-
-      if ::Feature.enabled?(:group_ci_cd_analytics_page, @group, default_enabled: true) && @group.licensed_feature_available?(:group_ci_cd_analytics) && can?(current_user, :view_group_ci_cd_analytics, @group)
-        links << :group_ci_cd_analytics
-      end
-
-      if can?(current_user, :view_group_devops_adoption, @group)
-        links << :group_devops_adoption
-      end
-
-      links
-    end
   end
 end
diff --git a/ee/app/views/layouts/nav/_issues_analytics_link.html.haml b/ee/app/views/layouts/nav/_issues_analytics_link.html.haml
deleted file mode 100644
index f6e20eed8cae24d3685dafaa5bf7913747cb503d..0000000000000000000000000000000000000000
--- a/ee/app/views/layouts/nav/_issues_analytics_link.html.haml
+++ /dev/null
@@ -1,5 +0,0 @@
-- if group_sidebar_link?(:analytics)
-  = nav_link(path: 'issues_analytics#show') do
-    = link_to group_issues_analytics_path(@group) do
-      %span
-        = _('Analytics')
diff --git a/ee/spec/helpers/ee/groups_helper_spec.rb b/ee/spec/helpers/ee/groups_helper_spec.rb
index 2812baccda2006f83124b99d3a39d4fbb9dde2ed..76fb3e7301847dc2a6d08b79aaa3b6f688d8db50 100644
--- a/ee/spec/helpers/ee/groups_helper_spec.rb
+++ b/ee/spec/helpers/ee/groups_helper_spec.rb
@@ -16,87 +16,6 @@
     group.add_owner(owner)
   end
 
-  describe '#group_sidebar_links' do
-    before do
-      allow(helper).to receive(:can?) { |*args| Ability.allowed?(*args) }
-      allow(helper).to receive(:show_promotions?) { false }
-    end
-
-    it 'shows the licensed features when they are available' do
-      stub_licensed_features(contribution_analytics: true,
-                             group_ci_cd_analytics: true,
-                             epics: true)
-
-      expect(helper.group_sidebar_links).to include(:contribution_analytics, :group_ci_cd_analytics, :epics)
-    end
-
-    it 'hides the licensed features when they are not available' do
-      stub_licensed_features(contribution_analytics: false,
-                             group_ci_cd_analytics: false,
-                             epics: false)
-
-      expect(helper.group_sidebar_links).not_to include(:contribution_analytics, :group_ci_cd_analytics, :epics)
-    end
-
-    context 'when contribution analytics is available' do
-      before do
-        stub_licensed_features(contribution_analytics: true)
-      end
-
-      context 'signed in user is a project member but not a member of the group' do
-        let(:current_user) { create(:user) }
-        let(:private_project) { create(:project, :private, group: group)}
-
-        it 'hides Contribution Analytics' do
-          expect(helper.group_sidebar_links).not_to include(:contribution_analytics)
-        end
-      end
-    end
-
-    context 'when the group_ci_cd_analytics_page feature flag is disabled' do
-      before do
-        stub_feature_flags(group_ci_cd_analytics_page: false)
-      end
-
-      it 'hides CI/CD Analytics' do
-        expect(helper.group_sidebar_links).not_to include(:group_ci_cd_analytics)
-      end
-    end
-
-    context 'when the user does not have permissions to view the CI/CD Analytics page' do
-      let(:current_user) { create(:user) }
-
-      before do
-        group.add_guest(current_user)
-      end
-
-      it 'hides CI/CD Analytics' do
-        expect(helper.group_sidebar_links).not_to include(:group_ci_cd_analytics)
-      end
-    end
-
-    context 'when iterations is available' do
-      before do
-        stub_licensed_features(iterations: true)
-        stub_feature_flags(iteration_cadences: false)
-      end
-
-      it 'shows iterations link' do
-        expect(helper.group_sidebar_links).to include(:iterations)
-      end
-
-      context 'when iteration_cadences is available' do
-        before do
-          stub_feature_flags(iteration_cadences: true)
-        end
-
-        it 'shows iterations link' do
-          expect(helper.group_sidebar_links).to include(:iteration_cadences)
-        end
-      end
-    end
-  end
-
   describe '#render_setting_to_allow_project_access_token_creation?' do
     context 'with self-managed' do
       let_it_be(:parent) { create(:group) }
diff --git a/lib/sidebars/groups/panel.rb b/lib/sidebars/groups/panel.rb
index 73b943c5655e246ed7d2c447630d1afe2dc34b60..6efe89d496ad220c6d05b477611e7a92c9fa8b28 100644
--- a/lib/sidebars/groups/panel.rb
+++ b/lib/sidebars/groups/panel.rb
@@ -16,11 +16,6 @@ def configure_menus
         add_menu(Sidebars::Groups::Menus::SettingsMenu.new(context))
       end
 
-      override :render_raw_menus_partial
-      def render_raw_menus_partial
-        'layouts/nav/sidebar/group_menus'
-      end
-
       override :aria_label
       def aria_label
         context.group.subgroup? ? _('Subgroup navigation') : _('Group navigation')
diff --git a/spec/helpers/groups_helper_spec.rb b/spec/helpers/groups_helper_spec.rb
index 42da1cb71f1c2205ec321596ec7fd245a89e9bbd..661b1816548722371600e733a53fbded6d29f0ff 100644
--- a/spec/helpers/groups_helper_spec.rb
+++ b/spec/helpers/groups_helper_spec.rb
@@ -267,61 +267,6 @@
     end
   end
 
-  describe '#group_sidebar_links' do
-    let_it_be(:group) { create(:group, :public) }
-    let_it_be(:user) { create(:user) }
-
-    before do
-      group.add_owner(user)
-      allow(helper).to receive(:current_user) { user }
-      allow(helper).to receive(:can?) { |*args| Ability.allowed?(*args) }
-      helper.instance_variable_set(:@group, group)
-    end
-
-    it 'returns all the expected links' do
-      links = [
-        :overview, :activity, :issues, :labels, :milestones, :merge_requests,
-        :runners, :group_members, :settings
-      ]
-
-      expect(helper.group_sidebar_links).to include(*links)
-    end
-
-    it 'excludes runners when the user cannot admin the group' do
-      expect(helper).to receive(:current_user) { user }
-      # TODO Proper policies, such as `read_group_runners, should be implemented per
-      # See https://gitlab.com/gitlab-org/gitlab/-/issues/334802
-      expect(helper).to receive(:can?).twice.with(user, :admin_group, group) { false }
-
-      expect(helper.group_sidebar_links).not_to include(:runners)
-    end
-
-    it 'excludes runners when the feature "runner_list_group_view_vue_ui" is disabled' do
-      stub_feature_flags(runner_list_group_view_vue_ui: false)
-
-      expect(helper.group_sidebar_links).not_to include(:runners)
-    end
-
-    it 'excludes settings when the user can admin the group' do
-      expect(helper).to receive(:current_user) { user }
-      expect(helper).to receive(:can?).twice.with(user, :admin_group, group) { false }
-
-      expect(helper.group_sidebar_links).not_to include(:settings)
-    end
-
-    it 'excludes cross project features when the user cannot read cross project' do
-      cross_project_features = [:activity, :issues, :labels, :milestones,
-                                :merge_requests]
-
-      allow(Ability).to receive(:allowed?).and_call_original
-      cross_project_features.each do |feature|
-        expect(Ability).to receive(:allowed?).with(user, "read_group_#{feature}".to_sym, group) { false }
-      end
-
-      expect(helper.group_sidebar_links).not_to include(*cross_project_features)
-    end
-  end
-
   describe '#parent_group_options' do
     let_it_be(:current_user) { create(:user) }
     let_it_be(:group) { create(:group, name: 'group') }