PowerApps: I can see why, but don't
Tags: mobile, nocode, enterprise, trying
Published: 2021-02-02 22:30:54

![I'm baked](https://dev-to-uploads.s3.amazonaws.com/i/4xrpqil0wbe9lvufas20.jpg)
Here's the deal, your company has a small development team, and they are either probably making a new system or trying to fix the dumpster fire that is your legacy code. 

You have some free time, and your boss says that 'we need a mobile component in this new platform' and he tells you that he seen that new cool shiny no-code Power Platform, and since basically all the other systems run on Microsoft services, it kinda seems like a good idea. You go check it out...

> This is a review of the Canvas component of PowerApps, which is what I'm most fluent on. But it offers Model Based 

## What they tell you get

#### Get started quickly

Probably the only thing that I like. I'm a back-end developer, I deal with services and command lines, I don't know how in the hell I'm suppose to design an app. 

PowerApps helps a lot with this, and I do mean **A LOT**.

It abstracts a lot of boilerplate code that you would have to deal and maintain otherwise. You want a scrollable component which has a list of elements and maybe their photo and status? PowerApps got you covered. It's just a matter of dragging and dropping in your canvas, configuring access to the database and defining what field should go where.

#### Build apps without compromises

You literally can't make anything that isn't pre-made by Microsoft itself. Your app is basically a big-ass zip file with a bunch of json files in it. 

Do you want to hash something? Good luck, not even the obscurest of the functions that are not in the documentation (which is a common theme here) and the greenest of the dollars for that premium subscription will help you. 

#### Enable extensibility for developers

Don't even start with this bullshit.

Yes, you can relatively easily make a custom connector to an external API, but, god, at what cost?

Any sane professional developer would choke and die as soon as he/she sees the syntax of this god forsaken language(whatever it is, more details bellow)

## What you actually get

#### Poor API and Documentation

docs.microsoft.com always were and always will be one of the worst places in the internet. But I will control myself and just talk about the PowerApps section of it

Trying to read it you get the feeling that you are high. Everything is under a layer of haze.

Forget anything you know about programming conventions. Here are some of my favorites:

1- Functions

Functions start with a capital letter, you separate it's arguments with a `;` and finish calling it with `;;`

But here's the thing, they never tell you this. In fact, **EVERYTHING** in the docs is separated by `,` and finished by `;`
![Case in point](https://dev-to-uploads.s3.amazonaws.com/i/ank7cm9bzbivlk9hh78a.png)

This seems to be a recent change, because even the Microsoft Forums tell you the same thing. Why is this never mentioned is beyond me.

2- Variables and Collections

This is a JavaScript developer dream. Everything is global, everything is dynamic-typed and everything can break your code.

A table is a collection of records. But a collection is also a separate data-type. A variable can be a table but it can't be a collection. 

Also you have the Filter, Search and LookUp functions. They are used to return a sub-table of a collection. They are different, but not actually. The only way to understand the difference between these three is to achieve godhood and even then you will just use a ForAll function with an If function inside to return and collect inside a collection because this prevents Delegation, which is a very fun and well documented topic (~~sarcasm~~), from happening.

#### Power Automate (previously Microsoft Flow)

Let's say that you want to do some more advanced stuff in your app, like parsing something, then you will then have to use Power Automate.

The way that you configure both of them seem pretty straightforward:

1- Create your flow using the PowerApps trigger, which lets you set up the input variables
2- Add a action that lets you return data to your app
3- Add the flow trigger to your app 

Simple, right?

**WRONG**

God forbid you change any of the input variables in the Flow. Your App will never complain about it. In fact it won't even run if you change the way you call it, and will only complain about it if you run and the flow returns a error. To fix this, **DELETE THE FLOW COMPLETELY**, create it again, and set up it again in your app with that simple variable change. Now, that's the good stuff.

Also, every variable in Power Automate is statically typed in contrast to Power Apps. Make sure you know what type is your parameter by memory because there is no tool in your arsenal that will help you then.

#### Debugger

The debugger is borderline useless, the only thing that it shows is calls to network and what was the user action. That's it. Nothing more to tell about it.

#### ALM (Application lifecycle management)

This is supposed to be your DevOps of your PowerApp.

Except that the test suite is in beta and its broken, you can't import Flows that work with your app to the solution (equivalent to a package), and you need to pay to Microsoft to have more than the default environment, else, you cant have separation between development and production.

Pro-tip: Export and unzip your app manually in your desktop into a git repo. It works best than the convoluted mess that is the Azure DevOps solution that Microsoft tells you to use.

#### Some other things

- Sometimes the whole app would glitch out for no reason, and nothing would work. When this happens, export your app, delete it from the list and import it again. This also happens with Power Automate;
- There is no way to declare a function, so an alternative if you need to use the same code is either copying and pasting your code or create an invisible button that does what you want and telling to that button to be clicked when you want;
- I found that the easiest way to debug the app is to create a bunch of text boxes and configuring it to display the variables that you want. The equivalent of doing ```print(var)``` in Python;

- Developers in https://powerusers.microsoft.com just seem to deal with most of this bs, they mostly go "Yeah, this happens. Here's a workaround that could or could not work based on the positioning of the planets" 

## Final remarks

After all this, give PowerApps a try, honestly. Just be accustomed to surrendering to the our all-mighty Microsoft overlord's entire ecosystem.

It is a very powerful tool that can, in fact, help you and your company to test new workflows and explore new frontiers without too much thinking. Under all this mess that I just told you, there is a fantastic idea. Its just rough. Like most developers in their early-20s.

PS: This is completely based in my 2 month experience using this hell.