Skip to main content


There are a few ways to approach onboarding. Regardless of our preferred approach, we should consider the progressive disclosure design principle.

Progressive Disclosure - a design principle / approach that emphasizes step by step discovery of essential information instead of showing everything at once. The goal of this approach is to minimize the amount of information disclosed to user to avoid being overwhelmed or confused. Instead, the user discovers the necessary steps or learns about new information and concepts on a need-to-know basis. Using this design principle, we can defer some concepts until the user really needs to know about them.

Let’s explore our options and the pros and cons to each approach.

Approach 1: Minimize steps at all costs

Enter name > Follow some accounts > Done.

A user can simply enter their name and a key is automatically generated for them. For our relays, we select a handful of quality relays at random and allow the user to explore more on their own time in settings. Profile image is autogenerated. We’ll need to follow some account which are probably preselected for us to avoid the mess of the global chat.

Setting a name allows the user to quickly write notes - as that is the only field that is necessary to have some sort of an identity. We could also just generate a random name and profile image for them if we choose to take it one step further.


  • Two steps (low friction)
  • Don’t need to understand any new concepts up front such as keys or relays
  • Easy to test the client and to see if there’s anything interesting to browse


  • Low friction means less skin in the game. When no effort is involved in signup, leaving the app is just as easy as joining.
  • Pre-selected followed accounts may not offer any topics of interests to the user
  • The responsibility of backing up a private key is delayed. New users may forget or not care to save the private key, losing their access in the process.
  • Missed opportunity to personalize content based on hashtags or topics.

While this approach seems like the obvious way of doing things, it’s important to consider the post-signup experience and the various trade-offs discussed above.

Approach 2: Skin in the game

An alternative to minimizing steps at all costs is to offer the least steps possible while providing a few “skin in the game” screens. Users who personalize their experience may feel more inclined to stick around a bit longer after the initial sign-up.

Skin in the game screens may include:

  • Name
  • Profile photo
  • Personalized following of hashtags and or topics
  • Personalized recommendations of users based on chosen hashtags or topics
  • Color / theme options if available
  • Any other low friction personalization options that do not involve much thinking or leaving the client to get the necessary information


  • With a slightly more personalized profile people are more likely to explore the platform longer as they have invested time already.
  • Personalized hashtag and or topic following could mean better content to keep the users more engaged
  • Personalized follow recommendations could spark better conversations, increasing the likelihood of them sticking around beyond the initial onboarding.


  • If you include a step which you thought was low friction but is actually high, users could spend too much time thinking about how to handle it and just leave.

List of low and high friction steps

The following is a work in progress list of potential onboarding screens divided into a low and high friction category. Low friction meaning the step is easy to complete and high meaning more thought is involved which could create a potential dropoff point.

Low friction:

  • Name
  • Clickable interests
  • Profile Image (can be high friction too), but good for personalizing the initial experience

High friction:

  • About
  • Relay selection (new concept, too many options and questions)
  • Video (especially over 40 seconds long)
  • Key generation (new concept)
  • Too many text explainers
  • NIP5 / nostr address
  • Zaps
  • Extensions (requires leaving the flow and signing up for another service)
  • Unknown people recommendations (not necessarily high friction but could add to confusion) – better to present well known accounts or publications (eg. news feeds – we have many).

Callout: High friction does not mean you should never include this step. It really depends on what type of client you’re designing / building. For example, if your client’s sole purpose is to help nostr users manage their identity and settings, then it is reasonable to include those setting screens in onboarding. Nosta is one such example where the extra steps are justified because the entire purpose of Nosta is to set up your account in a guided fashion. As a general rule of thumb, keep onboarding to the absolute minimal number of steps required for the best user experience while relying on progressive disclosure to educate the user later.

During the onboarding process, designers and developers are faced with the decision to auto-follow recommended hashtags, topics and or users.

What is the best way of handling this? Should we auto follow or allow users to select their own?

Generally speaking users should have autonomy in everything they do and not be forced into something they may not agree with. However, that doesn’t mean we can’t simplify their experience by offering recommendations, as long as they have an option to change the preset options.

OK: auto-follow some accounts (let’s say 20) with an option to unfollow all or unfollow individually. Gray area: auto-follow accounts without an option to unfollow all at once, but with an option to unfollow individually. Not OK: auto follow some users without any option to unfollow

Should we allow users to skip all onboarding steps?

Typically, yes. As long as your app functions just fine if the user skips all of the steps, then ensure the user has full autonomy over their decisions.

Special cases

It’s possible that nostr developers decide that the “Global” feed is not useful and should never be shown to users because it creates a bad experience. In this case, if your onboarding step contains an area for topic following, it is entirely reasonable to ask the user to make a decision on a few topics so that they have at least something to browse. In this scenario, without choosing a topic, the user would have no way to interact any further with the app unless the developer provides some other options.