audit-ui-thread-safety

Evita congelamientos de la interfaz de usuario y garantiza una experiencia de usuario receptiva validando las reglas de subprocesos y migrando las llamadas bloqueantes fuera del 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").

Más skills de flutter

dart-modern-features
flutter
Para encontrar candidatos para la modernización:
flutter-fix-layout-issues
flutter
Corrige errores de diseño en Flutter (desbordamientos, restricciones ilimitadas) usando herramientas Dart y Flutter MCP. Úsalo al abordar "RenderFlex overflowed", "Vertical…
adding-release-notes
flutter
Añade descripciones de cambios visibles para el usuario a las notas de la versión de DevTools. Úsalo al documentar mejoras, correcciones o nuevas funciones en el archivo NEXT_RELEASE_NOTES.md.
reviewing-devtools-prs
flutter
Flujo de trabajo de revisión de PR específico del repositorio de DevTools que aplica las guías de estilo de DevTools y los patrones de revisión comunes. Úsalo al revisar solicitudes de extracción en el…
dart-use-primary-constructors
flutter
Ayuda a los usuarios a escribir constructores primarios sintáctica y semánticamente correctos en Dart, y a migrar/utilizar la nueva sintaxis de constructor, la sintaxis de punto y coma de cuerpo vacío,…
code-documentation
flutter
Guía para escribir documentación de código efectiva, que incluye docstrings, JSDoc, dartdoc y comentarios de implementación. Usa esta habilidad al escribir código nuevo, agregar…
api-review
flutter
Revisa el código especificado conforme a las pautas canónicas de diseño de API. Usa esta habilidad cuando el usuario solicite una revisión de API o quiera verificar el código según las pautas de diseño de API…
flutter-accessibility
flutter
Implementa los estándares de accesibilidad WCAG 2 y EN 301 549 y diseños adaptativos en aplicaciones Flutter. Aplica anotaciones semánticas, tamaños de destino táctil (mínimo 48x48 dp) y relaciones de contraste de texto (4.5:1 para texto pequeño, 3:1 para texto grande) en plataformas móviles, web y de escritorio. Proporciona lógica de decisión para la inicialización de semántica web, envoltura de widgets interactivos, cambio de diseño basado en tamaño de pantalla y manejo de entrada por teclado/ratón. Incluye gestión de enfoque de navegación mediante FocusTraversalGroup y...