Canvas Apps en Power Apps: Fundamentos, funcionamiento y buenas prácticas
Las Canvas Apps son la forma más flexible y personalizada de crear aplicaciones dentro de Microsoft Power Apps. A diferencia de las Model-driven Apps, en una Canvas App comienzas con un lienzo en blanco donde tú decides el diseño de cada pantalla, los controles, la lógica de negocio y las conexiones de datos, usando el lenguaje de fórmulas Power Fx.
En este artículo veremos qué es una Canvas App, cómo funciona, ejemplos de fórmulas con Power Fx y buenas prácticas recomendadas en escenarios reales.
¿Qué es una Canvas App?
Una Canvas App es una aplicación de bajo código (low-code) en la que el creador diseña la interfaz de usuario mediante una experiencia de arrastrar y soltar. En lugar de partir de un modelo de datos rígido, tienes control total sobre:
- La distribución de pantallas.
- El diseño y estilo de los controles.
- La lógica que reacciona a eventos (OnSelect, OnVisible, etc.).
- Las conexiones a datos internos y externos.
Es especialmente útil cuando necesitas:
- Interfaces muy personalizadas.
- Apps móviles para equipos de campo.
- Formularios inteligentes con lógica condicional.
- Apps que integren múltiples orígenes de datos.
Características principales de las Canvas Apps
-
🎨 Control total del diseño:
Posicionas cada control exactamente donde lo necesitas. -
⚡ Lógica con Power Fx:
Usas fórmulas similares a Excel para escribir la lógica de negocio. -
🔗 Conectores a más de mil fuentes de datos:
Dataverse, SharePoint, SQL, Excel, Microsoft 365, Dynamics 365, APIs personalizadas, entre otros. -
📱 Soporte para móvil, tablet y web:
Puedes orientar la app a un tipo de dispositivo o crear diseños responsivos. -
🧩 Componentes reutilizables:
Creas tus propios bloques de UI y lógica que puedes reutilizar en varias pantallas o apps. -
🔐 Seguridad empresarial:
Integración con Microsoft Entra ID (antes Azure AD), roles de Dataverse, conectores seguros y administración centralizada.
Estructura básica de una Canvas App
Una Canvas App suele estar organizada en:
- Pantallas (Screens): Home, Detalles, Editar, Configuración, etc.
- Controles: Galerías, formularios, botones, campos de texto, iconos, etc.
- Fórmulas Power Fx: Asociadas a propiedades como
Items,OnSelect,Visible,Default, etc. - Conexiones de datos: Dataverse, SharePoint, SQL, Excel, etc.
- Variables y colecciones: Para almacenar datos temporales o de contexto.
Ejemplos de nombres de pantallas y controles:
HomeScreen
DetailsScreen
EditScreen
galProducts
frmCustomer
btnSave
txtSearch
Introducción a Power Fx en Canvas Apps
Power Fx es el lenguaje de fórmulas que impulsa la lógica de las Canvas Apps. Es declarativo y se inspira en las fórmulas de Excel, lo que facilita que analistas de negocio y makers no desarrolladores puedan crear apps complejas.
Ejemplo 1: Filtrar datos en una galería
Propiedad Items de una Gallery llamada galProducts:
Filter(
Products,
Category = "Electronics"
&& txtSearch.Text in Name
)
Ejemplo 2: Crear una variable global al iniciar la app
En la propiedad OnStart de la app:
Set(
CurrentUser,
User()
);
Set(
IsManager,
"Manager" in CurrentUser.Email
)
Ejemplo 3: Navegar entre pantallas
En la propiedad OnSelect de un botón:
Navigate(
DetailsScreen,
ScreenTransition.Fade
)
Ejemplo 4: Validación de datos antes de enviar un formulario
If(
IsBlank(txtEmail.Text),
Notify(
"El correo electrónico es obligatorio.",
NotificationType.Error
),
SubmitForm(frmCustomer)
)
Conexiones de datos en Canvas Apps
Las Canvas Apps pueden conectarse a una amplia variedad de orígenes de datos, por ejemplo:
- Microsoft Dataverse
- SharePoint
- SQL Server
- Excel en OneDrive/SharePoint
- Dynamics 365
- Microsoft 365 (Outlook, Teams, etc.)
- APIs REST a través de Custom Connectors
Ejemplo: cargar datos de un origen de datos conectado llamado Products en una colección local:
ClearCollect(
colProducts,
Products
)
Ejemplo: guardar cambios en Dataverse mediante un formulario:
SubmitForm(frmOrder)
Componentes reutilizables en Canvas Apps
Los componentes permiten encapsular UI y lógica que se repite en varias pantallas o aplicaciones, como:
- Barras de navegación.
- Encabezados con título y acciones.
- Pie de página con información de usuario.
- Controles de búsqueda reutilizables.
Ejemplo: usar un componente cmpHeader con una propiedad personalizada TitleText:
cmpHeader.TitleText = "Panel principal"
También puedes exponer propiedades de salida, por ejemplo OnAction, que otros controles pueden usar para disparar lógica cuando el usuario interactúa con el componente.
Casos de uso típicos de Canvas Apps
1. Apps de inspección en campo
- Captura de fotos, ubicación GPS y notas.
- Registro de resultados de inspección.
- Integración con Power Automate para enviar reportes por correo o Teams.
2. Gestión de inventarios
- Lectura de códigos de barras o QR con la cámara del dispositivo.
- Consulta y actualización de existencias en Dataverse o SQL.
- Registro de entradas y salidas con trazabilidad.
3. Formularios empresariales inteligentes
- Solicitudes de compra, vacaciones, viáticos, entre otros.
- Validaciones dinámicas y visuales.
- Aprobaciones integradas con flujos de Power Automate.
4. Tableros operativos móviles
- Visualización de datos clave en tiempo real.
- Integración con Power BI y Dataverse.
- Acceso rápido a KPIs desde el móvil.
Buenas prácticas para Canvas Apps
1. Convenciones de nombres
Usa prefijos para identificar el tipo de control:
btnSave
txtEmail
galOrders
frmCustomer
lblTitle
cmpSidebar
Esto hace que la app sea más fácil de mantener y entender.
2. Evita problemas de delegación
Cuando trabajes con fuentes grandes (miles de registros), asegúrate de que tus funciones sean delegables, es decir, que la consulta se ejecute en el servidor y no solo en el cliente.
Funciones como Filter, Search, Sort y LookUp son delegables para muchas fuentes de datos, pero la delegación depende del conector. Siempre revisa los indicadores de delegación en Power Apps Studio.
3. Uso responsable de colecciones
Las colecciones (Collect, ClearCollect) son útiles, pero:
- Evita cargar volúmenes innecesariamente grandes.
- Prefiere acceder directamente al origen cuando sea posible.
- Úsalas para caché de datos que cambian poco o para escenarios offline.
4. Optimiza la carga inicial
En lugar de cargar todos los datos en OnStart, piensa qué realmente necesita el usuario en la primera pantalla y qué puede cargarse bajo demanda.
5. Mantén tus fórmulas legibles
Divide fórmulas complejas en pasos usando variables:
Set(
IsValidEmail,
!IsBlank(txtEmail.Text) && "@" in txtEmail.Text
);
If(
IsValidEmail,
SubmitForm(frmCustomer),
Notify("El correo no es válido.", NotificationType.Error)
)
¿Cuándo elegir una Canvas App?
Elige una Canvas App cuando:
- La experiencia de usuario y el diseño son prioridad.
- Necesitas una app móvil o de tablet a medida.
- Integras múltiples orígenes de datos en una misma interfaz.
- Quieres construir rápido y con flexibilidad visual.
- Necesitas formularios con lógica condicional avanzada.
Si, en cambio, tu escenario está altamente basado en procesos de negocio y un modelo de datos estructurado en Dataverse, quizá una Model-driven app sea más adecuada. En muchos proyectos, se combina ambas aproximaciones.
Conclusión
Las Canvas Apps son una pieza clave dentro de Power Apps y de toda la Power Platform. Ofrecen la combinación perfecta entre diseño visual, lógica declarativa con Power Fx, conectores a datos empresariales y capacidades móviles. Dominar Canvas Apps te permite construir soluciones rápidas, potentes y adaptadas exactamente a cómo trabajan los usuarios en tu organización.
Referencias oficiales (Microsoft Learn)
-
Canvas Apps overview
https://learn.microsoft.com/power-apps/maker/canvas-apps/ -
Power Apps overview
https://learn.microsoft.com/power-apps/powerapps-overview -
Power Fx documentation
https://learn.microsoft.com/power-platform/power-fx/ -
Delegation overview
https://learn.microsoft.com/power-apps/maker/canvas-apps/delegation-overview -
Controls reference
https://learn.microsoft.com/power-apps/maker/canvas-apps/controls/control-reference -
Components in Canvas Apps
https://learn.microsoft.com/power-apps/maker/canvas-apps/component-framework/