Skip to content

Implement 'No-DOM' Semantics Mode and Benchmarks #190576

Closed

Description

@harryterkelsen

Context

To support Automatic Pointer Interceptors on the web, the engine must know the interactive bounds of all widgets. This requires the framework to send semantics information down to the engine by default. However, constructing and updating the full ARIA DOM tree is computationally expensive and shouldn't be done unless assistive technologies are actively requested.

Tasks

  • Implement a "no-DOM semantics" mode in the Flutter Web Engine. This mode will process incoming semantics updates to maintain the internal SemanticsObject tree but skip the creation and styling of aria-* DOM elements.
  • Turn on framework semantics by default on Web when not explicitly disabled.
  • Performance Benchmarks: Write or update macrobenchmarks that test complex, scrollable UIs containing platform views. Validate that enabling this "no-DOM" semantics mode by default does not cause regressions in Time-to-Interactive (TTI), frame rendering time, or scroll smoothness.

Activity

  1. added
    frameworkflutter/packages/flutter repository. See also f: labels.
    c: proposalA detailed proposal for a change to Flutter
    P1High-priority issues at the top of the work list
    team-webOwned by Web platform team
    triaged-webTriaged by Web platform team
    on Aug 4, 2026
  2. harryterkelsen commented on Oct 27, 2026

    @harryterkelsen
    ContributorAuthor

    We're actually dropping this. Benchmarking shows that even without DOM manipulation, semantics by default incurs a noticeable performance penalty. I have another way of getting the hit test information in a draft PR.

  3. github-actions commented on Nov 10, 2026

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  4. locked as resolved and limited conversation to collaborators on Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

P1High-priority issues at the top of the work listc: new featureNothing broken; request for a new capabilityc: proposalA detailed proposal for a change to Fluttercustomer: acdccustomer: googleVarious Google teamsframeworkflutter/packages/flutter repository. See also f: labels.team-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