AppGyver – All your perfect imperfections

I thought I’d take a few days off from specific learning of AppGyver during my 100 days journey and collect some of the pain points I had. Or, maybe more accurately, some of the things I wish I’d known before I started.

Apologies to John Legend.

NOTE:

  • There are some features that are in the process of making AppGyver fully “enterprise ready” with SAP Business Technology Platform, as discussed at Sapphire. I am not discussing those.
  • I believe AppGyver is in the process of making a lot of usability improvements, which may address many of these.
  • Some of the items below may reflect my ignorance: of already-existing features that solve the issue, of simple workarounds.
  • I do not mean to be critical, I am just …

… I doth* protest too much. Here’s the list.


“Foreign” characters in my API

I was using the MLB API and everything was fine on the web version but not on my iPhone version, which is the one I always check. I reached out to AppGyver development, but we never found a solution or even cause.

Turned out that I discovered when testing the API that there were special characters in the response, because many of the players had Spanish names. I figured these were causing problems, and luckily the API let me remove these field from the output (there were other name fields without special characters) and then it worked.

Saving your work … all the time

In order to go to a different page, I am required to save (or revert) my changes. I’m sure there’s a good reason for this, but it is not intuitive to me – in a Word document, for example, I’m not asked to save when I go to a different page.

It can take me awhile to realize this is a problem, as I keep clicking a different page and yet it doesn’t open. It can happen that I end up with a bunch of “Please save” messages before I realize what is happening.

Not obvious start page

I still cannot figure out which page is opened when you reopen a project in design time (I would have assumed the last page I modified, but that seems not true).

I also cannot figure out what order the pages are displayed on the pages page. All I know, it would be nice to rearrange them, I cannot figure out how to do that. Also, I would like to change the ID of a page (like from “Page 1” to “Main Page”) on the Navigation tab but not sure how to change it – I think I can change it to a different page and then return it to back to the same page and it now displays the page name instead of ID, but not sure.

I have seen many questions in the forums about how to change the start page. I don’t think this is that difficult to understand – drag and drop on the Navigation tab the page you want to the top – but I still think people get confused because of the pages page that shows all your pages in a certain order.

Going back from tab to app

This is just something I wish I had known earlier. When going to one of the tabs on the top (e.g., Navigation or Data), you can return to the app by clicking the X on the side. But this gets tiring after a while.

I eventually realized that I can simply click the tab again and that tab disappears and the app returns.

Removing a component

Control-Z is probably the greatest software invention of all time, followed closely by Control-C, Control-X, and Control-V.

But these don’t work in AppGyver.

WHenever I want to delete a component on the canvas, I instinctively press Control-X, and then the Delete key. neither works. It still takes me a second to realize I have to click the little X to remove the component.

Also, the REVERT button is nice, but I don’t know how far it is going to go back. Generally, I want to go back just the last small step.

Data Variable on each page

I generally like the ease and simplicity of setting up API calls, with data resource and then a data variable.

But there is some quirkiness about dealing with special cases, which are not so rare. For example, I want to have a certain set of data on several pages, but I have not figured how to do this without creating a data variable on each page, which seems unnecessary overhead – again, there may be a reason for this that I don’t know about.

I also needed to modify the response for one of my calls – because it provided an object when it returned one object but a list when returning more then one object. I could do this with an HTTP Request flow function – Thank you for the pretty easy workaround 😀 – but still I felt it a clunky thing I had to do.

Mount vs. focus

This one is probably because I have not studied all the events that are available for all the different components, and admittedly not a real problem. But it confused me what it meant when a page mounted and when it received focus, and which one to use for various logic flows.

Here is the documentation for events: https://docs.appgyver.com/app-logic/events

Though there is clear documentation, there is a concept of navigation stack, which outside these events I had never heard about and still am not 100% sure on. There is documentation on this, and I will get to it as soon as I can.

Change name of data resource

I had set up my data access to an on-device resource, but didn’t like the name  so I changed it. But this created a second data resource and my flow function was now set to the wrong data resource (and I had a duplicate data resource).

Defining logic in multiple screens

There are times where I am adding logic to an app, let’s say, when a variable changes values. But this can be defined in many logic panes (e.g., in the logic for an input field AND in the logic pane for the entire page).

Problem becomes I cannot find where I defined it. Even more confusing, sometimes not knowing I defined it already I define it twice, often in slightly different ways.

Can’t find where alert is being triggered

This is basically a specific case as the previous issue, except that involves some Alert I created that is annoying me and I want to shut off but I cannot find where it is coming from.

Not being able to access UI control properties

Sometimes I simply want to get the value being displayed in a UI component, however it is bound. But there does not seem to be a way to get most component properties.

Yes, yes, I can access the underlying variable, and maybe this is how an app should be developed. But I’m not a developer! I mean, not a pro developer who would know how applications are “supposed” to be built.


* “Doth” is actually archaic 3rd person … I should have written “I DO protest too much”. If you complain to me, I would say, “Thou dost protest too (expletive) much”.