Skip to content

[FR] Make it easier to identify performance bottlenecks in app #9606

@elliette

Description

@elliette

Description

A user is requesting a way to easily find the widget/s responsible for performance issues in their app.

The Performance Panel currently supports tracking widget builds, layouts, and paints to help users diagnose where their app is experiencing bottlenecks.

However, if the app has high frame rates, they can experience data loss in DevTools because the perf events overflow the ring buffer before they can analyze them.

Possible solutions

1. Table of slowest widget builds, layouts, or paints.

Along with displaying the data in the flame chart, we could also sort the data and display the slowest phases at the top of a table to help users quickly identify where their app is experiencing issues.

Estimated scope: S/M (1 week - 1 month)

2. Disabling widgets from the performance view

The user suggested a possible solution of disabling widgets from the performance view. This is a significantly more challenging request. Currently, the Flutter engine is responsible for emitting the build, layout, and paint events. The Dart VM Service listens to these events, and adds them to a ring buffer. The primary challenge here is communicating with the Flutter engine to not emit the events for certain widgets, either with a service extension registered on the framework, or perhaps an annotation that users can add to their widget source code.

Estimated scope: XL (quarter+)


See original request here

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3issues we think are valid but not importantcost: highHigh engineering cost to implementnew featurescreen: performanceIssues with the Performance screen

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions