diff --git a/DEPS b/DEPS
index c6a700c..b24932b 100644
--- a/DEPS
+++ b/DEPS
@@ -84,7 +84,7 @@
   "download_reclient": True,
 
   # Update from https://chrome-infra-packages.appspot.com/p/fuchsia/sdk/core
-  "fuchsia_sdk_version": "version:28.20250623.5.1",
+  "fuchsia_sdk_version": "version:28.20250625.5.1",
   "download_fuchsia_deps": False,
 
   # Ninja, runs the build based on files generated by GN.
@@ -592,7 +592,7 @@
     "packages": [
       {
       "package": "chromium/fuchsia/test-scripts",
-      "version": "2wEtX_lDNhHhDNsP6jc1mchGs3vX7p_HnyTxO1GJwTcC",
+      "version": "ZpnML-jis0gVIvtx5X7tupJAI8emZSB9b7yJSbqVrmMC",
       }
     ],
     "condition": 'download_fuchsia_deps',
diff --git a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
index bf427f7..7564b33 100644
--- a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart
@@ -24,9 +24,7 @@
 
   void resolve(FunctionExpressionImpl node, {required DartType contextType}) {
     var parent = node.parent;
-    // Note: `isFunctionDeclaration` must have an explicit type to work around
-    // https://github.com/dart-lang/language/issues/1785.
-    bool isFunctionDeclaration = parent is FunctionDeclaration;
+    var isFunctionDeclaration = parent is FunctionDeclaration;
     var body = node.body;
 
     if (_resolver.flowAnalysis.flow != null && !isFunctionDeclaration) {
diff --git a/pkg/dartdev/lib/src/commands/dart_mcp_server.dart b/pkg/dartdev/lib/src/commands/dart_mcp_server.dart
index f61229b..1208323 100644
--- a/pkg/dartdev/lib/src/commands/dart_mcp_server.dart
+++ b/pkg/dartdev/lib/src/commands/dart_mcp_server.dart
@@ -12,9 +12,7 @@
   static const String cmdName = 'mcp-server';
 
   static const String cmdDescription = '''
-A stdio based Model Context Protocol (MCP) server to aid in Dart and Flutter development.
-
-EXPERIMENTAL: This tool may change dramatically or disappear at any time.''';
+A stdio based Model Context Protocol (MCP) server to aid in Dart and Flutter development.''';
 
   static const _forceRootsFallbackFlag = 'force-roots-fallback';
   static const _experimentFlag = 'experimental-mcp-server';
@@ -33,6 +31,9 @@
             'support it.',
       )
       ..addFlag(_experimentFlag,
+          // This flag is no longer required but we are leaving it in for
+          // backwards compatibility.
+          hide: true,
           defaultsTo: false,
           help: 'A required flag in order to use this command. Passing this '
               'flag is an acknowledgement that you understand it is an '
@@ -45,10 +46,6 @@
   @override
   Future<int> run() async {
     final args = argResults!;
-    if (!args.flag(_experimentFlag)) {
-      log.stderr('Missing required flag --$_experimentFlag\n\n$usage');
-      return 64;
-    }
     try {
       VmInteropHandler.run(
         sdk.dartAotRuntime,
diff --git a/pkg/dartdev/test/commands/mcp_server_test.dart b/pkg/dartdev/test/commands/mcp_server_test.dart
index 071fc62..4e18938 100644
--- a/pkg/dartdev/test/commands/mcp_server_test.dart
+++ b/pkg/dartdev/test/commands/mcp_server_test.dart
@@ -9,34 +9,33 @@
 
 void main() {
   group('dart mcp-server', () {
-    test('can be connected with a client', () async {
-      final client = TestMCPClient();
-      addTearDown(client.shutdown);
-      final serverConnection = await client.connectStdioServer(
-          Platform.resolvedExecutable,
-          ['mcp-server', '--experimental-mcp-server']);
-      final initializeResult = await serverConnection.initialize(
-          InitializeRequest(
-              protocolVersion: ProtocolVersion.latestSupported,
-              capabilities: client.capabilities,
-              clientInfo: client.implementation));
+    for (var withExperiment in const [true, false]) {
+      test(
+          'can be connected with a client with${withExperiment ? '' : 'out'} the experiment flag',
+          () async {
+        final client = TestMCPClient();
+        addTearDown(client.shutdown);
+        final serverConnection =
+            await client.connectStdioServer(Platform.resolvedExecutable, [
+          'mcp-server',
+          if (withExperiment) '--experimental-mcp-server',
+        ]);
+        final initializeResult = await serverConnection.initialize(
+            InitializeRequest(
+                protocolVersion: ProtocolVersion.latestSupported,
+                capabilities: client.capabilities,
+                clientInfo: client.implementation));
 
-      expect(initializeResult.protocolVersion, ProtocolVersion.latestSupported);
-      serverConnection.notifyInitialized();
+        expect(
+            initializeResult.protocolVersion, ProtocolVersion.latestSupported);
+        serverConnection.notifyInitialized();
 
-      expect(
-        await serverConnection.listTools(ListToolsRequest()),
-        isNotEmpty,
-      );
-    });
-
-    test('requires the --experimental-mcp-server flag', () async {
-      final processResult =
-          await Process.run(Platform.resolvedExecutable, ['mcp-server']);
-      expect(processResult.exitCode, isNot(0));
-      expect(processResult.stderr,
-          contains('Missing required flag --experimental-mcp-server'));
-    });
+        expect(
+          await serverConnection.listTools(ListToolsRequest()),
+          isNotEmpty,
+        );
+      });
+    }
   });
 }
 
diff --git a/runtime/bin/platform_macos.cc b/runtime/bin/platform_macos.cc
index b5215ad..1ba2e47 100644
--- a/runtime/bin/platform_macos.cc
+++ b/runtime/bin/platform_macos.cc
@@ -349,7 +349,14 @@
 
   _LSSetApplicationLaunchServicesServerConnectionStatus(0, nullptr);
 
-  _LSApplicationCheckIn(-2, CFBundleGetInfoDictionary(CFBundleGetMainBundle()));
+  CFMutableDictionaryRef dictionary = CFDictionaryCreateMutableCopy(
+      kCFAllocatorDefault, /*capacity=*/0,
+      CFBundleGetInfoDictionary(CFBundleGetMainBundle()));
+  if (dictionary == nullptr) return;
+  ScopedCFStringRef _kLSUIElement("LSUIElement");
+  CFDictionarySetValue(dictionary, _kLSUIElement.get(), kCFBooleanTrue);
+  _LSApplicationCheckIn(-2, dictionary);
+  CFRelease(dictionary);
 
   CFTypeRef asn;
   asn = _LSGetCurrentApplicationASN();
diff --git a/tools/VERSION b/tools/VERSION
index e288b25..b2e1089 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 3
 MINOR 9
 PATCH 0
-PRERELEASE 292
+PRERELEASE 293
 PRERELEASE_PATCH 0
