¿Qué hace Rendimiento y Fiabilidad Móvil?
Estándares compartidos
Utiliza estos documentos a nivel de repositorio como fuente única de verdad. No copies sus listas de verificación en esta habilidad ni crees variantes locales conflictivas:
Misión
Encuentra el cuello de botella medido y mejora el resultado visible para el usuario sin optimización prematura ni arquitectura innecesaria.
Responsabilidades
Presupuestos de rendimiento, planes de perfilado, mediciones de inicio/frames/memoria/red, diagnóstico de cuellos de botella, indicadores de fiabilidad, verificaciones de regresiones de rendimiento y consejos de remediación respaldados por evidencia.
No es responsabilidad
Dirección visual, cambios en requisitos de producto, refactorizaciones amplias sin evidencia, ni afirmar resultados basados en mediciones de depuración/emulador.
Protocolo de medición
- Perfila en dispositivos físicos en modo perfilado de Flutter; usa compilaciones de release para pruebas de humo y comportamiento de inicio. Los resultados de depuración y emulador no son evidencia de rendimiento en release.
- Comienza con el dispositivo compatible más básico e incluye dispositivos de mayor tasa de refresco cuando sea relevante.
- Registra dispositivo, SO, tasa de refresco, versión de Flutter/Dart, modo de compilación, escenario, tamaño de conjunto de datos, condición de red, repeticiones y herramientas.
- Inspecciona los tiempos de frames de UI y raster por separado. El presupuesto de frames se deriva de la tasa de refresco de la pantalla; no impongas un solo umbral de 60 Hz en todos los dispositivos.
- Informa P50/P95 cuando el tamaño de muestra lo permita. Separa inicio en frío y en caliente, animaciones de primer uso y calentadas, y renderizado local de espera de red.
- Mide recorridos de usuario: primera interacción, navegación principal, desplazamiento, búsqueda/escritura, medios, paneles laterales y transiciones costosas.
- Mide memoria después del calentamiento y recorridos repetidos; distingue asignaciones temporales y recolección de basura normal de fugas de objetos retenidos.
- Mide tamaños de carga, número de solicitudes, latencia, reintentos, cancelación, aciertos/fallos de caché y comportamiento en redes lentas.
- Monitoriza energía/trabajo en segundo plano solo cuando la aplicación usa sondeo, ubicación, medios, sincronización frecuente o flujos en tiempo real.
Secuencia de optimización
- Reproduce el problema bajo un escenario controlado.
- Captura una línea base e identifica si el cuello de botella es build/layout, raster/GPU, Dart CPU, nativo/plugin, decodificación de imágenes, presión de memoria, E/S o red.
- Elige el cambio más pequeño que aborde la causa medida.
- Agrega o actualiza una prueba/medición de regresión.
- Compara antes y después bajo las mismas condiciones.
- Verifica las compensaciones en corrección, accesibilidad, memoria y batería.
Evitar
Islotes prematuros, RepaintBoundary excesivo, cachés sin límite, cargar conjuntos de datos completos, sondeos innecesarios, efectos costosos de opacidad/recorte/saveLayer, reconstrucciones amplias, trabajo síncrono en build y banderas de renderizador sin evidencia. Mantén los valores predeterminados del renderizador de Flutter a menos que el perfilado demuestre un problema específico del dispositivo y la decisión esté documentada.
Fiabilidad
Para recorridos críticos de producción, trabaja con Operaciones para definir SLIs/SLOs de finalización, latencia, disponibilidad y frescura. Investiga tasas de crash/ANR, regresiones de inicio, dependencias de backend, timeouts, tormentas de reintentos y recuperación después de pausa/reanudación de la aplicación o cambios de conectividad.
Puerta de aceptación
Cada requisito crítico de rendimiento tiene un escenario, entorno, métrica, percentil, umbral y línea base repetibles. Los hallazgos identifican la causa; las optimizaciones reivindicadas incluyen evidencia antes/después. El comportamiento de hardware/plataforma no medido se considera No verificado.