DEV Community

Alexey
Alexey

Posted on

Building Mumi VPN: Keeping an Android VPN Simple to Use

A VPN app can look simple: choose a server, tap a button, and connect.

As the developer of Mumi VPN, I have found that the more interesting work is deciding what the app should do around that button: which apps to route, how to handle interruptions, and how to communicate the connection state.

Mumi is an Android app built with Flutter and native Android integration. Here are some of the decisions behind it.

Removing account creation from setup

Mumi does not ask users to create an account, enter an email address, or remember a password.

The goal is to keep the first connection straightforward. Users should not need to configure server settings manually before trying the app.

That simplicity also creates a design constraint: the interface still needs to make the current connection state and remaining data understandable.

Giving users control over app routing

Not every app on a phone needs to use the same connection.

Mumi includes split tunneling so users can choose which apps use the VPN and which connect directly.

There are two common ways to present this choice:

  • Only selected apps use the VPN.
  • Selected apps bypass the VPN.

The wording matters. A list of checked apps is ambiguous unless the screen clearly explains what selecting an app means.

Apps that bypass the VPN use the regular network connection. They remain outside the VPN tunnel and still consume Wi-Fi or mobile data.

Treating connection state carefully

One important distinction in VPN development is that an active VPN service does not automatically mean the internet is reachable.

The interface, Android service, network connection, and actual reachability can disagree during an interruption.

Mumi includes automatic reconnection and an internet connectivity check. The practical goal is to help users recover from interruptions and understand whether the connection is usable.

Working with Android’s VPN settings

Mumi supports Android’s Always-on VPN settings.

Android also provides a “Block connections without VPN” option. This introduces an interaction worth testing: apps excluded through split tunneling may be blocked from accessing the internet rather than allowed to connect directly.

For anyone building an Android VPN, I would include these cases in manual testing:

  • Switching between Wi-Fi and mobile data.
  • Using the app after the phone has been idle.
  • Disconnecting and reconnecting while another app is open.
  • Combining split tunneling with Android’s connection-blocking setting.

Each case tests a different part of the experience.

Making data usage visible

Mumi offers a free data allowance, with rewarded ads and paid purchases available for additional data.

With a traffic-based model, remaining data is part of the main experience. Users need to understand what is available and what happens when it runs out.

Split tunneling can help users conserve VPN data by routing only the apps they need through the connection. It does not reduce the data those apps actually transfer.

Keeping the claims practical

A VPN changes the network path for traffic routed through it. It does not make someone completely anonymous.

Accounts, cookies, and app permissions can still identify users. I want Mumi’s descriptions to explain the app’s features without promising protection from everything.

Try Mumi VPN

You can find the app and more information here:

If you build Android apps, how do you explain connection problems to users without overwhelming them with technical details?

Top comments (0)