i am making the sign up feature and ended up with a lot of problems
in my app workflow, ive set a form component to enter the user email on the sign up page, when the user click on the [submit] button, that data will be stored in a [holding] database, and a random 4 digit number will be created and sent to that email address automatically by using zapier, and goes to the [verification sign up] screen, if the user can type the code correctly, [next] button will be shown and when the user click on it, it’ll go the the [create password] screen with form component and using [user] database to make the text showing dots when entered, when the user click on the [next] button, it’ll go to the [create username] screen, which the username input must be unique from others, not same as any other usernames in the existing data, when it is not, the [sign up] button will show and if the user click on it, it signs the user up and update the data in [user] database with the information they just entered, and it’ll go to the [home] screen
so the problems are
what if the user quits the app in the middle of this process, when the user comes back, it’ll be in the [sign up] screen again making a duplication of the email data in the [holding] database. or it’ll go to the [home] screen skipping the create username process, and the username data will be [null]
what if the user used an existing email in the [holding] or [user] database, it wont do the checking because it is not stored in the default [user] database, it is stored in [holding] database originally
anyone?
Hi @furiousfrog,
Multistep signup / onboarding is quite possible in Adalo, however, there are some things you need to remember:
- When a user isn’t logged in in the app (and keep in mind that Sign Up could be treated like create user account + immediate login), there is no easy way to store the information about current app state and restore it after reopening the app. E.g. if your user isn’t logged in, and leaves the app on the 3rd screen, the app somehow needs (a) to remember what was the last screen and (b) send the user to this screen when opened next time. You can store the screen in the database but the question is how are you going to find this info next time. Of course there are some “hacky” workarounds with local storage but they are not supported.
- When the user is logged-in, you can implement the onboarding. The logic is: when a user opens the app and is logged-in, they get to Home screen. So you can create some nice image on the home screen and add on-screen-enter actions, make them conditional, and direct a user to different screens based on these conditions. The routing logic is explained in this (quite old) video: https://youtu.be/_FjSolSWukg.
- So for the onboarding you can add a property “onboarding stage”, change it based on the step (e.g. put 1, 2, 3,…), and then put on-screen-actions on Home, directing to a particular screen of the flow. And after the step is finished, you update Logged-In User → onboarding stage to the next step.
- Creating password in a separate screen is possible but I wouldn’t recommend doing that. You can sign up a user with a random password and then update it on the next screen, but if a user deinstalls the app and reinstalls it, they will not be able to log in (as they don’t know the password) and to sign up (as the email is already taken). Another option is to get the email from the previous screen and actually sign up the user on a password screen, but this needs to be tested. Unfortunately Adalo sometimes “loses” the values from inputs on previous screens.
- Email verification with code is better to make after signup, and on the separate screen. The issue is that you need to store the code somewhere (logged-in User → code) to be able to compare it with the code entered. And it’s not recommended to do anything immediately after signup - the user record is not “fully ready” and all this becomes very glitchy.
I hope this information is helpful and you’ll be able to adjust the flow.
Best,
Victor.
This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.