AppMachine users who will be publishing their current (Xamarin) apps to the app stores with the new (Flutter) code base need to be aware of some differences between their original app and the new version Flutter of their app. 

If you publish your app with the new publishing flow, your app will use our new (Flutter) code base.
This new app will for example look great on newer devices types ( iPhone 13 / 14) , whereas the Classic version was not optimized for those screen sizes. 


During the publishing process for the new Flutter version of your app, our validator should prevent publication should there be any changes that we fear might be breaking changes. Luckily, these almost never occur. 

Some blocks have undergone small changes, for example the Share button has been moved to the top-right corner. Other blocks have undergone big changes in the background; for example, the JavaScript block has been completely rewritten for the Flutter version. You will need to do some additional steps to start using that block.

Initially, your customers will not be impacted yet by these changes, as they will only be visible in the Web previewer when you are working on your app. When you publish your app with the new publishing flow, your customers will also take advantage of the new functionality.


Make sure to always check your app in the new native Android Previewer or the web previewer prior to publishing to make sure everything looks perfect.

This article describes the small differences between your existing Classic app and your new app.


TABLE OF CONTENTS


General remarks


  1. For now, In the Web Previewer all standard texts are in English.

    This means for example that the default texts like for example the word “Phone” in the Contact block will be called “phone” instead of, for example, “Telefonnummer” in German language apps.

  2. The Web previewer currently doesn’t support more than 1 language.



Modernized POI, Products, People, Events, Photos & Videos blocks

We have modernized these screens by making the following changes:


  1. The order of the items in the screen is adjusted, so that the image is shown first and the title below it.

    Previous                        New

                                                                       

  2. Detail pages: We have replaced the ‘Next’ and ‘Previous’ buttons with a generic ‘share’ button. In modern apps users are much more used to swiping to a new item.

     

                    Previous                                      New
  3. We have also improved what is being shared when someone uses the share button:

     


    4. The 'Show Route' button from the bottom bar is removed. When customers click on the red dot on the map, a contextual menu will be shown which will enable the customer to show the route on Google or Apple maps or copy the coordinates.


Limited showing of URLs, Webpages or links in Web Previewer

The new App Designer Web Previewer is based on web technology. The X-Frame-Option setting is preventing us from showing all internet pages from other websites directly in the web previewer. Sites can use X-Frame-Option to avoid click-jacking attacks, by ensuring that their content is not embedded into other sites, this includes our web previewer.

That’s why the previewer will sometimes show the message shown below and a button to open the link in a new tab in your browser.  In your new native app the webpage will be directly open.







Twitter


The new Twitter block uses the new Twitter API V2 which means that you need to create new Twitter API keys and save them in your AppMachine designer in Settings > Advanced > Twitter.


You need to fill in the first two fields. In this document you need to complete step 1 to retrieve the API key and the secret.

https://developer.twitter.com/en/docs/twitter-api/getting-started/getting-access-to-the-twitter-api



You don’t need to fill in the third and the fourth field.


Web page

The Webpage block had a setting “Page Refresh” with the options “with each block visit” OR “first time visit”. This setting will not be supported anymore. The default behavior in the new mobile client will be “with each block visit”.


Photos

If you had an Instagram photos block in your app, it is now replaced with a webview of your instagram page, as Instagram doesn’t have any API support anymore to show images directly.


Products

In this first Flutter version, the “Add to cart” functionality will not be supported.


Maps Integration

We have rewritten the integration with maps. This involves changes in the following blocks: Screen, Contact, POI and Events. We don’t show a “Show route” button by default, but when you click on the red dot on a map, you will see this bottom menu appear.


This is an example on iPhone:



On Android devices the option “Open in Apple maps” will not be shown.


User management

We have rebuilt the screens for user registration, in order to prepare for the future and improve security. The screens are built with different technology and now have a white labeled design, which means they don’t use the colours or background images from your app anymore.


These new screens are only visible in the previewer for now, your live app will be unaffected and still have the old screens until we make the flutter app available for publishing to the stores.



We have removed support for LinkedIn and Salesforce. If you have any users who logged in with LinkedIn they will need to create a new account using one of the other available options.


Login with both Facebook and Google is working again. And you can now specify your own Facebook API keys to use your own Facebook app to let users login.


The functionality that is dependent on User Registration will continue working as it did.




We are also in the process of adding support for “Apple Sign-in”.


Web services block : Support for Auth providers



The new Flutter app will have support for the next 3 auth providers: 

  1. Basic

  2. Custom

  3. Oauth 2.0.
    We found some issues with the current OAuth2 integration which we improved in the Flutter app. This means that you can start publishing apps with this feature in May 2022.


We are also in the process of adding the OpenID integration as a new Auth provider.

This means we have stopped supporting OAuth 1.0a, OAuth 1.0a one-legged, Static Login, Salesforce of SHA1 signature.


If you are using one of these auth providers, you will need to change these settings in your app before you can publish your app with the new Flutter version after mid May 2022.



Custom JS and PWA

We will not be able to add PWA support for our existing Custom JS block. We needed to make bigger changes to support the Custom JS block in our new Flutter Apps and Progressive Web Apps. Therefore we are introducing a new version of the Custom JS block, which will be called “Javascript V2”. This block is not ready yet, so it’s not available in this first Flutter Web Previewer release. This means that customers with a Custom JS block will have to use the Android Previewer to test changes to their JS code. In this release you won’t be able to view the Custom JS changes in the Web previewer. As soon as we release the new Javascript block, customers will have to make minimal changes to their JS code to migrate to the “Javascript V2” block. We will provide documentation for this process at that time.


Logic

The flutter app supports a subset of the Actions and Conditions you can define in our Logic tab. For Logic we support the following actions: Call, Email, Share, Find Route, Goto, Open Website, Show Message, Set Property and Web Service, for Conditions in our Logic we only support the “if'' condition for now. https://support.appmachine.com/support/solutions/articles/80000978421-logic-script-examples


Music - Soundcloud block

This block has been removed because Soundcloud changed its APIs and this integration is not supported anymore. Every Music - Soundcloud or Soundcloud playlist block stopped working a while ago.

Please remove this block from your app.


Push Messages

Sending geolocated push messages to the app will not be possible in the first versions of Flutter apps. We are evaluating this feature and it may be removed indefinitely. 


Menu / Design changes


Removed support for custom images for buttons.

You might have uploaded custom images in the green Design block > Tab Images.

Those will not be used anymore in the app, instead default lean icons will be used, for example this simple back button and share button:


Before you publish your app with Flutter after Mid May 2022, please check your app and your icon colours, to make sure the default icons will be visible against the background color.


Removed support for Browse and transitions.

For the generic design, the Browse and transition options are deprecated, the previously provided options were not supported on every OS, to ensure the app feels similar on every formfactor we choose to remove these options. We have also removed the option to set transitions when browsing through detail screens.


Tab bar menu

In some cases, longer words will no longer fit on the tab bar menu :



Please also check your Tab bar menus to make sure the default color, selected and hover color work as you expect them to. You might need to make some change to those colours if you have a rather old app. 



Removed Settings

We have removed the following menu settings which were not supported  in the Green Design block :  

  • For the Tab bar, support for Icon menu background has been removed.

  • For the Sliding menu support for “Text above menu” has been removed


Analytics

The current analytics view in the designer will no longer be available when your app is updated to Flutter. Flutter apps will be getting a new Analytics view in the new AppMachine design platform based on Firebase analytics. For finding data about number of downloads you can log into App Store Connect and the Google Play Developer Console until we've completed the new Analytics dashboard.


Splash screens

Splash screens will not be shown in the first versions of Flutter apps. AppMachine is working to reinstate splash screens.