Skip to content

[iOS 27 Beta] Tapping TextFormField in Release/TestFlight build unexpectedly overlays launch/splash screen #187844

Description

@Pbja44

Context / Attempts to Fix

  • UISceneDelegate Migration: We initially suspected this could be related to recent iOS windowing and lifecycle changes, so we fully implemented and adopted UISceneDelegate in our iOS runner. However, the exact same behavior persists even after ensuring a correct UISceneDelegate setup.

Steps to reproduce

  1. Distribute the Flutter application via TestFlight (Release configuration) to a device running iOS 27 Beta.
  2. Launch the application and navigate to any screen containing a text entry field.
  3. Tap on the TextField or TextFormField.
  4. Observe that the launch/splash screen unexpectedly appears and overlays the view.

Expected results

Tapping the text field should focus the input, display the text cursor, and bring up the iOS soft keyboard normally without any visual glitches or splash screen overlays.

Actual results

Upon tapping the text field in Release/TestFlight mode on iOS 27 Beta, the application immediately overlays the splash screen for a few seconds. After this brief period, it returns to the active view. This does not happen when debugging the application locally.

Code sample

Code sample
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(
        body: Center(
          child: Padding(
            padding: EdgeInsets.all(16.0),
            // Render basic isolated component
            child: InputTextGW(placeholder: 'Tap here to trigger issue'),
          ),
        ),
      ),
    );
  }
}

class InputTextGW extends StatefulWidget {
  const InputTextGW({
    super.key,
    required this.placeholder,
    this.controller,
    this.focusNode,
  });

  final String placeholder;
  final TextEditingController? controller;
  final FocusNode? focusNode;

  @override
  State<InputTextGW> createState() => _InputTextGWState();
}

class _InputTextGWState extends State<InputTextGW> {
  late final FocusNode _focusNode;
  late final TextEditingController _controller;

  @override
  void initState() {
    super.initState();
    _focusNode = widget.focusNode ?? FocusNode();
    _controller = widget.controller ?? TextEditingController();
  }

  @override
  void dispose() {
    if (widget.focusNode == null) _focusNode.dispose();
    if (widget.controller == null) _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisSize: MainAxisSize.min,
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        TextFormField(
          controller: _controller,
          focusNode: _focusNode,
          decoration: InputDecoration(
            hintText: widget.placeholder,
            filled: true,
          ),
        ),
      ],
    );
  }
}

Logs

Logs

console

NO LOGS

Media

Video
MicrosoftTeams-video.mp4

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.44.1, on macOS 26.5 25F71 darwin-arm64, locale es-MX) [11.1s]
    • Flutter version 3.44.1 on channel stable at /opt/homebrew/Caskroom/flutter/3.32.5/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 924134a44c (13 days ago), 2026-05-29 12:13:22 -0400
    • Engine revision c416acfeb8
    • Dart version 3.12.1
    • DevTools version 2.57.0
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets,
      no-enable-swift-package-manager, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration

[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0) [14.6s]
    • Android SDK at /Users/usuario/Library/Android/sdk
    • Emulator version 35.4.9.0 (build_id 13025442) (CL:N/A)
    • Platform android-36, build-tools 36.0.0
    • ANDROID_HOME = /Users/usuario/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 21.0.6+-13355223-b631.42)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 26.5) [22.2s]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 17F42
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [7ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Connected device (4 available) [20.5s]
    • iPhone Crediclub (wireless) (mobile) •  XXXXXXXXXX    • ios            • iOS 27.0 24A5355q
    • iphone se 3rd (mobile)               • XXXXXXXXXX            • ios            • com.apple.CoreSimulator.SimRuntime.iOS-26-1 (simulator)
    • macOS (desktop)                      • macos                                • darwin-arm64   • macOS 26.5 25F71 darwin-arm64
    • Chrome (web)                         • chrome                               • web-javascript • Google Chrome 149.0.7827.103

[✓] Network resources [331ms]
    • All expected network resources are available.

• No issues found!

Metadata

Metadata

Assignees

Labels

a: productionIssues experienced in live production appsa: text inputEntering text in a text field or keyboard related problemse: OS-version specificAffects only some versions of the relevant operating systemfyi-iosFor the attention of iOS platform teamfyi-text-inputFor the attention of Text Input teamplatform-iosiOS applications specifically

Type

No type
No fields configured for issues without a type.

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions