diff --git a/app/finders/template_finder.rb b/app/finders/template_finder.rb
index b82b601541c53f908f4d3c2dea24ed1014b07133..c6c5c30cbf736557f835c3dcde687e7b72429fb2 100644
--- a/app/finders/template_finder.rb
+++ b/app/finders/template_finder.rb
@@ -16,16 +16,27 @@ class << self
     def build(type, project, params = {})
       if type.to_s == 'licenses'
         LicenseTemplateFinder.new(project, params) # rubocop: disable CodeReuse/Finder
-      else
+      elsif type_allowed?(type)
         new(type, project, params)
       end
     end
 
     def all_template_names(project, type)
-      return {} if !VENDORED_TEMPLATES.key?(type.to_s) && type.to_s != 'licenses'
+      return {} unless type_allowed?(type)
 
       build(type, project).template_names
     end
+
+    def type_allowed?(type)
+      case type.to_s
+      when 'licenses'
+        true
+      when 'metrics_dashboard_ymls'
+        !Feature.enabled?(:remove_monitor_metrics)
+      else
+        VENDORED_TEMPLATES.key?(type)
+      end
+    end
   end
 
   attr_reader :type, :project, :params
diff --git a/app/models/blob_viewer/metrics_dashboard_yml.rb b/app/models/blob_viewer/metrics_dashboard_yml.rb
index 4b7a178566cb28fd63d54361c35b61ff2e276fdf..b63f30221989955ec8c7a4874b0f9ed2f6d80f5b 100644
--- a/app/models/blob_viewer/metrics_dashboard_yml.rb
+++ b/app/models/blob_viewer/metrics_dashboard_yml.rb
@@ -11,6 +11,10 @@ class MetricsDashboardYml < Base
     self.file_types = %i(metrics_dashboard)
     self.binary = false
 
+    def self.can_render?(blob, verify_binary: true)
+      super && !Feature.enabled?(:remove_monitor_metrics)
+    end
+
     def valid?
       errors.blank?
     end
diff --git a/lib/api/project_templates.rb b/lib/api/project_templates.rb
index 8ec67988e399d826d8ed26914e39686118ae1cf1..2360a7e6b2a0de6c7124d805031a9b1f5baef702 100644
--- a/lib/api/project_templates.rb
+++ b/lib/api/project_templates.rb
@@ -32,6 +32,8 @@ class ProjectTemplates < ::API::Base
         use :pagination
       end
       get ':id/templates/:type' do
+        bad_request! if params[:type] == 'metrics_dashboard_ymls' && Feature.enabled?(:remove_monitor_metrics)
+
         templates = TemplateFinder.all_template_names(user_project, params[:type]).values.flatten
 
         present paginate(::Kaminari.paginate_array(templates)), with: Entities::TemplatesList
@@ -60,6 +62,8 @@ class ProjectTemplates < ::API::Base
       end
 
       get ':id/templates/:type/:name', requirements: TEMPLATE_NAMES_ENDPOINT_REQUIREMENTS do
+        bad_request! if params[:type] == 'metrics_dashboard_ymls' && Feature.enabled?(:remove_monitor_metrics)
+
         begin
           template = TemplateFinder.build(
             params[:type],
diff --git a/spec/features/projects/blobs/blob_show_spec.rb b/spec/features/projects/blobs/blob_show_spec.rb
index 74e5dc9f8c30c82e59df897039687adde5f81380..cd1dde55e307249e41cf218ca0555e64c7952bde 100644
--- a/spec/features/projects/blobs/blob_show_spec.rb
+++ b/spec/features/projects/blobs/blob_show_spec.rb
@@ -580,7 +580,11 @@ def switch_ref_to(ref_name)
     end
 
     describe '.gitlab/dashboards/custom-dashboard.yml' do
+      let(:remove_monitor_metrics) { false }
+
       before do
+        stub_feature_flags(remove_monitor_metrics: remove_monitor_metrics)
+
         project.add_maintainer(project.creator)
 
         Files::CreateService.new(
@@ -608,6 +612,15 @@ def switch_ref_to(ref_name)
             expect(page).to have_link('Learn more')
           end
         end
+
+        context 'when metrics dashboard feature is unavailable' do
+          let(:remove_monitor_metrics) { true }
+
+          it 'displays the blob without an auxiliary viewer' do
+            expect(page).to have_content('Environment metrics')
+            expect(page).not_to have_content('Metrics Dashboard YAML definition', wait: 0)
+          end
+        end
       end
 
       context 'invalid dashboard file' do
diff --git a/spec/finders/template_finder_spec.rb b/spec/finders/template_finder_spec.rb
index 21fea7863ffc48b2b6404bec842cadad9b35a2fc..c466f533a614b8eb23b53dd215e9dc44e8505813 100644
--- a/spec/finders/template_finder_spec.rb
+++ b/spec/finders/template_finder_spec.rb
@@ -103,6 +103,10 @@
   describe '#build' do
     let(:project) { build_stubbed(:project) }
 
+    before do
+      stub_feature_flags(remove_monitor_metrics: false)
+    end
+
     where(:type, :expected_class) do
       :dockerfiles    | described_class
       :gitignores     | described_class
@@ -119,6 +123,16 @@
       it { is_expected.to be_a(expected_class) }
       it { expect(finder.project).to eq(project) }
     end
+
+    context 'when metrics dashboard is unavailable' do
+      before do
+        stub_feature_flags(remove_monitor_metrics: true)
+      end
+
+      subject(:finder) { described_class.build(:metrics_dashboard_ymls, project) }
+
+      it { is_expected.to be_nil }
+    end
   end
 
   describe '#execute' do
diff --git a/spec/models/blob_viewer/metrics_dashboard_yml_spec.rb b/spec/models/blob_viewer/metrics_dashboard_yml_spec.rb
index d28fa0bbe97c4415cf8be48c579c5549cc219fb5..c9ac13eefc094324959b74772fbce9a78b62e2f3 100644
--- a/spec/models/blob_viewer/metrics_dashboard_yml_spec.rb
+++ b/spec/models/blob_viewer/metrics_dashboard_yml_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe BlobViewer::MetricsDashboardYml do
+RSpec.describe BlobViewer::MetricsDashboardYml, feature_category: :metrics do
   include FakeBlobHelpers
   include RepoHelpers
 
@@ -119,4 +119,18 @@
       expect(viewer.errors).to eq ["YAML syntax: The parsed YAML is too big"]
     end
   end
+
+  describe '.can_render?' do
+    subject { described_class.can_render?(blob) }
+
+    it { is_expected.to be false }
+
+    context 'when metrics dashboard feature is available' do
+      before do
+        stub_feature_flags(remove_monitor_metrics: false)
+      end
+
+      it { is_expected.to be true }
+    end
+  end
 end
diff --git a/spec/requests/api/project_templates_spec.rb b/spec/requests/api/project_templates_spec.rb
index 38d6a05a10440b281fe723763460f6e4dd865b34..91e5ed76c37a03ceb01d8164aca35f7222965bbe 100644
--- a/spec/requests/api/project_templates_spec.rb
+++ b/spec/requests/api/project_templates_spec.rb
@@ -10,6 +10,7 @@
   let(:url_encoded_path) { "#{public_project.namespace.path}%2F#{public_project.path}" }
 
   before do
+    stub_feature_flags(remove_monitor_metrics: false)
     private_project.add_developer(developer)
   end
 
@@ -71,6 +72,18 @@
       expect(json_response).to satisfy_one { |template| template['key'] == 'Default' }
     end
 
+    context 'when metrics dashboard feature is unavailable' do
+      before do
+        stub_feature_flags(remove_monitor_metrics: true)
+      end
+
+      it 'returns 400 bad request like other unknown types' do
+        get api("/projects/#{public_project.id}/templates/metrics_dashboard_ymls")
+
+        expect(response).to have_gitlab_http_status(:bad_request)
+      end
+    end
+
     it 'returns issue templates' do
       get api("/projects/#{private_project.id}/templates/issues", developer)
 
@@ -171,6 +184,18 @@
       expect(json_response['name']).to eq('Default')
     end
 
+    context 'when metrics dashboard feature is unavailable' do
+      before do
+        stub_feature_flags(remove_monitor_metrics: true)
+      end
+
+      it 'returns 400 bad request like other unknown types' do
+        get api("/projects/#{public_project.id}/templates/metrics_dashboard_ymls/Default")
+
+        expect(response).to have_gitlab_http_status(:bad_request)
+      end
+    end
+
     it 'returns a specific license' do
       get api("/projects/#{public_project.id}/templates/licenses/mit")