audit-ui-thread-safety

Prevent UI freezes and ensure a responsive user experience by validating threading rules and migrating blocking calls off the Event Dispatch Thread (EDT).

npx skills add https://github.com/flutter/flutter-intellij --skill audit-ui-thread-safety

Skill: UI Thread Safety & Responsiveness

You are tasked with preventing UI freezes and ensuring a responsive user experience by validating threading rules.

Objective

Prevent UI freezes and ensure a responsive user experience by validating threading rules.

Workflow Instructions

1. Baseline

  • Run ./gradlew test and ./gradlew verifyPlugin to ensure the project is in a good state before refactoring.

2. Audit EDT Usage

  • Search for usages of runInEdt, invokeLater, and invokeAndWait.

3. Identify Blocking Calls

  • Ensure no I/O operations (file access, network calls) or heavy computations occur within these UI blocks.

4. Migrate to Background

  • Refactor heavy tasks to run on background threads using Task.Backgroundable or ReadAction.nonBlocking.

5. Check Modality

  • Verify that modal dialogs do not block the UI thread unnecessarily.

6. Verify

  • Run ./gradlew testClasses to ensure safe refactoring.
  • Run ./gradlew test and ./gradlew verifyPlugin to ensure no regressions.
  • Run the plugin in a sandbox (./gradlew runIde) and perform key actions while monitoring for UI freezes.
  • Suggest manual test steps: Check the code changes made and write test steps for a user to execute that will trigger the code paths that have changed. If needed, add logging statements to verify that the code paths have successfully run.

7. Report & Review

  • Summarize the threading fixes.
  • Test Location: Explicitly state where in the IDE the user should go to test the changed functionality (e.g., "Go to Preferences > Languages & Frameworks > Flutter").
  • Action: Ask the user to review the changes closely to ensure no deadlocks or UI freezes are introduced.
  • Do not commit or push.
  • Provide a suggested Git commit message (e.g., "Fix UI freeze: Move heavy computation to background task").

More skills from flutter

dart-modern-features
flutter
To find candidates for modernization:
flutter-fix-layout-issues
flutter
Fixes Flutter layout errors (overflows, unbounded constraints) using Dart and Flutter MCP tools. Use when addressing "RenderFlex overflowed", "Vertical…
adding-release-notes
flutter
Adds user-facing change descriptions to DevTools release notes. Use when documenting improvements, fixes, or new features in the NEXT_RELEASE_NOTES.md file.
reviewing-devtools-prs
flutter
DevTools repository-specific PR review workflow enforcing DevTools style guidelines and common review patterns. Use when reviewing pull requests in the…
dart-use-primary-constructors
flutter
Help users write syntactically and semantically correct primary constructors in Dart, and migrate/use the new constructor syntax, empty-body semicolon syntax,…
code-documentation
flutter
Guide for writing effective code documentation, including docstrings, JSDoc, dartdoc, and implementation comments. Use this skill when writing new code, adding…
api-review
flutter
Reviews the specified code against the canonical API Design guidelines. Use this skill when the user asks for an API review or to check code against API design…
flutter-accessibility
flutter
Implement WCAG 2 and EN 301 549 accessibility standards and adaptive layouts in Flutter apps. Enforces semantic annotations, tap target sizes (48x48 dp minimum), and text contrast ratios (4.5:1 for small text, 3:1 for large) across mobile, web, and desktop platforms Provides decision logic for web semantics initialization, interactive widget wrapping, screen-size-based layout switching, and keyboard/mouse input handling Includes focus traversal management via FocusTraversalGroup and...