diff --git a/flow/embedded_views.h b/flow/embedded_views.h
index cc252ae..1839a8a 100644
--- a/flow/embedded_views.h
+++ b/flow/embedded_views.h
@@ -248,11 +248,6 @@
   // Clippings are ignored.
   const SkRect& finalBoundingRect() const { return final_bounding_rect_; }
 
-  // Pushes the stored DlImageFilter object to the mutators stack.
-  void PushImageFilter(std::shared_ptr<const DlImageFilter> filter) {
-    mutators_stack_.PushBackdropFilter(filter);
-  }
-
   // Whether the embedder should construct DisplayList objects to hold the
   // rendering commands for each between-view slice of the layer tree.
   bool display_list_enabled() const { return display_list_enabled_; }
@@ -444,18 +439,6 @@
   // 'EndFrame', otherwise returns false.
   bool GetUsedThisFrame() const { return used_this_frame_; }
 
-  // Pushes the platform view id of a visited platform view to a list of
-  // visited platform views.
-  virtual void PushVisitedPlatformView(int64_t view_id) {}
-
-  // Pushes a DlImageFilter object to each platform view within a list of
-  // visited platform views.
-  //
-  // See also: |PushVisitedPlatformView| for pushing platform view ids to the
-  // visited platform views list.
-  virtual void PushFilterToVisitedPlatformViews(
-      std::shared_ptr<const DlImageFilter> filter) {}
-
  private:
   bool used_this_frame_ = false;
 
diff --git a/flow/layers/backdrop_filter_layer.cc b/flow/layers/backdrop_filter_layer.cc
index 9f67b74..d52ac78 100644
--- a/flow/layers/backdrop_filter_layer.cc
+++ b/flow/layers/backdrop_filter_layer.cc
@@ -43,9 +43,6 @@
                                   const SkMatrix& matrix) {
   Layer::AutoPrerollSaveLayerState save =
       Layer::AutoPrerollSaveLayerState::Create(context, true, bool(filter_));
-  if (context->view_embedder != nullptr) {
-    context->view_embedder->PushFilterToVisitedPlatformViews(filter_);
-  }
   SkRect child_paint_bounds = SkRect::MakeEmpty();
   PrerollChildren(context, matrix, &child_paint_bounds);
   child_paint_bounds.join(context->cull_rect);
diff --git a/flow/layers/platform_view_layer.cc b/flow/layers/platform_view_layer.cc
index a86886f..8a46cbb 100644
--- a/flow/layers/platform_view_layer.cc
+++ b/flow/layers/platform_view_layer.cc
@@ -29,7 +29,6 @@
                                            context->display_list_enabled);
   context->view_embedder->PrerollCompositeEmbeddedView(view_id_,
                                                        std::move(params));
-  context->view_embedder->PushVisitedPlatformView(view_id_);
 }
 
 void PlatformViewLayer::Paint(PaintContext& context) const {
diff --git a/flow/mutators_stack_unittests.cc b/flow/mutators_stack_unittests.cc
index c93838c..a460125 100644
--- a/flow/mutators_stack_unittests.cc
+++ b/flow/mutators_stack_unittests.cc
@@ -163,8 +163,6 @@
   stack.PushClipPath(path);
   int alpha = 240;
   stack.PushOpacity(alpha);
-  auto filter = std::make_shared<DlBlurImageFilter>(5, 5, DlTileMode::kClamp);
-  stack.PushBackdropFilter(filter);
 
   MutatorsStack stackOther;
   SkMatrix matrixOther = SkMatrix::Scale(1, 1);
@@ -177,9 +175,6 @@
   stackOther.PushClipPath(otherPath);
   int otherAlpha = 240;
   stackOther.PushOpacity(otherAlpha);
-  auto otherFilter =
-      std::make_shared<DlBlurImageFilter>(5, 5, DlTileMode::kClamp);
-  stackOther.PushBackdropFilter(otherFilter);
 
   ASSERT_TRUE(stack == stackOther);
 }
@@ -209,11 +204,6 @@
   int alpha = 240;
   Mutator mutator5 = Mutator(alpha);
   ASSERT_TRUE(mutator5.GetType() == MutatorType::kOpacity);
-
-  auto filter = std::make_shared<DlBlurImageFilter>(5, 5, DlTileMode::kClamp);
-  Mutator mutator6 = Mutator(filter);
-  ASSERT_TRUE(mutator6.GetType() == MutatorType::kBackdropFilter);
-  ASSERT_TRUE(mutator6.GetFilter() == *filter);
 }
 
 TEST(Mutator, CopyConstructor) {
@@ -242,11 +232,6 @@
   Mutator mutator5 = Mutator(alpha);
   Mutator copy5 = Mutator(mutator5);
   ASSERT_TRUE(mutator5 == copy5);
-
-  auto filter = std::make_shared<DlBlurImageFilter>(5, 5, DlTileMode::kClamp);
-  Mutator mutator6 = Mutator(filter);
-  Mutator copy6 = Mutator(mutator6);
-  ASSERT_TRUE(mutator6 == copy6);
 }
 
 TEST(Mutator, Equality) {
@@ -275,11 +260,6 @@
   Mutator mutator5 = Mutator(alpha);
   Mutator otherMutator5 = Mutator(alpha);
   ASSERT_TRUE(mutator5 == otherMutator5);
-
-  auto filter = std::make_shared<DlBlurImageFilter>(5, 5, DlTileMode::kClamp);
-  Mutator mutator6 = Mutator(filter);
-  Mutator otherMutator6 = Mutator(filter);
-  ASSERT_TRUE(mutator6 == otherMutator6);
 }
 
 TEST(Mutator, UnEquality) {
@@ -295,13 +275,6 @@
   Mutator mutator2 = Mutator(alpha);
   Mutator otherMutator2 = Mutator(alpha2);
   ASSERT_TRUE(mutator2 != otherMutator2);
-
-  auto filter = std::make_shared<DlBlurImageFilter>(5, 5, DlTileMode::kClamp);
-  auto filter2 =
-      std::make_shared<DlBlurImageFilter>(10, 10, DlTileMode::kClamp);
-  Mutator mutator3 = Mutator(filter);
-  Mutator otherMutator3 = Mutator(filter2);
-  ASSERT_TRUE(mutator3 != otherMutator3);
 }
 
 }  // namespace testing
diff --git a/shell/common/shell_test_external_view_embedder.cc b/shell/common/shell_test_external_view_embedder.cc
index 579f682..a366e6f 100644
--- a/shell/common/shell_test_external_view_embedder.cc
+++ b/shell/common/shell_test_external_view_embedder.cc
@@ -28,14 +28,6 @@
   return last_submitted_frame_size_;
 }
 
-std::vector<int64_t> ShellTestExternalViewEmbedder::GetVisitedPlatformViews() {
-  return visited_platform_views_;
-}
-
-MutatorsStack ShellTestExternalViewEmbedder::GetStack(int64_t view_id) {
-  return mutators_stacks_[view_id];
-}
-
 // |ExternalViewEmbedder|
 void ShellTestExternalViewEmbedder::CancelFrame() {}
 
@@ -49,16 +41,7 @@
 // |ExternalViewEmbedder|
 void ShellTestExternalViewEmbedder::PrerollCompositeEmbeddedView(
     int view_id,
-    std::unique_ptr<EmbeddedViewParams> params) {
-  SkRect view_bounds = SkRect::Make(frame_size_);
-  std::unique_ptr<EmbedderViewSlice> view;
-  if (params->display_list_enabled()) {
-    view = std::make_unique<DisplayListEmbedderViewSlice>(view_bounds);
-  } else {
-    view = std::make_unique<SkPictureEmbedderViewSlice>(view_bounds);
-  }
-  slices_.insert_or_assign(view_id, std::move(view));
-}
+    std::unique_ptr<EmbeddedViewParams> params) {}
 
 // |ExternalViewEmbedder|
 PostPrerollResult ShellTestExternalViewEmbedder::PostPrerollAction(
@@ -79,24 +62,9 @@
 }
 
 // |ExternalViewEmbedder|
-void ShellTestExternalViewEmbedder::PushVisitedPlatformView(int64_t view_id) {
-  visited_platform_views_.push_back(view_id);
-}
-
-// |ExternalViewEmbedder|
-void ShellTestExternalViewEmbedder::PushFilterToVisitedPlatformViews(
-    std::shared_ptr<const DlImageFilter> filter) {
-  for (int64_t id : visited_platform_views_) {
-    EmbeddedViewParams params = current_composition_params_[id];
-    params.PushImageFilter(filter);
-    current_composition_params_[id] = params;
-    mutators_stacks_[id] = params.mutatorsStack();
-  }
-}
-
 EmbedderPaintContext ShellTestExternalViewEmbedder::CompositeEmbeddedView(
     int view_id) {
-  return {slices_[view_id]->canvas(), slices_[view_id]->builder()};
+  return {nullptr, nullptr};
 }
 
 // |ExternalViewEmbedder|
diff --git a/shell/common/shell_test_external_view_embedder.h b/shell/common/shell_test_external_view_embedder.h
index 583a091..1bb70fd 100644
--- a/shell/common/shell_test_external_view_embedder.h
+++ b/shell/common/shell_test_external_view_embedder.h
@@ -7,7 +7,6 @@
 
 #include "flutter/flow/embedded_views.h"
 #include "flutter/fml/raster_thread_merger.h"
-#include "third_party/skia/include/core/SkPictureRecorder.h"
 
 namespace flutter {
 
@@ -33,15 +32,9 @@
   // the external view embedder.
   int GetSubmittedFrameCount();
 
-  // Returns the size of last submitted frame surface.
+  // Returns the size of last submitted frame surface
   SkISize GetLastSubmittedFrameSize();
 
-  // Returns the mutators stack for the given platform view.
-  MutatorsStack GetStack(int64_t);
-
-  // Returns the list of visited platform views.
-  std::vector<int64_t> GetVisitedPlatformViews();
-
  private:
   // |ExternalViewEmbedder|
   void CancelFrame() override;
@@ -72,13 +65,6 @@
   EmbedderPaintContext CompositeEmbeddedView(int view_id) override;
 
   // |ExternalViewEmbedder|
-  void PushVisitedPlatformView(int64_t view_id) override;
-
-  // |ExternalViewEmbedder|
-  void PushFilterToVisitedPlatformViews(
-      std::shared_ptr<const DlImageFilter> filter) override;
-
-  // |ExternalViewEmbedder|
   void SubmitFrame(GrDirectContext* context,
                    std::unique_ptr<SurfaceFrame> frame) override;
 
@@ -98,11 +84,7 @@
   PostPrerollResult post_preroll_result_;
 
   bool support_thread_merging_;
-  SkISize frame_size_;
-  std::map<int64_t, std::unique_ptr<EmbedderViewSlice>> slices_;
-  std::map<int64_t, MutatorsStack> mutators_stacks_;
-  std::map<int64_t, EmbeddedViewParams> current_composition_params_;
-  std::vector<int64_t> visited_platform_views_;
+
   std::atomic<int> submitted_frame_count_;
   std::atomic<SkISize> last_submitted_frame_size_;
 
diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc
index 124dbf5..7bd244d 100644
--- a/shell/common/shell_unittests.cc
+++ b/shell/common/shell_unittests.cc
@@ -13,10 +13,8 @@
 
 #include "assets/directory_asset_bundle.h"
 #include "common/graphics/persistent_cache.h"
-#include "flutter/flow/layers/backdrop_filter_layer.h"
 #include "flutter/flow/layers/display_list_layer.h"
 #include "flutter/flow/layers/layer_raster_cache_item.h"
-#include "flutter/flow/layers/platform_view_layer.h"
 #include "flutter/flow/layers/transform_layer.h"
 #include "flutter/fml/command_line.h"
 #include "flutter/fml/dart/dart_converter.h"
@@ -767,66 +765,12 @@
 
   PumpOneFrame(shell.get(), 100, 100, builder);
   end_frame_latch.Wait();
+
   ASSERT_TRUE(end_frame_called);
 
   DestroyShell(std::move(shell));
 }
 
-TEST_F(ShellTest, PushBackdropFilterToVisitedPlatformViews) {
-  auto settings = CreateSettingsForFixture();
-  fml::AutoResetWaitableEvent end_frame_latch;
-  bool end_frame_called = false;
-  auto end_frame_callback =
-      [&](bool should_resubmit_frame,
-          fml::RefPtr<fml::RasterThreadMerger> raster_thread_merger) {
-        ASSERT_TRUE(raster_thread_merger.get() == nullptr);
-        ASSERT_FALSE(should_resubmit_frame);
-        end_frame_called = true;
-        end_frame_latch.Signal();
-      };
-  auto external_view_embedder = std::make_shared<ShellTestExternalViewEmbedder>(
-      end_frame_callback, PostPrerollResult::kResubmitFrame, false);
-  auto shell = CreateShell(std::move(settings), GetTaskRunnersForFixture(),
-                           false, external_view_embedder);
-
-  // Create the surface needed by rasterizer
-  PlatformViewNotifyCreated(shell.get());
-
-  auto configuration = RunConfiguration::InferFromSettings(settings);
-  configuration.SetEntrypoint("emptyMain");
-
-  RunEngine(shell.get(), std::move(configuration));
-
-  LayerTreeBuilder builder = [&](std::shared_ptr<ContainerLayer> root) {
-    auto platform_view_layer = std::make_shared<PlatformViewLayer>(
-        SkPoint::Make(10, 10), SkSize::Make(10, 10), 50);
-    root->Add(platform_view_layer);
-    auto filter = std::make_shared<DlBlurImageFilter>(5, 5, DlTileMode::kClamp);
-    auto backdrop_filter_layer =
-        std::make_shared<BackdropFilterLayer>(filter, DlBlendMode::kSrcOver);
-    root->Add(backdrop_filter_layer);
-    auto platform_view_layer2 = std::make_shared<PlatformViewLayer>(
-        SkPoint::Make(10, 10), SkSize::Make(10, 10), 75);
-    backdrop_filter_layer->Add(platform_view_layer2);
-  };
-
-  PumpOneFrame(shell.get(), 100, 100, builder);
-  end_frame_latch.Wait();
-  ASSERT_EQ(external_view_embedder->GetVisitedPlatformViews().size(),
-            (const unsigned long)2);
-  ASSERT_EQ(external_view_embedder->GetVisitedPlatformViews()[0], 50);
-  ASSERT_EQ(external_view_embedder->GetVisitedPlatformViews()[1], 75);
-  ASSERT_TRUE(external_view_embedder->GetStack(75).is_empty());
-  ASSERT_FALSE(external_view_embedder->GetStack(50).is_empty());
-
-  auto filter = DlBlurImageFilter(5, 5, DlTileMode::kClamp);
-  auto mutator = *external_view_embedder->GetStack(50).Begin();
-  ASSERT_EQ(mutator->GetType(), MutatorType::kBackdropFilter);
-  ASSERT_EQ(mutator->GetFilter(), filter);
-
-  DestroyShell(std::move(shell));
-}
-
 // TODO(https://github.com/flutter/flutter/issues/59816): Enable on fuchsia.
 TEST_F(ShellTest,
 #if defined(OS_FUCHSIA)
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm
index 9987fe6..bea1225 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews.mm
@@ -318,15 +318,6 @@
   }
 }
 
-void FlutterPlatformViewsController::PushFilterToVisitedPlatformViews(
-    std::shared_ptr<const DlImageFilter> filter) {
-  for (int64_t id : visited_platform_views_) {
-    EmbeddedViewParams params = current_composition_params_[id];
-    params.PushImageFilter(filter);
-    current_composition_params_[id] = params;
-  }
-}
-
 void FlutterPlatformViewsController::PrerollCompositeEmbeddedView(
     int view_id,
     std::unique_ptr<EmbeddedViewParams> params) {
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h
index c7877dc..0a2e134 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h
+++ b/shell/platform/darwin/ios/framework/Source/FlutterPlatformViews_Internal.h
@@ -186,12 +186,6 @@
   // responder. Returns -1 if no such platform view is found.
   long FindFirstResponderPlatformViewId();
 
-  // Pushes backdrop filter mutation to the mutator stack of each visited platform view.
-  void PushFilterToVisitedPlatformViews(std::shared_ptr<const DlImageFilter> filter);
-
-  // Pushes the view id of a visted platform view to the list of visied platform views.
-  void PushVisitedPlatformView(int64_t view_id) { visited_platform_views_.push_back(view_id); }
-
  private:
   static const size_t kMaxLayerAllocations = 2;
 
@@ -299,9 +293,6 @@
   // The last ID in this vector belond to the that is composited on top of all others.
   std::vector<int64_t> composition_order_;
 
-  // A vector of visited platform view IDs.
-  std::vector<int64_t> visited_platform_views_;
-
   // The latest composition order that was presented in Present().
   std::vector<int64_t> active_composition_order_;
 
diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.h b/shell/platform/darwin/ios/ios_external_view_embedder.h
index 03cec91..3a5a0b3 100644
--- a/shell/platform/darwin/ios/ios_external_view_embedder.h
+++ b/shell/platform/darwin/ios/ios_external_view_embedder.h
@@ -67,13 +67,6 @@
   // |ExternalViewEmbedder|
   bool SupportsDynamicThreadMerging() override;
 
-  // |ExternalViewEmbedder|
-  void PushFilterToVisitedPlatformViews(
-      std::shared_ptr<const DlImageFilter> filter) override;
-
-  // |ExternalViewEmbedder|
-  void PushVisitedPlatformView(int64_t view_id) override;
-
   FML_DISALLOW_COPY_AND_ASSIGN(IOSExternalViewEmbedder);
 };
 
diff --git a/shell/platform/darwin/ios/ios_external_view_embedder.mm b/shell/platform/darwin/ios/ios_external_view_embedder.mm
index 76995be..e679833 100644
--- a/shell/platform/darwin/ios/ios_external_view_embedder.mm
+++ b/shell/platform/darwin/ios/ios_external_view_embedder.mm
@@ -98,15 +98,4 @@
   return true;
 }
 
-// |ExternalViewEmbedder|
-void IOSExternalViewEmbedder::PushFilterToVisitedPlatformViews(
-    std::shared_ptr<const DlImageFilter> filter) {
-  platform_views_controller_->PushFilterToVisitedPlatformViews(filter);
-}
-
-// |ExternalViewEmbedder|
-void IOSExternalViewEmbedder::PushVisitedPlatformView(int64_t view_id) {
-  platform_views_controller_->PushVisitedPlatformView(view_id);
-}
-
 }  // namespace flutter
