Improve user experience Netbird desktop app #1791

Open
opened 2025-11-20 06:06:49 -05:00 by saavagebueno · 16 comments
Owner

Originally created by @bareksml on GitHub (Apr 7, 2025).

Describe the problem

When user double clicks the tray icon (or the desktop shortcut) nothing happens. No window gets opened so user thinks that app has crashed or it is not working at all.

To Reproduce

Steps to reproduce the behavior:

  1. Install netbird
  2. Double click the desktop shortcut
  3. Get confused because nothing happens

Expected behavior

The advantage of Netbird client is that it should be dead simple for every user, regardless of experience. Current behaviour defeats this advantage by being confusing.

I know it is tray app however in general netbird lacks a proper status window where user could see the status of connection without guessing. Note that green chevron on the tray icon is small and may be poorly visible, also guessing from the status of (Connect/Disconnect) in right click menu is semi readable.

I suggest that:

  1. Netbird app started from autostart should be visible as it.
  2. Netbird app started as double click should:
  • make sure that try app is running
  • case connection already confiured: display status window
  • case fresh install or no connection present: initialize a connection setup (same as rmb->connect)
  1. Double click on a tray icon should:
  • case connection already confiured: display status window
  • case fresh install or no connection present: initialize a connection setup (same as rmb->connect)
  1. Status menu item should be added to the rmb menu on a tray icon

Are you using NetBird Cloud?

yes

NetBird version

v0.39.2

Is any other VPN software installed?

no

Originally created by @bareksml on GitHub (Apr 7, 2025). **Describe the problem** When user double clicks the tray icon (or the desktop shortcut) nothing happens. No window gets opened so user thinks that app has crashed or it is not working at all. **To Reproduce** Steps to reproduce the behavior: 1. Install netbird 2. Double click the desktop shortcut 3. Get confused because nothing happens **Expected behavior** The advantage of Netbird client is that it should be `dead simple` for every user, regardless of experience. Current behaviour defeats this advantage by being confusing. I know it is tray app however in general netbird lacks a proper status window where user could see the status of connection without guessing. Note that green chevron on the tray icon is small and may be poorly visible, also guessing from the status of (Connect/Disconnect) in right click menu is semi readable. I suggest that: 1. Netbird app started from autostart should be visible as it. 2. Netbird app started as double click should: - make sure that try app is running - case connection already confiured: display status window - case fresh install or no connection present: initialize a connection setup (same as rmb->connect) 3. Double click on a tray icon should: - case connection already confiured: display status window - case fresh install or no connection present: initialize a connection setup (same as rmb->connect) 4. Status menu item should be added to the rmb menu on a tray icon **Are you using NetBird Cloud?** yes **NetBird version** v0.39.2 **Is any other VPN software installed?** no
saavagebueno added the feature-requestUX labels 2025-11-20 06:06:49 -05:00
Author
Owner

@nazarewk commented on GitHub (Apr 7, 2025):

To summarize what I understood:

  • a new GUI view for the kind of information netbird status presents
  • you want it to pop up after the app gets started from a shortcut/menu
  • you want to put it under double click of the tray menu

The Tray already seems to react to a single click (by opening up menu) on all 3 supportes operating systems (Windows, MacOS & Linux).

I have indeed noticed Windows just hides the tray item after opening it up, any idea if it's possible to make it "sticky" by default?

@nazarewk commented on GitHub (Apr 7, 2025): To summarize what I understood: - a new GUI view for the kind of information `netbird status` presents - you want it to pop up after the app gets started from a shortcut/menu - you want to put it under double click of the tray menu The Tray already seems to react to a single click (by opening up menu) on all 3 supportes operating systems (Windows, MacOS & Linux). I have indeed noticed Windows just hides the tray item after opening it up, any idea if it's possible to make it "sticky" by default?
Author
Owner

@bareksml commented on GitHub (Apr 8, 2025):

@nazarewk

Just try thinking like inexperienced office user without IT background. User clicks the shortcut , nothing visible happens in a foreground. Try to figure out the status of connection - it is hardly visible by this green chevron only.

For that reason i have proposed to add status page so it can be disaplayed on double clicks.
I have also proposed to initialize connection on double click when there is no connection already configured.
The autostart for tray app can have commandline switch to prevent this behavior messing up a tray app autostart.

@bareksml commented on GitHub (Apr 8, 2025): @nazarewk Just try thinking like inexperienced office user without IT background. User clicks the shortcut , nothing visible happens in a foreground. Try to figure out the status of connection - it is hardly visible by this green chevron only. For that reason i have proposed to add status page so it can be disaplayed on double clicks. I have also proposed to initialize connection on double click when there is no connection already configured. The autostart for tray app can have commandline switch to prevent this behavior messing up a tray app autostart.
Author
Owner

@mlsmaycon commented on GitHub (Apr 8, 2025):

@bareksml thanks for opening this request and sharing your view. Can you clarify a few points?

  • How do you see the status window? What content would be displayed?
  • Should we display this window for a few seconds to give peace of mind to users? Or should they close it manually?
  • For a fresh install, we can't try to connect on double click because it would attempt to connect to our cloud environment. Is doing so after the first connection a good improvement, too?
@mlsmaycon commented on GitHub (Apr 8, 2025): @bareksml thanks for opening this request and sharing your view. Can you clarify a few points? - How do you see the status window? What content would be displayed? - Should we display this window for a few seconds to give peace of mind to users? Or should they close it manually? - For a fresh install, we can't try to connect on double click because it would attempt to connect to our cloud environment. Is doing so after the first connection a good improvement, too?
Author
Owner

@TheRizzock commented on GitHub (Apr 16, 2025):

Not sure if "1. Netbird app started from autostart should be visible as it." means the tray app should open after windows boot (or any os really). This would be great because in UX a majority of users wont understand why it is or isn't there sometimes. Working on a mac solution but I have a work around that applies a reg key at:

HKLM:\Software\Microsoft\Windows\CurrentVersion\Run

Name: NetBird
Type: String
Value: C:\Program Files\NetBird\netbird-ui.exe

@TheRizzock commented on GitHub (Apr 16, 2025): Not sure if "1. Netbird app started from autostart should be visible as it." means the tray app should open after windows boot (or any os really). This would be great because in UX a majority of users wont understand why it is or isn't there sometimes. Working on a mac solution but I have a work around that applies a reg key at: HKLM:\Software\Microsoft\Windows\CurrentVersion\Run Name: NetBird Type: String Value: C:\Program Files\NetBird\netbird-ui.exe
Author
Owner

@bareksml commented on GitHub (Apr 22, 2025):

Hello,

@mlsmaycon usual thing for the status window (showing green/red icon for connected disconnected) maybe some basic statistics.

@nazarewk the tray icon behavior is not the issue here. Issue is that user gets a shortcut on desktop so the natural next step is double clicking the shortcut. Nothing happens therefore i propose status window or something similar just to avoid the confusion. Regular user does not care if this is tray app or windowed app.

@bareksml commented on GitHub (Apr 22, 2025): Hello, @mlsmaycon usual thing for the status window (showing green/red icon for connected disconnected) maybe some basic statistics. @nazarewk the tray icon behavior is not the issue here. Issue is that user gets a shortcut on desktop so the natural next step is double clicking the shortcut. Nothing happens therefore i propose status window or something similar just to avoid the confusion. Regular user does not care if this is tray app or windowed app.
Author
Owner

@YapWC commented on GitHub (May 12, 2025):

proper status window where user could see the status of connection without guessing

I think what @bareksml saying does make sense. User will normally expect UI to be consistent across platforms whether it is on Mobile or Desktop. On Mobile by default it shows the peers connection and in an instant I will know whether am I connected and also who is connected or disconnected.

Without having the peer list on Desktop Client it will confuse majority of user who are not well versed with IT technicalities. I believe this simple implementation of peers list on Netbird Desktop will create a huge difference to user experience by multiple fold.

As for the double click on shortcut and nothing happens confusion mentioned, I believe a direct pop up of connection and peers list/status should be sufficient.

@YapWC commented on GitHub (May 12, 2025): > proper status window where user could see the status of connection without guessing I think what @bareksml saying does make sense. User will normally expect UI to be consistent across platforms whether it is on Mobile or Desktop. On Mobile by default it shows the peers connection and in an instant I will know whether am I connected and also who is connected or disconnected. Without having the peer list on Desktop Client it will confuse majority of user who are not well versed with IT technicalities. I believe this simple implementation of peers list on Netbird Desktop will create a huge difference to user experience by multiple fold. As for the double click on shortcut and nothing happens confusion mentioned, I believe a direct pop up of connection and peers list/status should be sufficient.
Author
Owner

@bareksml commented on GitHub (May 14, 2025):

So let me share today experience.

For a period of one month users were told:
"please use netbird domain to connect the service in a secure way, we leave old way as a backup"

Yesterday i started switching the clients to the internal netbird domain which points to cgnat address. Today morning there is a couple of people who has connection issues. After investigation it is clear that they havent connected to netbird for a whole month. Some of them claim that they are connected yet i see coresponding peers inactive.

I see a straight path between bad client experience and having a questions about alternatives. This is natural when client's can't distinguish if they are connected or not and they bounce the support all over again.

@bareksml commented on GitHub (May 14, 2025): So let me share today experience. For a period of one month users were told: "please use netbird domain to connect the service in a secure way, we leave old way as a backup" Yesterday i started switching the clients to the internal netbird domain which points to cgnat address. Today morning there is a couple of people who has connection issues. After investigation it is clear that they havent connected to netbird for a whole month. Some of them claim that they are connected yet i see coresponding peers inactive. I see a straight path between bad client experience and having a questions about alternatives. This is natural when client's can't distinguish if they are connected or not and they bounce the support all over again.
Author
Owner

@nazarewk commented on GitHub (May 14, 2025):

Issue is that user gets a shortcut on desktop so the natural next step is double clicking the shortcut. Nothing happens therefore i propose status window or something similar just to avoid the confusion. Regular user does not care if this is tray app or windowed app.

Without having the peer list on Desktop Client it will confuse majority of user who are not well versed with IT technicalities.

As for the double click on shortcut and nothing happens confusion mentioned, I believe a direct pop up of connection and peers list/status should be sufficient.

Those are great pieces of feedback, we will take them into consideration.


Yesterday i started switching the clients to the internal netbird domain which points to cgnat address. Today morning there is a couple of people who has connection issues. After investigation it is clear that they havent connected to netbird for a whole month. Some of them claim that they are connected yet i see coresponding peers inactive.

@bareksml Can you provide more details on the case?

  1. What makes users think/claim that they are connected?
  2. Is the Tray icon showing as connected while it's not? If it's the case, then it's a bug and it would be great to get as many details on it as possible
@nazarewk commented on GitHub (May 14, 2025): > Issue is that user gets a shortcut on desktop so the natural next step is double clicking the shortcut. Nothing happens therefore i propose status window or something similar just to avoid the confusion. Regular user does not care if this is tray app or windowed app. > Without having the peer list on Desktop Client it will confuse majority of user who are not well versed with IT technicalities. > As for the double click on shortcut and nothing happens confusion mentioned, I believe a direct pop up of connection and peers list/status should be sufficient. Those are great pieces of feedback, we will take them into consideration. --- >Yesterday i started switching the clients to the internal netbird domain which points to cgnat address. Today morning there is a couple of people who has connection issues. After investigation it is clear that they havent connected to netbird for a whole month. Some of them claim that they are connected yet i see coresponding peers inactive. @bareksml Can you provide more details on the case? 1. What makes users think/claim that they are connected? 2. Is the Tray icon showing as connected while it's not? If it's the case, then it's a bug and it would be great to get as many details on it as possible
Author
Owner

@bareksml commented on GitHub (May 14, 2025):

@nazarewk

Sorry but things went quite urgent today so i had limited time for investigation.

ad 1. I guess they see the tray icon or they assume client is connected by the fact the connect option in rmb menu is grayed out.
ad 2. That's what i have seen some time ago but can't recall the detail. Netbird is based on stateless wireguard and i had the same experience with wireguard clients too.

Maybe the stateless nature of wireguard should lead into conclusion that as soon as user clicks connect the client should report establishing connection state. Later it should evolve into connected only if fully functional tunnel is established. For example by inspecting the keepalive status. IDK if that idea is valid for mesh yet maybe it is a good question to ask.

@bareksml commented on GitHub (May 14, 2025): @nazarewk Sorry but things went quite urgent today so i had limited time for investigation. ad 1. I guess they see the tray icon or they assume client is connected by the fact the `connect` option in rmb menu is grayed out. ad 2. That's what i have seen some time ago but can't recall the detail. Netbird is based on stateless wireguard and i had the same experience with wireguard clients too. Maybe the stateless nature of wireguard should lead into conclusion that as soon as user clicks `connect` the client should report `establishing connection` state. Later it should evolve into `connected` only if fully functional tunnel is established. For example by inspecting the keepalive status. IDK if that idea is valid for mesh yet maybe it is a good question to ask.
Author
Owner

@nazarewk commented on GitHub (May 14, 2025):

Maybe the stateless nature of wireguard should lead into conclusion that as soon as user clicks connect the client should report establishing connection state.

The NetBird client reports connected as soon as it establishes connection with Management server.

Later it should evolve into connected only if fully functional tunnel is established. For example by inspecting the keepalive status. IDK if that idea is valid for mesh yet maybe it is a good question to ask.

I don't see how one could define a "fully functional tunnel" when having ~300 allowed Peers out of which 100 might go online once a month or less often? Most people have a lot less peers to worry about, but there are those with a lot more connected at once.

This can be displayed on a specific Peer level, not folded into a single connection status.

One idea that pops to mind is only picking/reporting peers that are reported Online in the Management, maybe adding a 3rd Pending state or something like this. I can ask the team what they think about this one, but I'm not sure how technically feasible is this and whether it wouldn't break some other assumptions.

@nazarewk commented on GitHub (May 14, 2025): > Maybe the stateless nature of wireguard should lead into conclusion that as soon as user clicks connect the client should report establishing connection state. The NetBird client reports connected as soon as it establishes connection with Management server. > Later it should evolve into connected only if fully functional tunnel is established. For example by inspecting the keepalive status. IDK if that idea is valid for mesh yet maybe it is a good question to ask. I don't see how one could define a "fully functional tunnel" when having ~300 allowed Peers out of which 100 might go online once a month or less often? Most people have a lot less peers to worry about, but there are those with a lot more connected at once. This can be displayed on a specific Peer level, not folded into a single connection status. One idea that pops to mind is only picking/reporting peers that are reported Online in the Management, maybe adding a 3rd `Pending` state or something like this. I can ask the team what they think about this one, but I'm not sure how technically feasible is this and whether it wouldn't break some other assumptions.
Author
Owner

@nazarewk commented on GitHub (May 14, 2025):

I have some feedback from the team:

  • lazy connection feature will change states to Connected, Connecting and Idle
  • currently the status of the Peer is spread over multiple server components, with neither of those being able to answer the "is the peer online?" question
  • right now we don't know how we would be able to extract the "fully offline" information without creating unnecessary dependencies between components, but we are not dismissing the idea right away

Do you have any feedback/opinion on how important such a feature would be for end users?

@nazarewk commented on GitHub (May 14, 2025): I have some feedback from the team: - [lazy connection feature](https://github.com/netbirdio/netbird/pull/3818) will change states to `Connected`, `Connecting` and `Idle` - currently the status of the Peer is spread over multiple server components, with neither of those being able to answer the "is the peer online?" question - right now we don't know how we would be able to extract the "fully offline" information without creating unnecessary dependencies between components, but we are not dismissing the idea right away Do you have any feedback/opinion on how important such a feature would be for end users?
Author
Owner

@mlsmaycon commented on GitHub (May 14, 2025):

So let me share today experience.

For a period of one month users were told: "please use netbird domain to connect the service in a secure way, we leave old way as a backup"

Yesterday i started switching the clients to the internal netbird domain which points to cgnat address. Today morning there is a couple of people who has connection issues. After investigation it is clear that they havent connected to netbird for a whole month. Some of them claim that they are connected yet i see coresponding peers inactive.

I see a straight path between bad client experience and having a questions about alternatives. This is natural when client's can't distinguish if they are connected or not and they bounce the support all over again.

@bareksml to ensure I understood correctly. The couple of users that weren't connected for over a month didn't notice that their connectivity went away, like when the session expires? If so, what are their operating system?

@mlsmaycon commented on GitHub (May 14, 2025): > So let me share today experience. > > For a period of one month users were told: "please use netbird domain to connect the service in a secure way, we leave old way as a backup" > > Yesterday i started switching the clients to the internal netbird domain which points to cgnat address. Today morning there is a couple of people who has connection issues. After investigation it is clear that they havent connected to netbird for a whole month. Some of them claim that they are connected yet i see coresponding peers inactive. > > I see a straight path between bad client experience and having a questions about alternatives. This is natural when client's can't distinguish if they are connected or not and they bounce the support all over again. @bareksml to ensure I understood correctly. The couple of users that weren't connected for over a month didn't notice that their connectivity went away, like when the session expires? If so, what are their operating system?
Author
Owner

@bareksml commented on GitHub (May 14, 2025):

@nazarewk Thanks for the feedback Krzysiek. You are right however please don't forget that it is the bad user experience with determining the client status that convinced me to create this issue.

Concerning the connection status in a mesh. Maybe the status should be derived from the availability of some core services within the mesh, like the dns that provides *.netbird.cloud? Just for your consideration.

@mlsmaycon Yes ,they claimed their client software is connected yet no connection via mesh is possible. Also last seen was not updated for them. The clients are running on windows.

B.R.
Bart

@bareksml commented on GitHub (May 14, 2025): @nazarewk Thanks for the feedback Krzysiek. You are right however please don't forget that it is the bad user experience with determining the client status that convinced me to create this issue. Concerning the connection status in a mesh. Maybe the status should be derived from the availability of some core services within the mesh, like the dns that provides *.netbird.cloud? Just for your consideration. @mlsmaycon Yes ,they claimed their client software is connected yet no connection via mesh is possible. Also `last seen` was not updated for them. The clients are running on windows. B.R. Bart
Author
Owner

@mlsmaycon commented on GitHub (May 14, 2025):

Thanks for the feedback, @bareksml. We are considering a few changes and will consider some suggestions from this thread/issue.

It would be great if you could confirm with them what status they saw that led them to believe they were connected. Getting that from the source will help us improve in the right direction.

@mlsmaycon commented on GitHub (May 14, 2025): Thanks for the feedback, @bareksml. We are considering a few changes and will consider some suggestions from this thread/issue. It would be great if you could confirm with them what status they saw that led them to believe they were connected. Getting that from the source will help us improve in the right direction.
Author
Owner

@bareksml commented on GitHub (May 15, 2025):

@mlsmaycon I understand your concern about the reliability of this information yet we speak about non tech people who are working for completely separate business entity. We have no control over their software and even if we had the information will always be fuzzy due to the user nature. It's difficult to promise anything yet i will try to get more reliable feedback asynchronously after 25th.

@bareksml commented on GitHub (May 15, 2025): @mlsmaycon I understand your concern about the reliability of this information yet we speak about non tech people who are working for completely separate business entity. We have no control over their software and even if we had the information will always be fuzzy due to the user nature. It's difficult to promise anything yet i will try to get more reliable feedback asynchronously after 25th.
Author
Owner

@mlsmaycon commented on GitHub (May 15, 2025):

Thank you, @bareksml; your input is reliable but similar to ours; it comes from a more technical person, and getting it from the end user might help us more.

@mlsmaycon commented on GitHub (May 15, 2025): Thank you, @bareksml; your input is reliable but similar to ours; it comes from a more technical person, and getting it from the end user might help us more.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SVI/netbird#1791