Mandatory Onboarding: Fix Skippable Username & T&C Screen
Hey everyone! We've found a bug/UX issue in the staging environment that needs immediate attention. During the onboarding process in elizaOS and Babylon, the screen where users set their username, display name, and accept the terms & conditions can be skipped. This is a big no-no because it messes with our identity system and could lead to anonymous accounts. Let's dive into the details and how we plan to fix it.
Problem
The core issue is that users can bypass the username and terms & conditions screen during onboarding. They can close the modal, navigate away, or simply continue without filling in the required information. This is problematic for several reasons:
- It breaks the fundamental requirement that every user must have a unique username and accept the terms & conditions before using the app. Imagine the chaos if people could just waltz in without agreeing to the rules! This is a critical part of ensuring that everyone is playing by the same rules.
- It leads to the creation of “anonymous” users, which is something we definitely want to avoid. We need to know who's who in the zoo, and having anonymous accounts makes that impossible. This affects everything from moderation to personalized experiences. The concept of a digital identity becomes meaningless if people can hide behind the veil of anonymity. Think about the implications for community building, accountability, and trust within the platform. It is essential for platform integrity to ensure that users are identifiable, and by allowing the possibility of anonymous accounts, this integrity would be severely compromised.
- It results in inconsistent user profiles, making it harder to manage and personalize user experiences. User data will be unreliable if the onboarding process can be skipped, which can result in many issues. Imagine attempting to target services or content to users based on incomplete or missing profile information. The quality and relevance of user experiences will decrease, which may lead to user dissatisfaction and decreased engagement. To maintain a consistent and personalized experience for every user, it is extremely important to have complete and accurate profile data right from the start.
Expected Behavior
Here's what we expect to happen during onboarding:
- The onboarding pop-up should be unclosable. No 'X' button, no clicking outside the modal, and the Escape key should be disabled.
- Users should not be able to navigate away from the onboarding screen until they've completed it. This means blocking any attempts to go back, refresh the page, or visit other sections of the app.
- Users must:
- Enter a unique username. This needs to be validated in real-time to prevent duplicates.
- Enter a display name. This is how they'll be known in the app.
- Accept the terms & conditions. This is non-negotiable.
- Only after all these conditions are met should the "Continue" button become active, allowing the user to move forward.
In short, we need a rock-solid onboarding process that guarantees every user creates a profile and agrees to our terms before accessing the app. No exceptions!
Actual Behavior
Currently, the actual behavior deviates significantly from what we expect:
- The modal can be closed or bypassed, which is the core of the problem.
- Users can still access and use the app without setting up a profile, completely defeating the purpose of having an onboarding process.
- There is no enforced validation, meaning users can potentially enter invalid or duplicate usernames without any repercussions.
This lack of enforcement creates a loophole that undermines the entire user identity system. It's like leaving the front door of a bank wide open – not a good look!
Acceptance Criteria
To resolve this issue, we need to implement the following acceptance criteria:
- Remove the ability to close the modal:
- Get rid of the 'X' button.
- Disable clicking outside the modal to close it.
- Disable the Escape key from closing the modal.
- Block navigation:
- Prevent users from navigating away from the onboarding screen until it's complete.
- Control the "Continue" button:
- Keep the "Continue" button disabled until all the following conditions are met:
- Username is filled in.
- Username uniqueness is validated against existing usernames.
- Display name is filled in.
- Terms & conditions are accepted (checkbox ticked).
- Keep the "Continue" button disabled until all the following conditions are met:
- Route users forward normally:
- Once the user submits the required information, they should be seamlessly routed to the next stage of the app.
- Prevent bypassing:
- Prevent users from reloading or skipping the page to bypass onboarding.
- Enforce mandatory profiles:
- Ensure that all new users must have a complete profile before they can access the app.
In essence, we need to create a foolproof onboarding process that leaves no room for error or circumvention. It should be a seamless and mandatory step for all new users, ensuring that everyone starts on the right foot. This will not only improve the integrity of our platform but also enhance the overall user experience by providing a more personalized and consistent environment for everyone.