diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc
index 2db8ae2c7cd5..dcbe05f66691 100644
--- a/runtime/dart_isolate.cc
+++ b/runtime/dart_isolate.cc
@@ -32,7 +32,6 @@ namespace flutter {
 std::weak_ptr<DartIsolate> DartIsolate::CreateRootIsolate(
     const Settings& settings,
     fml::RefPtr<const DartSnapshot> isolate_snapshot,
-    fml::RefPtr<const DartSnapshot> shared_snapshot,
     TaskRunners task_runners,
     std::unique_ptr<Window> window,
     fml::WeakPtr<IOManager> io_manager,
@@ -58,7 +57,6 @@ std::weak_ptr<DartIsolate> DartIsolate::CreateRootIsolate(
       std::shared_ptr<DartIsolate>(new DartIsolate(
           settings,                     // settings
           std::move(isolate_snapshot),  // isolate snapshot
-          std::move(shared_snapshot),   // shared snapshot
           task_runners,                 // task runners
           std::move(io_manager),        // IO manager
           std::move(image_decoder),     // Image Decoder
@@ -102,7 +100,6 @@ std::weak_ptr<DartIsolate> DartIsolate::CreateRootIsolate(
 
 DartIsolate::DartIsolate(const Settings& settings,
                          fml::RefPtr<const DartSnapshot> isolate_snapshot,
-                         fml::RefPtr<const DartSnapshot> shared_snapshot,
                          TaskRunners task_runners,
                          fml::WeakPtr<IOManager> io_manager,
                          fml::WeakPtr<ImageDecoder> image_decoder,
@@ -123,7 +120,6 @@ DartIsolate::DartIsolate(const Settings& settings,
                   DartVMRef::GetIsolateNameServer()),
       settings_(settings),
       isolate_snapshot_(std::move(isolate_snapshot)),
-      shared_snapshot_(std::move(shared_snapshot)),
       child_isolate_preparer_(std::move(child_isolate_preparer)),
       isolate_create_callback_(isolate_create_callback),
       isolate_shutdown_callback_(isolate_shutdown_callback) {
@@ -592,7 +588,6 @@ Dart_Isolate DartIsolate::DartCreateAndStartServiceIsolate(
       DartIsolate::CreateRootIsolate(
           vm_data->GetSettings(),         // settings
           vm_data->GetIsolateSnapshot(),  // isolate snapshot
-          vm_data->GetSharedSnapshot(),   // shared snapshot
           null_task_runners,              // task runners
           nullptr,                        // window
           {},                             // IO Manager
@@ -705,7 +700,6 @@ DartIsolate::CreateDartVMAndEmbedderObjectPair(
         std::shared_ptr<DartIsolate>(new DartIsolate(
             (*raw_embedder_isolate)->GetSettings(),         // settings
             (*raw_embedder_isolate)->GetIsolateSnapshot(),  // isolate_snapshot
-            (*raw_embedder_isolate)->GetSharedSnapshot(),   // shared_snapshot
             null_task_runners,                              // task_runners
             fml::WeakPtr<IOManager>{},                      // io_manager
             fml::WeakPtr<ImageDecoder>{},                   // io_manager
@@ -724,9 +718,7 @@ DartIsolate::CreateDartVMAndEmbedderObjectPair(
       advisory_script_uri,         //
       advisory_script_entrypoint,  //
       (*embedder_isolate)->GetIsolateSnapshot()->GetDataMapping(),
-      (*embedder_isolate)->GetIsolateSnapshot()->GetInstructionsMapping(),
-      (*embedder_isolate)->GetSharedSnapshot()->GetDataMapping(),
-      (*embedder_isolate)->GetSharedSnapshot()->GetInstructionsMapping(), flags,
+      (*embedder_isolate)->GetIsolateSnapshot()->GetInstructionsMapping(), flags,
       embedder_isolate.get(),  // isolate_group_data
       embedder_isolate.get(),  // isolate_group
       error);
@@ -791,10 +783,6 @@ fml::RefPtr<const DartSnapshot> DartIsolate::GetIsolateSnapshot() const {
   return isolate_snapshot_;
 }
 
-fml::RefPtr<const DartSnapshot> DartIsolate::GetSharedSnapshot() const {
-  return shared_snapshot_;
-}
-
 std::weak_ptr<DartIsolate> DartIsolate::GetWeakIsolatePtr() {
   return std::static_pointer_cast<DartIsolate>(shared_from_this());
 }
diff --git a/runtime/dart_isolate.h b/runtime/dart_isolate.h
index e7ab9b30243c..2abaa11fe011 100644
--- a/runtime/dart_isolate.h
+++ b/runtime/dart_isolate.h
@@ -143,10 +143,6 @@ class DartIsolate : public UIDartState {
   ///                                         usually obtained from the
   ///                                         DartVMData associated with the
   ///                                         running Dart VM instance.
-  /// @param[in]  shared_snapshot             The shared snapshot. This is
-  ///                                         usually obtained from the
-  ///                                         DartVMData associated with the
-  ///                                         running Dart VM instance.
   /// @param[in]  task_runners                The task runners used by the
   ///                                         isolate. Via UI bindings, the
   ///                                         isolate will use the IO task
@@ -192,7 +188,6 @@ class DartIsolate : public UIDartState {
   static std::weak_ptr<DartIsolate> CreateRootIsolate(
       const Settings& settings,
       fml::RefPtr<const DartSnapshot> isolate_snapshot,
-      fml::RefPtr<const DartSnapshot> shared_snapshot,
       TaskRunners task_runners,
       std::unique_ptr<Window> window,
       fml::WeakPtr<IOManager> io_manager,
@@ -385,14 +380,6 @@ class DartIsolate : public UIDartState {
   ///
   fml::RefPtr<const DartSnapshot> GetIsolateSnapshot() const;
 
-  //----------------------------------------------------------------------------
-  /// @brief      Get the shared snapshot used to launch this isolate. This is
-  ///             referenced by any child isolates launched by the root isolate.
-  ///
-  /// @return     The shared snapshot.
-  ///
-  fml::RefPtr<const DartSnapshot> GetSharedSnapshot() const;
-
   //----------------------------------------------------------------------------
   /// @brief      A weak pointer to the Dart isolate instance. This instance may
   ///             only be used on the task runner that created the root isolate.
@@ -428,7 +415,6 @@ class DartIsolate : public UIDartState {
   Phase phase_ = Phase::Unknown;
   const Settings settings_;
   const fml::RefPtr<const DartSnapshot> isolate_snapshot_;
-  const fml::RefPtr<const DartSnapshot> shared_snapshot_;
   std::vector<std::shared_ptr<const fml::Mapping>> kernel_buffers_;
   std::vector<std::unique_ptr<AutoFireClosure>> shutdown_callbacks_;
   ChildIsolatePreparer child_isolate_preparer_ = nullptr;
@@ -438,7 +424,6 @@ class DartIsolate : public UIDartState {
 
   DartIsolate(const Settings& settings,
               fml::RefPtr<const DartSnapshot> isolate_snapshot,
-              fml::RefPtr<const DartSnapshot> shared_snapshot,
               TaskRunners task_runners,
               fml::WeakPtr<IOManager> io_manager,
               fml::WeakPtr<ImageDecoder> image_decoder,
diff --git a/runtime/dart_isolate_unittests.cc b/runtime/dart_isolate_unittests.cc
index 83a140737324..4d860f82d781 100644
--- a/runtime/dart_isolate_unittests.cc
+++ b/runtime/dart_isolate_unittests.cc
@@ -38,7 +38,6 @@ TEST_F(DartIsolateTest, RootIsolateCreationAndShutdown) {
   auto weak_isolate = DartIsolate::CreateRootIsolate(
       vm_data->GetSettings(),             // settings
       vm_data->GetIsolateSnapshot(),      // isolate snapshot
-      vm_data->GetSharedSnapshot(),       // shared snapshot
       std::move(task_runners),            // task runners
       nullptr,                            // window
       {},                                 // io manager
@@ -71,7 +70,6 @@ TEST_F(DartIsolateTest, IsolateShutdownCallbackIsInIsolateScope) {
   auto weak_isolate = DartIsolate::CreateRootIsolate(
       vm_data->GetSettings(),             // settings
       vm_data->GetIsolateSnapshot(),      // isolate snapshot
-      vm_data->GetSharedSnapshot(),       // shared snapshot
       std::move(task_runners),            // task runners
       nullptr,                            // window
       {},                                 // io manager
@@ -181,7 +179,6 @@ static void RunDartCodeInIsolate(DartVMRef& vm_ref,
   auto weak_isolate = DartIsolate::CreateRootIsolate(
       vm_data->GetSettings(),             // settings
       vm_data->GetIsolateSnapshot(),      // isolate snapshot
-      vm_data->GetSharedSnapshot(),       // shared snapshot
       std::move(task_runners),            // task runners
       nullptr,                            // window
       {},                                 // io manager
diff --git a/runtime/dart_lifecycle_unittests.cc b/runtime/dart_lifecycle_unittests.cc
index 7a607b7be26f..7a35c96167e5 100644
--- a/runtime/dart_lifecycle_unittests.cc
+++ b/runtime/dart_lifecycle_unittests.cc
@@ -53,7 +53,6 @@ static std::shared_ptr<DartIsolate> CreateAndRunRootIsolate(
   auto isolate_weak = DartIsolate::CreateRootIsolate(
       vm.GetSettings(),                   // settings
       vm.GetIsolateSnapshot(),            // isolate_snapshot
-      vm.GetSharedSnapshot(),             // shared_snapshot
       runners,                            // task_runners
       {},                                 // window
       {},                                 // io_manager
diff --git a/runtime/dart_snapshot.cc b/runtime/dart_snapshot.cc
index acebcd3493d8..a5df79bb136c 100644
--- a/runtime/dart_snapshot.cc
+++ b/runtime/dart_snapshot.cc
@@ -181,10 +181,6 @@ fml::RefPtr<DartSnapshot> DartSnapshot::IsolateSnapshotFromSettings(
   return nullptr;
 }
 
-fml::RefPtr<DartSnapshot> DartSnapshot::Empty() {
-  return fml::MakeRefCounted<DartSnapshot>(nullptr, nullptr);
-}
-
 DartSnapshot::DartSnapshot(std::shared_ptr<const fml::Mapping> data,
                            std::shared_ptr<const fml::Mapping> instructions)
     : data_(std::move(data)), instructions_(std::move(instructions)) {}
diff --git a/runtime/dart_snapshot.h b/runtime/dart_snapshot.h
index 162710ff2a6a..97038aac4aee 100644
--- a/runtime/dart_snapshot.h
+++ b/runtime/dart_snapshot.h
@@ -102,17 +102,6 @@ class DartSnapshot : public fml::RefCountedThreadSafe<DartSnapshot> {
   static fml::RefPtr<DartSnapshot> IsolateSnapshotFromSettings(
       const Settings& settings);
 
-  //----------------------------------------------------------------------------
-  /// @brief      An empty an invalid snapshot. This is used as a placeholder
-  ///             for certain optional snapshots.
-  ///
-  /// @bug        Now that shared snapshots are no longer required, consider
-  ///             removing this constructor.
-  ///
-  /// @return     An invalid empty snapshot.
-  ///
-  static fml::RefPtr<DartSnapshot> Empty();
-
   //----------------------------------------------------------------------------
   /// @brief      Determines if this snapshot contains a heap component. Since
   ///             the instructions component is optional, the method does not
diff --git a/runtime/dart_vm.cc b/runtime/dart_vm.cc
index 37f8e690f737..0c18ba8da702 100644
--- a/runtime/dart_vm.cc
+++ b/runtime/dart_vm.cc
@@ -232,12 +232,10 @@ std::shared_ptr<DartVM> DartVM::Create(
     Settings settings,
     fml::RefPtr<DartSnapshot> vm_snapshot,
     fml::RefPtr<DartSnapshot> isolate_snapshot,
-    fml::RefPtr<DartSnapshot> shared_snapshot,
     std::shared_ptr<IsolateNameServer> isolate_name_server) {
   auto vm_data = DartVMData::Create(settings,                     //
                                     std::move(vm_snapshot),       //
-                                    std::move(isolate_snapshot),  //
-                                    std::move(shared_snapshot)    //
+                                    std::move(isolate_snapshot)   //
   );
 
   if (!vm_data) {
diff --git a/runtime/dart_vm.h b/runtime/dart_vm.h
index 40b8dc4a242e..ac84fe77020d 100644
--- a/runtime/dart_vm.h
+++ b/runtime/dart_vm.h
@@ -162,7 +162,6 @@ class DartVM {
       Settings settings,
       fml::RefPtr<DartSnapshot> vm_snapshot,
       fml::RefPtr<DartSnapshot> isolate_snapshot,
-      fml::RefPtr<DartSnapshot> shared_snapshot,
       std::shared_ptr<IsolateNameServer> isolate_name_server);
 
   DartVM(std::shared_ptr<const DartVMData> data,
diff --git a/runtime/dart_vm_data.cc b/runtime/dart_vm_data.cc
index e14c998daa74..b93d9ba9ad03 100644
--- a/runtime/dart_vm_data.cc
+++ b/runtime/dart_vm_data.cc
@@ -9,8 +9,7 @@ namespace flutter {
 std::shared_ptr<const DartVMData> DartVMData::Create(
     Settings settings,
     fml::RefPtr<DartSnapshot> vm_snapshot,
-    fml::RefPtr<DartSnapshot> isolate_snapshot,
-    fml::RefPtr<DartSnapshot> shared_snapshot) {
+    fml::RefPtr<DartSnapshot> isolate_snapshot) {
   if (!vm_snapshot || !vm_snapshot->IsValid()) {
     // Caller did not provide a valid VM snapshot. Attempt to infer one
     // from the settings.
@@ -33,30 +32,19 @@ std::shared_ptr<const DartVMData> DartVMData::Create(
     }
   }
 
-  if (!shared_snapshot || !shared_snapshot->IsValid()) {
-    shared_snapshot = DartSnapshot::Empty();
-    if (!shared_snapshot) {
-      FML_LOG(ERROR) << "Shared snapshot invalid.";
-      return {};
-    }
-  }
-
   return std::shared_ptr<const DartVMData>(new DartVMData(
       std::move(settings),          //
       std::move(vm_snapshot),       //
-      std::move(isolate_snapshot),  //
-      std::move(shared_snapshot)    //
+      std::move(isolate_snapshot)   //
       ));
 }
 
 DartVMData::DartVMData(Settings settings,
                        fml::RefPtr<const DartSnapshot> vm_snapshot,
-                       fml::RefPtr<const DartSnapshot> isolate_snapshot,
-                       fml::RefPtr<const DartSnapshot> shared_snapshot)
+                       fml::RefPtr<const DartSnapshot> isolate_snapshot)
     : settings_(settings),
       vm_snapshot_(vm_snapshot),
-      isolate_snapshot_(isolate_snapshot),
-      shared_snapshot_(shared_snapshot) {}
+      isolate_snapshot_(isolate_snapshot) {}
 
 DartVMData::~DartVMData() = default;
 
@@ -72,8 +60,4 @@ fml::RefPtr<const DartSnapshot> DartVMData::GetIsolateSnapshot() const {
   return isolate_snapshot_;
 }
 
-fml::RefPtr<const DartSnapshot> DartVMData::GetSharedSnapshot() const {
-  return shared_snapshot_;
-}
-
 }  // namespace flutter
diff --git a/runtime/dart_vm_data.h b/runtime/dart_vm_data.h
index 95c4565e2ef7..0f054bf55f3d 100644
--- a/runtime/dart_vm_data.h
+++ b/runtime/dart_vm_data.h
@@ -15,8 +15,7 @@ class DartVMData {
   static std::shared_ptr<const DartVMData> Create(
       Settings settings,
       fml::RefPtr<DartSnapshot> vm_snapshot,
-      fml::RefPtr<DartSnapshot> isolate_snapshot,
-      fml::RefPtr<DartSnapshot> shared_snapshot);
+      fml::RefPtr<DartSnapshot> isolate_snapshot);
 
   ~DartVMData();
 
@@ -26,18 +25,14 @@ class DartVMData {
 
   fml::RefPtr<const DartSnapshot> GetIsolateSnapshot() const;
 
-  fml::RefPtr<const DartSnapshot> GetSharedSnapshot() const;
-
  private:
   const Settings settings_;
   const fml::RefPtr<const DartSnapshot> vm_snapshot_;
   const fml::RefPtr<const DartSnapshot> isolate_snapshot_;
-  const fml::RefPtr<const DartSnapshot> shared_snapshot_;
 
   DartVMData(Settings settings,
              fml::RefPtr<const DartSnapshot> vm_snapshot,
-             fml::RefPtr<const DartSnapshot> isolate_snapshot,
-             fml::RefPtr<const DartSnapshot> shared_snapshot);
+             fml::RefPtr<const DartSnapshot> isolate_snapshot);
 
   FML_DISALLOW_COPY_AND_ASSIGN(DartVMData);
 };
diff --git a/runtime/dart_vm_lifecycle.cc b/runtime/dart_vm_lifecycle.cc
index 717a0546a280..41a3da606abb 100644
--- a/runtime/dart_vm_lifecycle.cc
+++ b/runtime/dart_vm_lifecycle.cc
@@ -43,8 +43,7 @@ DartVMRef::~DartVMRef() {
 
 DartVMRef DartVMRef::Create(Settings settings,
                             fml::RefPtr<DartSnapshot> vm_snapshot,
-                            fml::RefPtr<DartSnapshot> isolate_snapshot,
-                            fml::RefPtr<DartSnapshot> shared_snapshot) {
+                            fml::RefPtr<DartSnapshot> isolate_snapshot) {
   std::scoped_lock lifecycle_lock(gVMMutex);
 
   if (!settings.leak_vm) {
@@ -78,7 +77,6 @@ DartVMRef DartVMRef::Create(Settings settings,
   auto vm = DartVM::Create(std::move(settings),          //
                            std::move(vm_snapshot),       //
                            std::move(isolate_snapshot),  //
-                           std::move(shared_snapshot),   //
                            isolate_name_server           //
   );
 
diff --git a/runtime/dart_vm_lifecycle.h b/runtime/dart_vm_lifecycle.h
index 5ce6cf7a5777..d89b6d7cb43d 100644
--- a/runtime/dart_vm_lifecycle.h
+++ b/runtime/dart_vm_lifecycle.h
@@ -29,8 +29,7 @@ class DartVMRef {
   FML_WARN_UNUSED_RESULT
   static DartVMRef Create(Settings settings,
                           fml::RefPtr<DartSnapshot> vm_snapshot = nullptr,
-                          fml::RefPtr<DartSnapshot> isolate_snapshot = nullptr,
-                          fml::RefPtr<DartSnapshot> shared_snapshot = nullptr);
+                          fml::RefPtr<DartSnapshot> isolate_snapshot = nullptr);
 
   DartVMRef(DartVMRef&&);
 
diff --git a/runtime/runtime_controller.cc b/runtime/runtime_controller.cc
index 61415ec4124c..a63843fedf66 100644
--- a/runtime/runtime_controller.cc
+++ b/runtime/runtime_controller.cc
@@ -18,7 +18,6 @@ RuntimeController::RuntimeController(
     RuntimeDelegate& p_client,
     DartVM* p_vm,
     fml::RefPtr<const DartSnapshot> p_isolate_snapshot,
-    fml::RefPtr<const DartSnapshot> p_shared_snapshot,
     TaskRunners p_task_runners,
     fml::WeakPtr<IOManager> p_io_manager,
     fml::WeakPtr<ImageDecoder> p_image_decoder,
@@ -31,7 +30,6 @@ RuntimeController::RuntimeController(
     : RuntimeController(p_client,
                         p_vm,
                         std::move(p_isolate_snapshot),
-                        std::move(p_shared_snapshot),
                         std::move(p_task_runners),
                         std::move(p_io_manager),
                         std::move(p_image_decoder),
@@ -47,7 +45,6 @@ RuntimeController::RuntimeController(
     RuntimeDelegate& p_client,
     DartVM* p_vm,
     fml::RefPtr<const DartSnapshot> p_isolate_snapshot,
-    fml::RefPtr<const DartSnapshot> p_shared_snapshot,
     TaskRunners p_task_runners,
     fml::WeakPtr<IOManager> p_io_manager,
     fml::WeakPtr<ImageDecoder> p_image_decoder,
@@ -61,7 +58,6 @@ RuntimeController::RuntimeController(
     : client_(p_client),
       vm_(p_vm),
       isolate_snapshot_(std::move(p_isolate_snapshot)),
-      shared_snapshot_(std::move(p_shared_snapshot)),
       task_runners_(p_task_runners),
       io_manager_(p_io_manager),
       image_decoder_(p_image_decoder),
@@ -78,7 +74,6 @@ RuntimeController::RuntimeController(
   auto strong_root_isolate =
       DartIsolate::CreateRootIsolate(vm_->GetVMData()->GetSettings(),  //
                                      isolate_snapshot_,                //
-                                     shared_snapshot_,                 //
                                      task_runners_,                    //
                                      std::make_unique<Window>(this),   //
                                      io_manager_,                      //
@@ -139,7 +134,6 @@ std::unique_ptr<RuntimeController> RuntimeController::Clone() const {
       client_,                      //
       vm_,                          //
       isolate_snapshot_,            //
-      shared_snapshot_,             //
       task_runners_,                //
       io_manager_,                  //
       image_decoder_,               //
diff --git a/runtime/runtime_controller.h b/runtime/runtime_controller.h
index 665f0e17dbb5..98a87f6f5d09 100644
--- a/runtime/runtime_controller.h
+++ b/runtime/runtime_controller.h
@@ -32,7 +32,6 @@ class RuntimeController final : public WindowClient {
       RuntimeDelegate& client,
       DartVM* vm,
       fml::RefPtr<const DartSnapshot> isolate_snapshot,
-      fml::RefPtr<const DartSnapshot> shared_snapshot,
       TaskRunners task_runners,
       fml::WeakPtr<IOManager> io_manager,
       fml::WeakPtr<ImageDecoder> iamge_decoder,
@@ -128,7 +127,6 @@ class RuntimeController final : public WindowClient {
   RuntimeDelegate& client_;
   DartVM* const vm_;
   fml::RefPtr<const DartSnapshot> isolate_snapshot_;
-  fml::RefPtr<const DartSnapshot> shared_snapshot_;
   TaskRunners task_runners_;
   fml::WeakPtr<IOManager> io_manager_;
   fml::WeakPtr<ImageDecoder> image_decoder_;
@@ -146,7 +144,6 @@ class RuntimeController final : public WindowClient {
       RuntimeDelegate& client,
       DartVM* vm,
       fml::RefPtr<const DartSnapshot> isolate_snapshot,
-      fml::RefPtr<const DartSnapshot> shared_snapshot,
       TaskRunners task_runners,
       fml::WeakPtr<IOManager> io_manager,
       fml::WeakPtr<ImageDecoder> image_decoder,
diff --git a/shell/common/engine.cc b/shell/common/engine.cc
index fd424a369eeb..7ad3a432a52c 100644
--- a/shell/common/engine.cc
+++ b/shell/common/engine.cc
@@ -39,7 +39,6 @@ Engine::Engine(Delegate& delegate,
                const PointerDataDispatcherMaker& dispatcher_maker,
                DartVM& vm,
                fml::RefPtr<const DartSnapshot> isolate_snapshot,
-               fml::RefPtr<const DartSnapshot> shared_snapshot,
                TaskRunners task_runners,
                Settings settings,
                std::unique_ptr<Animator> animator,
@@ -61,7 +60,6 @@ Engine::Engine(Delegate& delegate,
       *this,                                 // runtime delegate
       &vm,                                   // VM
       std::move(isolate_snapshot),           // isolate snapshot
-      std::move(shared_snapshot),            // shared snapshot
       task_runners_,                         // task runners
       std::move(io_manager),                 // io manager
       image_decoder_.GetWeakPtr(),           // image decoder
diff --git a/shell/common/engine.h b/shell/common/engine.h
index 2e4fd41964bb..dde92dbc6d26 100644
--- a/shell/common/engine.h
+++ b/shell/common/engine.h
@@ -249,8 +249,6 @@ class Engine final : public RuntimeDelegate, PointerDataDispatcher::Delegate {
   ///                                created when the engine is created. This
   ///                                requires access to the isolate snapshot
   ///                                upfront.
-  /// @param[in]  shared_snapshot    The portion of the isolate snapshot shared
-  ///                                among multiple isolates.
   //  TODO(chinmaygarde): This is probably redundant now that the IO manager is
   //  it's own object.
   /// @param[in]  task_runners       The task runners used by the shell that
@@ -276,7 +274,6 @@ class Engine final : public RuntimeDelegate, PointerDataDispatcher::Delegate {
          const PointerDataDispatcherMaker& dispatcher_maker,
          DartVM& vm,
          fml::RefPtr<const DartSnapshot> isolate_snapshot,
-         fml::RefPtr<const DartSnapshot> shared_snapshot,
          TaskRunners task_runners,
          Settings settings,
          std::unique_ptr<Animator> animator,
diff --git a/shell/common/shell.cc b/shell/common/shell.cc
index bf185a6b3661..fbc2457d56bd 100644
--- a/shell/common/shell.cc
+++ b/shell/common/shell.cc
@@ -45,7 +45,6 @@ std::unique_ptr<Shell> Shell::CreateShellOnPlatformThread(
     TaskRunners task_runners,
     Settings settings,
     fml::RefPtr<const DartSnapshot> isolate_snapshot,
-    fml::RefPtr<const DartSnapshot> shared_snapshot,
     Shell::CreateCallback<PlatformView> on_create_platform_view,
     Shell::CreateCallback<Rasterizer> on_create_rasterizer) {
   if (!task_runners.IsValid()) {
@@ -124,7 +123,6 @@ std::unique_ptr<Shell> Shell::CreateShellOnPlatformThread(
                          shell = shell.get(),                             //
                          &dispatcher_maker,                               //
                          isolate_snapshot = std::move(isolate_snapshot),  //
-                         shared_snapshot = std::move(shared_snapshot),    //
                          vsync_waiter = std::move(vsync_waiter),          //
                          &weak_io_manager_future                          //
   ]() mutable {
@@ -141,7 +139,6 @@ std::unique_ptr<Shell> Shell::CreateShellOnPlatformThread(
             dispatcher_maker,             //
             *shell->GetDartVM(),          //
             std::move(isolate_snapshot),  //
-            std::move(shared_snapshot),   //
             task_runners,                 //
             shell->GetSettings(),         //
             std::move(animator),          //
@@ -227,7 +224,6 @@ std::unique_ptr<Shell> Shell::Create(
   return Shell::Create(std::move(task_runners),             //
                        std::move(settings),                 //
                        vm_data->GetIsolateSnapshot(),       // isolate snapshot
-                       DartSnapshot::Empty(),               // shared snapshot
                        std::move(on_create_platform_view),  //
                        std::move(on_create_rasterizer),     //
                        std::move(vm)                        //
@@ -238,7 +234,6 @@ std::unique_ptr<Shell> Shell::Create(
     TaskRunners task_runners,
     Settings settings,
     fml::RefPtr<const DartSnapshot> isolate_snapshot,
-    fml::RefPtr<const DartSnapshot> shared_snapshot,
     Shell::CreateCallback<PlatformView> on_create_platform_view,
     Shell::CreateCallback<Rasterizer> on_create_rasterizer,
     DartVMRef vm) {
@@ -262,7 +257,6 @@ std::unique_ptr<Shell> Shell::Create(
                          task_runners = std::move(task_runners),          //
                          settings,                                        //
                          isolate_snapshot = std::move(isolate_snapshot),  //
-                         shared_snapshot = std::move(shared_snapshot),    //
                          on_create_platform_view,                         //
                          on_create_rasterizer                             //
   ]() mutable {
@@ -270,7 +264,6 @@ std::unique_ptr<Shell> Shell::Create(
                                             std::move(task_runners),      //
                                             settings,                     //
                                             std::move(isolate_snapshot),  //
-                                            std::move(shared_snapshot),   //
                                             on_create_platform_view,      //
                                             on_create_rasterizer          //
         );
diff --git a/shell/common/shell.h b/shell/common/shell.h
index e4ee6960389a..cc3ed8fdc448 100644
--- a/shell/common/shell.h
+++ b/shell/common/shell.h
@@ -139,9 +139,6 @@ class Shell final : public PlatformView::Delegate,
   /// @param[in]  isolate_snapshot         A custom isolate snapshot. Takes
   ///                                      precedence over any snapshots
   ///                                      specified in the settings.
-  /// @param[in]  shared_snapshot          A custom shared snapshot. Takes
-  ///                                      precedence over any snapshots
-  ///                                      specified in the settings.
   /// @param[in]  on_create_platform_view  The callback that must return a
   ///                                      platform view. This will be called on
   ///                                      the platform task runner before this
@@ -164,7 +161,6 @@ class Shell final : public PlatformView::Delegate,
       TaskRunners task_runners,
       Settings settings,
       fml::RefPtr<const DartSnapshot> isolate_snapshot,
-      fml::RefPtr<const DartSnapshot> shared_snapshot,
       CreateCallback<PlatformView> on_create_platform_view,
       CreateCallback<Rasterizer> on_create_rasterizer,
       DartVMRef vm);
@@ -375,7 +371,6 @@ class Shell final : public PlatformView::Delegate,
       TaskRunners task_runners,
       Settings settings,
       fml::RefPtr<const DartSnapshot> isolate_snapshot,
-      fml::RefPtr<const DartSnapshot> shared_snapshot,
       Shell::CreateCallback<PlatformView> on_create_platform_view,
       Shell::CreateCallback<Rasterizer> on_create_rasterizer);
 
diff --git a/shell/platform/fuchsia/dart_runner/dart_component_controller.cc b/shell/platform/fuchsia/dart_runner/dart_component_controller.cc
index 37cef7bce6f7..e5bd774fc4e3 100644
--- a/shell/platform/fuchsia/dart_runner/dart_component_controller.cc
+++ b/shell/platform/fuchsia/dart_runner/dart_component_controller.cc
@@ -314,8 +314,7 @@ bool DartComponentController::CreateIsolate(
 
   isolate_ = Dart_CreateIsolateGroup(
       url_.c_str(), label_.c_str(), isolate_snapshot_data,
-      isolate_snapshot_instructions, nullptr /* shared_snapshot_data */,
-      nullptr /* shared_snapshot_instructions */, nullptr /* flags */, state,
+      isolate_snapshot_instructions, nullptr /* flags */, state,
       state, &error);
   if (!isolate_) {
     FX_LOGF(ERROR, LOG_TAG, "Dart_CreateIsolateGroup failed: %s", error);
diff --git a/shell/platform/fuchsia/dart_runner/service_isolate.cc b/shell/platform/fuchsia/dart_runner/service_isolate.cc
index d22c4df286b6..40719ab81c94 100644
--- a/shell/platform/fuchsia/dart_runner/service_isolate.cc
+++ b/shell/platform/fuchsia/dart_runner/service_isolate.cc
@@ -107,8 +107,7 @@ Dart_Isolate CreateServiceIsolate(const char* uri,
   Dart_Isolate isolate = Dart_CreateIsolateGroup(
       uri, DART_VM_SERVICE_ISOLATE_NAME, mapped_isolate_snapshot_data.address(),
       mapped_isolate_snapshot_instructions.address(),
-      nullptr /* shared_snapshot_data */,
-      nullptr /* shared_snapshot_instructions */, nullptr /* flags */, state,
+      nullptr /* flags */, state,
       state, error);
   if (!isolate) {
     FX_LOGF(ERROR, LOG_TAG, "Dart_CreateIsolateGroup failed: %s", *error);
diff --git a/shell/platform/fuchsia/flutter/engine.cc b/shell/platform/fuchsia/flutter/engine.cc
index 75dbf497b8d8..d002049996df 100644
--- a/shell/platform/fuchsia/flutter/engine.cc
+++ b/shell/platform/fuchsia/flutter/engine.cc
@@ -227,7 +227,6 @@ Engine::Engine(Delegate& delegate,
         task_runners,                    // host task runners
         settings_,                       // shell launch settings
         std::move(isolate_snapshot),     // isolate snapshot
-        flutter::DartSnapshot::Empty(),  // shared snapshot
         on_create_platform_view,         // platform view create callback
         on_create_rasterizer,            // rasterizer create callback
         std::move(vm)                    // vm reference
