diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart
index 161e8b6..8775db6 100644
--- a/packages/flutter_tools/lib/src/artifacts.dart
+++ b/packages/flutter_tools/lib/src/artifacts.dart
@@ -190,7 +190,7 @@
     case Artifact.wasmOptBinary:
       return 'wasm-opt$exe';
     case Artifact.frontendServerSnapshotForEngineDartSdk:
-      return 'frontend_server_aot.dart.snapshot';
+      return 'frontend_server.dart.snapshot';
     case Artifact.linuxDesktopPath:
       return '';
     case Artifact.linuxHeaders:
diff --git a/packages/flutter_tools/lib/src/build_system/targets/common.dart b/packages/flutter_tools/lib/src/build_system/targets/common.dart
index c3507ab..d5febec 100644
--- a/packages/flutter_tools/lib/src/build_system/targets/common.dart
+++ b/packages/flutter_tools/lib/src/build_system/targets/common.dart
@@ -132,7 +132,6 @@
     Source.pattern('{FLUTTER_ROOT}/packages/flutter_tools/lib/src/build_system/targets/common.dart'),
     Source.artifact(Artifact.platformKernelDill),
     Source.artifact(Artifact.engineDartBinary),
-    Source.artifact(Artifact.engineDartAotRuntime),
     Source.artifact(Artifact.frontendServerSnapshotForEngineDartSdk),
   ];
 
diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart
index 15d2093..e7571a6 100644
--- a/packages/flutter_tools/lib/src/compile.dart
+++ b/packages/flutter_tools/lib/src/compile.dart
@@ -244,10 +244,20 @@
     String? nativeAssets,
   }) async {
     final TargetPlatform? platform = targetModel == TargetModel.dartdevc ? TargetPlatform.web_javascript : null;
+    final String frontendServer = (frontendServerStarterPath == null || frontendServerStarterPath.isEmpty)
+        ? _artifacts.getArtifactPath(
+            Artifact.frontendServerSnapshotForEngineDartSdk,
+            platform: platform,
+          )
+        : frontendServerStarterPath;
     // This is a URI, not a file path, so the forward slash is correct even on Windows.
     if (!sdkRoot.endsWith('/')) {
       sdkRoot = '$sdkRoot/';
     }
+    final String engineDartPath = _artifacts.getArtifactPath(Artifact.engineDartBinary, platform: platform);
+    if (!_processManager.canRun(engineDartPath)) {
+      throwToolExit('Unable to find Dart binary at $engineDartPath');
+    }
     String? mainUri;
     final File mainFile = _fileSystem.file(mainPath);
     final Uri mainFileUri = mainFile.uri;
@@ -272,33 +282,10 @@
         toMultiRootPath(dartPluginRegistrantFileUri, _fileSystemScheme, _fileSystemRoots, _fileSystem.path.separator == r'\');
     }
 
-    final List<String> commandToStartFrontendServer;
-    if (frontendServerStarterPath != null && frontendServerStarterPath.isNotEmpty) {
-      final String engineDartPath = _artifacts.getArtifactPath(Artifact.engineDartBinary, platform: platform);
-      if (!_processManager.canRun(engineDartPath)) {
-        throwToolExit('Unable to find Dart binary at $engineDartPath');
-      }
-      commandToStartFrontendServer = <String>[
-        engineDartPath,
-        '--disable-dart-dev',
-        frontendServerStarterPath,
-      ];
-    } else {
-      final String engineDartAotRuntimePath = _artifacts.getArtifactPath(Artifact.engineDartAotRuntime, platform: platform);
-      if (!_processManager.canRun(engineDartAotRuntimePath)) {
-        throwToolExit('Unable to find dartaotruntime binary at $engineDartAotRuntimePath');
-      }
-      commandToStartFrontendServer = <String>[
-        engineDartAotRuntimePath,
-        '--disable-dart-dev',
-        _artifacts.getArtifactPath(
-          Artifact.frontendServerSnapshotForEngineDartSdk,
-          platform: platform,
-        ),
-      ];
-    }
-
-    final List<String> command = commandToStartFrontendServer + <String>[
+    final List<String> command = <String>[
+      engineDartPath,
+      '--disable-dart-dev',
+      frontendServer,
       '--sdk-root',
       sdkRoot,
       '--target=$targetModel',
@@ -790,25 +777,16 @@
     String? nativeAssetsUri,
   }) async {
     final TargetPlatform? platform = (targetModel == TargetModel.dartdevc) ? TargetPlatform.web_javascript : null;
-    late final List<String> commandToStartFrontendServer;
-    if (frontendServerStarterPath != null && frontendServerStarterPath!.isNotEmpty) {
-      commandToStartFrontendServer = <String>[
-        artifacts.getArtifactPath(Artifact.engineDartBinary, platform: platform),
-        '--disable-dart-dev',
-        frontendServerStarterPath!,
-      ];
-    } else {
-      commandToStartFrontendServer = <String>[
-        artifacts.getArtifactPath(Artifact.engineDartAotRuntime, platform: platform),
-        '--disable-dart-dev',
-        artifacts.getArtifactPath(
-          Artifact.frontendServerSnapshotForEngineDartSdk,
-          platform: platform,
-        ),
-      ];
-    }
-
-    final List<String> command = commandToStartFrontendServer + <String>[
+    final String frontendServer = (frontendServerStarterPath == null || frontendServerStarterPath!.isEmpty)
+        ? artifacts.getArtifactPath(
+            Artifact.frontendServerSnapshotForEngineDartSdk,
+            platform: platform,
+          )
+        : frontendServerStarterPath!;
+    final List<String> command = <String>[
+      artifacts.getArtifactPath(Artifact.engineDartBinary, platform: platform),
+      '--disable-dart-dev',
+      frontendServer,
       '--sdk-root',
       sdkRoot,
       '--incremental',
diff --git a/packages/flutter_tools/test/general.shard/artifacts_test.dart b/packages/flutter_tools/test/general.shard/artifacts_test.dart
index dc39ffe..920980a 100644
--- a/packages/flutter_tools/test/general.shard/artifacts_test.dart
+++ b/packages/flutter_tools/test/general.shard/artifacts_test.dart
@@ -143,8 +143,7 @@
       );
       expect(
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
-        fileSystem.path.join('root', 'bin', 'cache', 'dart-sdk', 'bin',
-          'snapshots', 'frontend_server_aot.dart.snapshot')
+        fileSystem.path.join('root', 'bin', 'cache', 'dart-sdk', 'bin', 'snapshots', 'frontend_server.dart.snapshot')
       );
     });
 
@@ -326,7 +325,7 @@
       expect(
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
         fileSystem.path.join('/out', 'host_debug_unopt', 'dart-sdk', 'bin',
-          'snapshots', 'frontend_server_aot.dart.snapshot')
+          'snapshots', 'frontend_server.dart.snapshot')
       );
 
 
@@ -398,7 +397,7 @@
           Artifact.frontendServerSnapshotForEngineDartSdk,
           platform: TargetPlatform.web_javascript),
         fileSystem.path.join('/flutter', 'prebuilts', 'linux-x64', 'dart-sdk', 'bin',
-          'snapshots', 'frontend_server_aot.dart.snapshot'),
+          'snapshots', 'frontend_server.dart.snapshot'),
       );
       expect(
         artifacts.getArtifactPath(
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/common_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/common_test.dart
index 0b05203..a287f1b 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/common_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/common_test.dart
@@ -94,7 +94,7 @@
     );
     processManager.addCommands(<FakeCommand>[
       FakeCommand(command: <String>[
-        artifacts.getArtifactPath(Artifact.engineDartAotRuntime),
+        artifacts.getArtifactPath(Artifact.engineDartBinary),
         '--disable-dart-dev',
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
         '--sdk-root',
@@ -139,7 +139,7 @@
     );
     processManager.addCommands(<FakeCommand>[
       FakeCommand(command: <String>[
-        artifacts.getArtifactPath(Artifact.engineDartAotRuntime),
+        artifacts.getArtifactPath(Artifact.engineDartBinary),
         '--disable-dart-dev',
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
         '--sdk-root',
@@ -185,7 +185,7 @@
     );
     processManager.addCommands(<FakeCommand>[
       FakeCommand(command: <String>[
-        artifacts.getArtifactPath(Artifact.engineDartAotRuntime),
+        artifacts.getArtifactPath(Artifact.engineDartBinary),
         '--disable-dart-dev',
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
         '--sdk-root',
@@ -279,7 +279,7 @@
     );
     processManager.addCommands(<FakeCommand>[
       FakeCommand(command: <String>[
-        artifacts.getArtifactPath(Artifact.engineDartAotRuntime),
+        artifacts.getArtifactPath(Artifact.engineDartBinary),
         '--disable-dart-dev',
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
         '--sdk-root',
@@ -328,7 +328,7 @@
     );
     processManager.addCommands(<FakeCommand>[
       FakeCommand(command: <String>[
-        artifacts.getArtifactPath(Artifact.engineDartAotRuntime),
+        artifacts.getArtifactPath(Artifact.engineDartBinary),
         '--disable-dart-dev',
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
         '--sdk-root',
@@ -375,7 +375,7 @@
     );
     processManager.addCommands(<FakeCommand>[
       FakeCommand(command: <String>[
-        artifacts.getArtifactPath(Artifact.engineDartAotRuntime),
+        artifacts.getArtifactPath(Artifact.engineDartBinary),
         '--disable-dart-dev',
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
         '--sdk-root',
@@ -434,7 +434,7 @@
     );
     processManager.addCommands(<FakeCommand>[
       FakeCommand(command: <String>[
-        artifacts.getArtifactPath(Artifact.engineDartAotRuntime),
+        artifacts.getArtifactPath(Artifact.engineDartBinary),
         '--disable-dart-dev',
         artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk),
         '--sdk-root',
diff --git a/packages/flutter_tools/test/general.shard/compile_batch_test.dart b/packages/flutter_tools/test/general.shard/compile_batch_test.dart
index 9d2ad2a..e82fb93 100644
--- a/packages/flutter_tools/test/general.shard/compile_batch_test.dart
+++ b/packages/flutter_tools/test/general.shard/compile_batch_test.dart
@@ -53,7 +53,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+         'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
@@ -99,7 +99,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+         'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
@@ -145,7 +145,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+         'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
@@ -191,7 +191,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+          'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
@@ -239,7 +239,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+          'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
@@ -287,7 +287,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+          'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
@@ -339,7 +339,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+          'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
@@ -389,7 +389,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+          'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
@@ -449,7 +449,7 @@
       logger: logger,
       processManager: FakeProcessManager.list(<FakeCommand>[
         FakeCommand(command: const <String>[
-          'Artifact.engineDartAotRuntime',
+          'Artifact.engineDartBinary',
           '--disable-dart-dev',
           'Artifact.frontendServerSnapshotForEngineDartSdk',
           '--sdk-root',
diff --git a/packages/flutter_tools/test/general.shard/compile_incremental_test.dart b/packages/flutter_tools/test/general.shard/compile_incremental_test.dart
index 14749ae..adaa4c2 100644
--- a/packages/flutter_tools/test/general.shard/compile_incremental_test.dart
+++ b/packages/flutter_tools/test/general.shard/compile_incremental_test.dart
@@ -30,7 +30,7 @@
   late FakeProcessManager fakeProcessManager;
 
   const List<String> frontendServerCommand = <String>[
-    'Artifact.engineDartAotRuntime',
+    'Artifact.engineDartBinary',
     '--disable-dart-dev',
     'Artifact.frontendServerSnapshotForEngineDartSdk',
     '--sdk-root',
diff --git a/packages/flutter_tools/test/general.shard/test/web_test_compiler_test.dart b/packages/flutter_tools/test/general.shard/test/web_test_compiler_test.dart
index 26ed691..54f8be2 100644
--- a/packages/flutter_tools/test/general.shard/test/web_test_compiler_test.dart
+++ b/packages/flutter_tools/test/general.shard/test/web_test_compiler_test.dart
@@ -36,7 +36,7 @@
     );
     final FakeProcessManager processManager = FakeProcessManager.list(<FakeCommand>[
       FakeCommand(command: <Pattern>[
-        'Artifact.engineDartAotRuntime.TargetPlatform.web_javascript',
+        'Artifact.engineDartBinary.TargetPlatform.web_javascript',
         '--disable-dart-dev',
         'Artifact.frontendServerSnapshotForEngineDartSdk.TargetPlatform.web_javascript',
         '--sdk-root',
