Optimización del Rendimiento en Aplicaciones Canvas – Parte I

Crear aplicaciones Canvas es más fácil que nunca, pero mantenerlas rápidas, ágiles y escalables es donde empieza el verdadero oficio.

A medida que las aplicaciones crecen en complejidad, se conectan a múltiples fuentes de datos y sirven a más usuarios, el rendimiento puede convertirse rápidamente en un desafío. Las pantallas lentas, los largos tiempos de carga, las advertencias de delegación y el comportamiento impredecible suelen ser síntomas de decisiones tomadas al principio del desarrollo.

¿La buena noticia? La mayoría de los problemas de rendimiento en Canvas Apps se pueden evitar con los patrones de diseño adecuados y una comprensión clara de cómo Power Apps evalúa fórmulas, recupera datos y carga controles en cada pantalla.

Ya sea que estés optimizando una solución existente o sentando las bases para una nueva, adoptar prácticas centradas en el rendimiento garantiza una experiencia más fluida para tus usuarios y una aplicación más fácil de mantener para tu equipo.

Esta es la primera parte de una serie de artículos sobre este tema. ¡Estad atentos para más novedades!

Monitorización

Empecemos a explorar las opciones disponibles para entender dónde pueden estar los problemas de rendimiento.

Herramienta de Monitor

La herramienta Monitor es una de las funciones más potentes, aunque poco utilizadas, disponibles para los desarrolladores de Canvas App. Piénsalo como una radiografía para tu aplicación: revela lo que ocurre entre bastidores cada vez que un usuario abre una pantalla, pulsa un botón o activa una fórmula.

Aunque las aplicaciones pueden parecer simples, las Canvas Apps generan una enorme cantidad de actividad en segundo plano: llamadas de red, consultas de datos, evaluaciones de control, actualizaciones de componentes y más. Monitor captura todo esto en tiempo real.

Monitor es una herramienta de diagnóstico en tiempo real que rastrea y visualiza cómo se comporta tu aplicación Canvas durante la ejecución.

Registra todos los eventos significativos, incluyendo:

  • Llamadas a fuentes de datos
  • Fórmulas que se están evaluando
  • Respuestas de los conectores
  • Eventos de carga para controles y pantallas
  • Errores, advertencias y mensajes de delegación

Puedes ejecutar Monitor desde Power Apps Studio o conectarlo a una app publicada que use otra persona. Esto la hace extremadamente valiosa no solo para el desarrollo, sino también para la resolución de problemas reportados por los usuarios finales.

Captura de pantalla de la herramienta Monitor

Application Insights

Aunque la herramienta Monitor es perfecta para diagnósticos en tiempo real durante el desarrollo y la resolución de problemas, no está diseñada para un seguimiento continuo y a largo plazo del rendimiento. Ahí es donde entra Application Insights.

Application Insights (App Insights), parte de Azure Monitor, ofrece un enfoque centralizado, escalable y basado en análisis para entender cómo se comportan tus aplicaciones Canvas a lo largo del tiempo, en todos los usuarios, todos los dispositivos y todas las sesiones.

Application Insights es un servicio de telemetría y monitorización basado en la nube que recopila métricas detalladas, rastros, errores y análisis de uso de tus aplicaciones. Cuando se integra con las aplicaciones de Canvas, te permite rastrear:

  • Cuellos de botella en el rendimiento
  • Patrones de comportamiento del usuario
  • Llamadas de datos lentas o fallidas
  • Ejecuciones de flujo
  • Eventos personalizados y métricas de tiempo
  • Errores que ocurren en producción
  • Geo y uso de dispositivos

A diferencia de la herramienta Monitor, que es basada en sesiones, Application Insights captura datos de forma continua, incluso cuando no estás observando activamente la aplicación. Esto lo hace ideal para entornos donde las aplicaciones se usan a gran escala, en diferentes regiones o departamentos.

App Insights and Monitor son más efectivos cuando se usan juntos, porque cumplen funciones diferentes pero complementarias.

Captura de pantalla de parte de la información rastreada por Application Insights

Custom Tracing

Aunque Monitor y Application Insights te ofrecen potentes capacidades de diagnóstico fuera de la app, a veces necesitas datos de rendimiento desde dentro de la propia app. Esto es especialmente útil cuando:

  • Quieres medir el tiempo de ejecución de una fórmula específica
  • Quieres analizar el impacto en el rendimiento de una pantalla, un componente o una acción del usuario
  • Quieres enviar telemetría de rendimiento a Application Insights
  • Quieres instrumentación ligera sin abrir el monitor

Aquí es donde la función Trace() de Power Apps se vuelve extremadamente valiosa. Permite escribir entradas de telemetría personalizadas que pueden visualizarse en Monitor o enviarse a sistemas externos de telemetría como App Insights.

La función Trace() te permite registrar eventos personalizados directamente desde tu código Power Fx. Cada traza puede contener:

  • Un mensaje (string)
  • Un nivel de gravedad (Información, Advertencia, Error)
  • Una bolsa de propiedades con campos personalizados para una analítica enriquecida

Por ejemplo:


Estos eventos aparecen en:

  • Monitor (bajo «Traces»)
  • Application Insights (si usas la integración experimental)

Esto significa que puedes crear entradas de telemetría precisas y definidas por el desarrollador que te dicen exactamente qué ocurrió y cuándo.

Power Fx no tiene una función de «temporizador» incorporada, pero puedes crear fácilmente mediciones de rendimiento usando:

  • Now() para capturar marcas de tiempo
  • Variables para almacenar los tiempos de inicio/final
  • DateDiff() para calcular la duración
  • Trace() para registrar el resultado

Por ejemplo:

En resumen, la función Trace() transforma tu aplicación Canvas de una caja negra a una aplicación completamente instrumentada. Creando temporizadores de rendimiento personalizados directamente en Power Fx, puedes medir tiempos reales de ejecución, solucionar comportamientos lentos y enviar telemetría a los sistemas de monitorización empresarial.

Este enfoque es sencillo de implementar, muy flexible y muy valioso para crear aplicaciones Canvas rápidas y fiables.

Fuentes de Datos

Las aplicaciones Canvas admiten muchas fuentes de datos, pero las dos más utilizadas en las organizaciones son Dataverse y SharePoint. Aunque ambos pueden impulsar aplicaciones robustas, se comportan de forma muy diferente en cuanto a rendimiento, escalabilidad, delegación y relaciones de datos. Comprender sus fortalezas y limitaciones es esencial para construir aplicaciones rápidas y fiables.

Dataverse

Dataverse es una plataforma de datos de nivel empresarial basada en la nube, diseñada específicamente para Power Apps, con capacidades relacionales, tipos de datos ricos y características de rendimiento sólidas. Cuando el rendimiento importa, Dataverse suele ser la mejor opción, especialmente para aplicaciones medianas y grandes.

Dataverse ofrece:

  • Delegación nativa para la mayoría de las funciones Power Fx
  • Consultas optimizadas que se ejecutan en el lado del servidor
  • Capacidades relacionales integradas en la plataforma
  • Seguridad a nivel de fila y campo
  • Consistencia entre entornos y pipelines ALM

Gracias a estas características, Dataverse escala mucho mejor que SharePoint para aplicaciones empresariales.

Una de las características más fuertes de Dataverse es su modelo relacional. Las tablas pueden enlazarse a través de:

  • Relaciones uno‑a‑muchos
  • Relaciones de muchos‑a‑uno
  • Relaciones de muchos‑a‑muchos

¿Por qué las relaciones son importantes para el rendimiento?

  • Consultas más rápidas: Dataverse puede unir tablas relacionadas en el lado del servidor, reduciendo el número de llamadas de datos separadas que tu aplicación debe realizar.
  • Búsquedas delegables: Cuando se definen relaciones, puedes filtrar en tablas relacionadas de forma totalmente delegable y mucho más eficiente que filtrando manualmente el lado del cliente.
  • Comportamientos en cascada: Puedes definir reglas en cascada (eliminar, asignar, etc.) que reduzcan la lógica personalizada en tu app.
  • Mejora de la integridad de los datos: Las claves y restricciones foráneas evitan que los datos queden huérfanos o inconsistentes, reduciendo errores y mejorando la fiabilidad.

SharePoint

SharePoint es extremadamente popular como fuente de datos porque es sencillo, familiar y ampliamente disponible. Sin embargo, no fue diseñada como una base de datos relacional de alto rendimiento, lo que significa que los desarrolladores deben ser conscientes de sus límites.

¿Dónde SharePoint funciona bien?

SharePoint encaja cuando:

  • Apps son ligeras
  • Listas de menos de 20.000–30.000 elementos
  • Estructuras de datos simples y planas
  • Escenarios basados en documentos

Si está correctamente optimizado, SharePoint puede ofrecer un buen rendimiento, pero solo si diseñas teniendo en cuenta sus limitaciones.

Las listas de SharePoint pueden crecer con el tiempo y, una vez que superan los 5.000 elementos, la plataforma impone un «umbral de vista de lista» que afecta al filtrado y ordenación. Aquí es donde las columnas indexadas se vuelven esenciales.

¿Por qué importa la indexación?

Debido a que mejora el rendimiento del filtrado en el lado del servidor, SharePoint devuelve resultados más rápido y con menos tensión sobre el servidor.
Además, si intentas filtrar datos basándote en una columna no indexada y el número de elementos en la lista supera los 5.000, la consulta simplemente no devolverá nada.

Optimización de consultas

Uno de los conceptos más importantes en el rendimiento de Canvas App es la delegación: el proceso por el cual Power Apps convierte tus fórmulas en consultas que se ejecutan directamente en la fuente de datos (Dataverse, SharePoint, SQL, etc.).

Entender cómo funciona la delegación te permite diseñar fórmulas que escalen, evitan resultados incompletos y evitan operaciones de red lentas.
La delegación no es solo un detalle técnico: determina fundamentalmente el rendimiento de tu aplicación.

¿Qué es la delegación?

Cuando escribes una fórmula, Power Apps debe decidir si puede enviar este filtro al servidor (Dataverse o SharePoint) o si debe:

  • Descarga todos los datos al cliente
  • Realizar el filtrado en memoria

Esta es la diferencia entre:
✔️ consultas rápidas, escalables, del lado del servidor.
❌ Lento procesamiento del lado del cliente con resultados parciales

Si la fórmula es delegable, Power Apps la traduce en una consulta que la fuente de datos entiende. Si no es delegable, Power Apps recupera solo la primera parte del conjunto de datos (por defecto = 500 filas, máximo = 2.000 filas) y procesa el resto localmente, lo que lleva a registros incompletos, carga lenta y comportamientos impredecibles.

¿Cómo Power Apps decide qué columnas y tablas relacionadas consultar

Cuando tu aplicación se conecta a una fuente de datos como Dataverse o SharePoint, no carga todos los campos ni todas las tablas relacionadas por defecto. En su lugar, Power Apps determina dinámicamente qué datos se necesitan basándose únicamente en las fórmulas de Power Fx utilizadas en toda la aplicación. El motor interno de Power Apps analiza tus fórmulas y crea un plan de ejecución para consultas. Ese plan determina:

  • ¿Qué columnas de una tabla deben recuperarse?
  • ¿Qué tablas relacionadas deben unirse o ampliarse?
  • Qué filtros deben delegarse
  • Qué operaciones deben realizarse en el lado del servidor frente al lado del cliente

Entender cómo Power Apps decide esto es fundamental para el rendimiento, especialmente para conjuntos de datos grandes o pantallas complejas.

Power Apps utiliza un modelo de «poda de columnas».
Solo solicitará columnas que tu app realmente referencia.

En cuanto a las tablas relacionadas, los campos de búsqueda crean relaciones.
Cuando haces referencia a una consulta, Power Apps puede obtener datos relacionados con tablas.

¿Qué desencadena consultas relacionadas con tablas?

  • Visualización de campos de búsqueda (ThisItem.Customer.Name)
  • Filtrado en campos de búsqueda
  • Ordenación por campos de búsqueda
  • Uso de búsquedas polimórficas (por ejemplo, Owner en Dataverse)

Si las relaciones están correctamente definidas en Dataverse:

  • Power Apps puede usar uniones en el lado del servidor
  • Las consultas siguen siendo delegables
  • Puedes evitar múltiples llamadas a LookUp() dentro de una galería

Conclusión

Esta es la primera parte de una serie de artículos sobre este tema.

En artículos posteriores, seguiremos explorando cómo la forma en que se diseñan las pantallas y las fórmulas también influye en el rendimiento de tus aplicaciones.

Si tienes dificultades para optimizar el rendimiento de alguna de tus aplicaciones y necesitas ayuda, no dudes y CONTACTA AHORA.

Redes relacionadas:

Microsoft Power Apps.

Spark Labs by Creativity Spark, our learning path on YouTube.

Suscríbete a nuestro boletín