Skip to content

[web][canvaskit] Safari 26.5 / WebKit 21625: scroll views render with huge gaps between widgets #185931

Description

@alancook

Steps to reproduce

  1. flutter create safari_test (Flutter 3.41.9, engine 42d3d75)
  2. Replace lib/main.dart with a minimal Scaffold > Center > SingleChildScrollView > ConstrainedBox(maxWidth: 440) > Column containing a FlutterLogo, a Text headline, eight Cards, and an ElevatedButton (full source below).
  3. flutter build web --release --no-web-resources-cdn
  4. Serve and open in Safari 26.5 / WebKit 21625.1.13.19.1 on macOS 26.5 (25F5053d).

Live reproduction (canvaskit, default config):
https://alancook.github.io/patient-manager/safari-test/

Expected results

Centered column with cards stacked normally, scrollable if needed (works correctly in Chrome / Firefox).

Actual results

In Safari 26.5 the page renders as an extremely tall scroll view: each child widget is separated by huge vertical gaps (many times its own height). The flutter-view element reports its normal viewport size (e.g. 1584x884) and <body> is position: fixed; inset: 0, but the rendered scene inside is enormous. Same behavior with the host app — confirmed it is not application code.

Switching the renderer to skwasm via wasmAllowList: { webkit: true } does not fix it.

Works fine in:

  • Chrome / Edge (blink) — same build, same URL.
  • Older Flutter (3.38.7 / engine prior to current) on the same Safari beta — confirmed by tagged build windows-patient-manager-windows-1.0.0-build65-20260419-120b0bd of our app, which renders correctly on this same machine/browser.

Code sample

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

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

class TestApp extends StatelessWidget {
  const TestApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: SingleChildScrollView(
            padding: const EdgeInsets.all(32),
            child: ConstrainedBox(
              constraints: const BoxConstraints(maxWidth: 440),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  const FlutterLogo(size: 96),
                  const SizedBox(height: 24),
                  Text('Safari Layout Test',
                      style: Theme.of(context).textTheme.headlineMedium),
                  const SizedBox(height: 48),
                  for (int i = 1; i <= 8; i++) ...[
                    Card(
                      child: ListTile(
                        leading: CircleAvatar(child: Text('$i')),
                        title: Text('Row $i'),
                        subtitle: const Text('subtitle text here'),
                      ),
                    ),
                    const SizedBox(height: 8),
                  ],
                  const SizedBox(height: 16),
                  ElevatedButton(
                      onPressed: () {}, child: const Text('Test Button')),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

Logs

No console errors. <body> computed style (broken case):

position: fixed; inset: 0; width: 1584px; height: 922px;
overflow: hidden;

<flutter-view> reports width: 1584px; height: 884px. The scene rendered inside Skia/canvaskit is many viewport-heights tall.

Flutter Doctor

Flutter 3.41.9 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 00b0c91f06 (3 days ago) • 2026-04-29 10:03:19 -0700
Engine • hash 9161402dc0e134b3fb5adee5046b6e84b1a5e1c1 (revision 42d3d75a56) (4 days ago) • 2026-04-28 17:31:55.000Z

Browser: Safari Release 242, Version 26.5 (21624.2.2), WebKit 21625.1.13.19.1
OS: macOS 26.5 Beta (25F5053d)

Metadata

Metadata

Labels

P1High-priority issues at the top of the work listbrowser: safari-macosonly manifests in Safari on macOSc: regressionIt was better in the past than it is nowhas reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-webWeb applications specificallyteam-webOwned by Web platform team

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions