My app has features available to both logged-in and not logged-in users.
I have a welcome screen that explains what the app is all about, which I want the user to be able to opt out of after reading it for the first time.
I created a beautiful “Don’t show this screen again” toggle, and added the true/false component to my users database.
But I just realized, first time visitors haven’t yet created an account, so there’s no user record to update. In fact, some users may never create an account. But they will use parts of the app regularly.
How do I solve this?
How do I display a screen the first time a user launches the app, then allow them to permanently hide that screen even after they launch the app again later.
Create a blank screen that is not linked anywhere and put a text input on it, when the flow is done set the input to ‘true’ or ‘walkthrough done’ or whatever. On your welcome screen page load check if the text input, if it is empty go to onboarding, if it is not empty go to login.
If you want. Or you can keep the toggle, then when the the user clicks whatever button ends your onboarding you can set the unlinked text input to anything with a “sometimes” action where “Don’t show is equal to true”.
You won’t need a property in your collection. Keeping the toggle means that a user can optionally see the onboarding more than once, so it could be a nice feature.
First, I figured this out, and your text input method works great. But…
The first screen still loads briefly before the app jumps to the login screen. Not long, but long enough to see there was something there.
I noticed this happens on my user profile page too, when I have a default avatar set. The screen with the default avatar shows for a second before it jumps to my own user profile page with my own image.
Is there any way to speed this up so the user doesn’t see the initial screen at all?
There is no way to speed that up, however, there is another trick you can do that might make it a nicer experience. Change the first screen from whatever screen you have to a blank white screen (or a different color to match your app). On the blank white screen add the action to load your current first screen or the login screen. It will breifly show a white screen then load the content you want. The user will briefly see the blank screen then the proper screen. It is not the best experience, however, it is probably the best you can get out of no-code
@TKOTC, I have a problem. I did as you suggested and created the text input field on its own screen. This worked perfectly, but I finally came up with another approach. So I deleted the text input field, and the standalone screen too.
But now, whenever I launch the app on my phone, it still skips the intro screen and behaves as if the text input function is still active.
I’ve checked the links on the intro screen and don’t see anything that shouldn’t be there.
So where is the text input data stored? You said text input fields are persistent, so it must be stored somewhere, right?
They are stored in local storage. If you have a browser-based app (sorry, I cannot remember if you are native or web) it will be stored in the browser local storage, on the phone it will be stored in the app data storage.
If you send screenshots to me with the setup I can assist further.
If you want to see the actual location it is stored, open the previewer or shared view in your browser and press the F12 key. This will open the browser developer console. Or, right click on the page and select “inspect” from the context menu. Then go to the Application tab > Storage > Previewer and find persist:root, this is where all your application data is stored