I cant remember exactly where i heard/read this.
A user will be navigated to the “update_app” screen when they perform an action that hits bubble backend, example; create a thing.
I don’t 100% like it, because not all actions on our app hits bubble’s backend, and until then, user won’t know to update their app.
I have also noticed that when using a deprecated build, anything that uses the operator “current user is logged in / logged out” isn’t working.
For example, in my menu screen, at the top, I have a text “welcome current user first name”, and much more options available, like edit profile, payment methods etc if the current user is logged in.
Result :
The user sees a screen with “Welcome Thibaut!” but the screen options doesn’t make any sense because the current user is logged in / logged out operator is broken !
So it is expected that current user is logged in/logged out would not work on a deprecated build because that version of the apps API is no longer available - ie the app can’t get data from a version that has been removed.
Also, we can only know if a user needs to update their app if a request hits the server, because otherwise, there is no way to know what version they are on.
If you really want to make sure that an app version is not available to a user who has downloaded it already, you’ll want to retire these on app store connect or google play console directly. This will also force the user to upgrade to the newer version. We can only control deprecating the backend version an app is hitting, we cannot control what versions show up in the app store - that is up to the developer!
Just from a bit of research since I am not actually at this stage of needing to retire old version, it seems “retiring” builds on app store connect is not a thing? is this for Google Play?
Also if this does continue to “taunt” developers, could your team not implement a simple backend call “Y/N” for local version = current version when the app is re-opened? Or a client-side api connector call to a static version.json?
Indeed, from what I know and from my experience with past mobile apps, retiring a build, whether in app store or play store, is not a thing. Without a version check mechanism on app launch, users who are on an old version can still open the app.
Maybe I am wrong ?
@patrick.white is on to a good idea, could the team implement a simple version check mechanism on app launch ? @nick.carroll
In the meantime, I’m going to implement a workaround manually. On app launch, I’m going to use the action “create a new thing” and create a simple test thing. This will call the backend and redirect users to the update screen if they are on a deprecated version.
So if your app is in testflight, navigate to that tab and then select a build you want to expire. At the top right, you’ll see a button that says “expire build” When you expire the build, users will no longer be able to download it on testflight. There is a similar mechanism for managing published releases as well
So Apple is referring to only having 1 version available for download in the app store at a time, but that doesn’t mean all existing versions on users devices cease to function - thats what deprecating a live version on bubble is meant to accomplish - not allow the server to be reached & show the update app banner so a user has to either force refresh or download depending on the update type
Yet, on my iPhone, I have version 2.0.4 installed, I can access it and it is fully functional. The app is reaching the server (retrieving things from the database) and I am not getting prompted to refresh/update my app.
Ok if 2.0.4 is still working, but the live version has been deprecated on the Bubble side, that is def a bug. Have you filed a bug report for this yet?
side note: apologies for the significant back and forth