# 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).

- Skill: `flutter/audit-ui-thread-safety` (Agent Skill)
- Install (CLI): `npx skillmds@latest add flutter/audit-ui-thread-safety`
- Raw SKILL.md: https://api.skillmd.com/api/skills/flutter/audit-ui-thread-safety/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: flutter (https://skillmd.com/u/flutter)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/flutter/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").

