Skip to content

[MobileWeb] ScrollView with a Single Text Widget and semantics Causes Scroll Jank #176327

Description

@keev-LIM

Steps to reproduce

  1. Write the initialization code SemanticsBinding.instance.ensureSemantics(); in main.dart.
  2. Use any ScrollView.
  3. Place Text widgets in the children. A single Text Widget in the scroll view is enough to reproduce the issue.
  4. On mobile web, scrolling causes jank.

And I Tested It,

Flutter (Channel stable, 3.35.4, on macOS 14.5 23F79 darwin-arm64, locale ko-KR)
Xcode - develop for iOS and macOS (Xcode 16.0)
Phone OS : ios 18.7(Real Device)

I already reported this issue, but I am submitting it again with a clearer reproduction path. (Issue Link)

Expected results

Jank should not occur.

Actual results

scrolling causes jank.

Code sample

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

void main() {
  SemanticsBinding.instance.ensureSemantics();
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: const MyHomePage());
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ListView.builder(
          itemBuilder: (context, index) => Text('Item $index'),
        ),
      ),
    );
  }
}

// Or Any ScrollView with Single Text Widget Causes Jank.
ListView(
        children: [
          Column(
            children: [
              const Text('Jank'),
              ...List.generate(
                  10,
                  (index) => Container(
                        color: index % 2 == 0 ? Colors.red : Colors.blue,
                        width: 300,
                        height: 100,
                      )),
            ],
          ),
        ],
      ),

Screenshots or Video

Screenshots / Video demonstration
ScreenRecording_09-30-2025.09-56-22_1.MP4
ScreenRecording_10-01-2025.10-58-33_1.MP4

Logs

Logs
[Paste your logs here]

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.35.4, on macOS 14.5 23F79 darwin-arm64, locale ko-KR) [297ms]
    • Flutter version 3.35.4 on channel stable at /Users/keev/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision d693b4b9db (2 weeks ago), 2025-09-16 14:27:41 +0000
    • Engine revision c298091351
    • Dart version 3.9.2
    • DevTools version 2.48.0
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations,
      enable-lldb-debugging

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) [1,749ms]
    • Android SDK at /Users/keev/Library/Android/sdk
    • Emulator version 34.1.20.0 (build_id 11610631) (CL:N/A)
    • Platform android-36, build-tools 34.0.0
    • 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 17.0.9+0-17.0.9b1087.7-11185874)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.0) [1,783ms]
    • Xcode at /Applications/Xcode-16.0.0.app/Contents/Developer
    • Build 16A242d
    • CocoaPods version 1.16.2

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

[✓] Android Studio (version 2023.2) [6ms]
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.9+0-17.0.9b1087.7-11185874)

[✓] VS Code (version 1.97.2) [6ms]
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.106.0

[✓] Connected device (4 available) [6.6s]
    • iPhone (wireless) (mobile) • 00008130-000A1C302650001C            • ios            • iOS 18.7 22H20
    • iPhone 15 Pro (mobile)     • 12DA1EDD-FD14-4FEF-BB3C-1320B8DD97AA • ios            • com.apple.CoreSimulator.SimRuntime.iOS-18-0 (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS 14.5 23F79 darwin-arm64
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 140.0.7339.214

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

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work listbrowser: safari-iosonly manifests in Safari on iOSf: material designflutter/packages/flutter/material repository.f: scrollingViewports, list views, slivers, etc.found in release: 3.35Found to occur in 3.35found in release: 3.37Found to occur in 3.37frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onperf: speedPerformance issues related to (mostly rendering) speedplatform-iosiOS applications specificallyplatform-webWeb applications specificallyteam-webOwned by Web platform teamtriaged-webTriaged by Web platform team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions