diff --git a/runtime/tests/vm/dart/isolates/send_list_typed_data_spawn_uri_test.dart b/runtime/tests/vm/dart/isolates/send_list_typed_data_spawn_uri_test.dart
new file mode 100644
index 0000000..e27367e
--- /dev/null
+++ b/runtime/tests/vm/dart/isolates/send_list_typed_data_spawn_uri_test.dart
@@ -0,0 +1,92 @@
+// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+//
+// This test ensures that lists of typed data can be sent to an isolate
+// spawned via spawnUri.
+
+import 'dart:io';
+import 'dart:isolate';
+import 'dart:typed_data';
+
+import 'package:async_helper/async_helper.dart';
+
+void main(List<String> args) async {
+  asyncStart();
+  if (args.length == 0) {
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Uint8List>[
+      Uint8List.fromList([1])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Uint8ClampedList>[
+      Uint8ClampedList.fromList([1])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Uint16List>[
+      Uint16List.fromList([1])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Uint32List>[
+      Uint32List.fromList([1])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Uint64List>[
+      Uint64List.fromList([1])
+    ]);
+
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Int8List>[
+      Int8List.fromList([1])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Int16List>[
+      Int16List.fromList([1])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Int32List>[
+      Int32List.fromList([1])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Int64List>[
+      Int64List.fromList([1])
+    ]);
+
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Float32List>[
+      Float32List.fromList([1])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Float64List>[
+      Float64List.fromList([1])
+    ]);
+
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Int32x4List>[
+      Int32x4List.fromList([Int32x4(1, 2, 3, 4)])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Float32x4List>[
+      Float32x4List.fromList([Float32x4(1, 2, 3, 4)])
+    ]);
+    await Isolate.spawnUri(Platform.script, [
+      "42"
+    ], <Float64x2List>[
+      Float64x2List.fromList([Float64x2(1, 2)])
+    ]);
+  }
+  asyncEnd();
+}
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 13b6c52..eeaf9d8 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -21529,6 +21529,17 @@
   candidate_cls = object_store->transferable_class();
   if (cid == candidate_cls.id()) return true;
 
+  const auto& typed_data_lib =
+      Library::Handle(object_store->typed_data_library());
+
+#define IS_CHECK(name)                                                         \
+  candidate_cls = typed_data_lib.LookupClass(Symbols::name##List());           \
+  if (cid == candidate_cls.id()) {                                             \
+    return true;                                                               \
+  }
+  DART_CLASS_LIST_TYPED_DATA(IS_CHECK)
+#undef IS_CHECK
+
   return false;
 }
 
