Privoo reference
Download Source Discord

Privoo for Android

From the Privoo reference.

This article is about the Android browser. For the desktop browser, see Privoo Desktop. For the coding IDE, see Privoo Coder.

Privoo for Android is a native Android web browser built with Kotlin and Jetpack Compose. It reproduces the visual language of Privoo Desktop, including the dark canvas, floating rounded toolbar, pill-shaped address bar and ghost mascot home page, but it is a separate application: a native Android build rather than a port of the desktop code, using the Android WebView engine instead of Chromium via Electron.

It differs from Privoo Desktop in two respects that matter before installing: it is closed source, and it has no automatic updates. It is distributed as an APK through a Proton Drive link posted in the project's Discord server rather than through Google Play.

Distribution and licensing

Privoo for Android is closed source. This is a deliberate divergence from Privoo Desktop, which is MIT licensed and publicly readable. The practical consequence should be stated plainly, because it is the same standard this reference applies to Privoo Desktop: the claims made below about the Android application cannot be independently verified by reading its code, and users are being asked to take them on trust in a way that Privoo Desktop does not require.

There is also no automatic update mechanism. Privoo Desktop checks the GitHub release feed and updates itself; the Android application does neither. Obtaining a newer version means returning to the Discord server, downloading the current APK from the Proton Drive link, and installing it over the existing app. Users should expect to do this manually, and should not assume an installed copy is current.

How to obtain it
StepDetail
1. Join DiscordThe Privoo Discord server.
2. Find the linkThe APK is hosted on Proton Drive; the link is posted in the server.
3. InstallSideload the APK. Android will require permission to install from an unknown source.
4. UpdateManually, by repeating the above. There is no in-app updater.
Sideloading

Because the application is not distributed through Google Play, it is not subject to Play's review process, and installing it requires enabling installation from unknown sources. Only install an APK obtained from the project's own Discord server, and treat any copy found elsewhere as untrusted.

Architecture

The application is fully native rather than a wrapped web view of the desktop interface. It follows contemporary Android architecture:

Technology stack
LayerTechnology
LanguageKotlin
UIJetpack Compose, Material 3
ArchitectureMVVM with Clean Architecture layering
Dependency injectionHilt
PersistenceRoom
SettingsDataStore
NavigationNavigation Compose
ConcurrencyCoroutines with StateFlow
Rendering engineAndroid WebView
Activity modelSingle activity, edge-to-edge Compose host

The codebase is separated into a core layer facing the Android framework (tabs, WebView clients, tracker blocking), a data layer (Room database, DataStore, repositories), a pure domain layer (models and repository interfaces), and a ui presentation layer built from Compose screens and view models.

Because the engine is Android's system WebView rather than a bundled Chromium, the browser inherits the rendering behaviour and update cadence of the WebView component on the user's device. This is the root cause of the encrypted DNS limitation described below.

Features

Feature summary
AreaProvided
TabsMultiple tabs, private tabs, switcher with previews, reopen closed tab
PrivacyTracker blocking, HTTPS-only, third-party cookie blocking, UA protection
Privacy ShieldSession and lifetime blocked counts, plus a home-screen widget
DataRoom history and bookmarks, JSON import/export, session persistence
DownloadsIn-app engine with pause, resume, cancel, live speed and ETA
MediaHTML5 fullscreen video, file uploads
ThemesLight, dark, system, AMOLED, selectable accent
LayoutOptional bottom toolbar position
Encrypted DNSDeep-links to Android Private DNS

Browsing

Privacy

The home page carries the disclaimer "Privacy reduces tracking but is not a security guarantee". This is consistent with the position taken across the Privoo products, including Privoo Desktop's own documentation: the browser reduces commercial tracking and does not confer anonymity.

Data

JSON export deserves note given the absence of synchronisation across the Privoo products: it is the mechanism by which bookmarks can be moved between devices at all.

Design

The application reproduces the desktop browser's visual language: a dark #16181D canvas, a floating rounded toolbar, a pill-shaped address bar, the ghost mascot home page, and soft glass-like surfaces.

Privacy Shield and widget

A dashboard reports trackers and advertisements blocked, both for the current session and cumulatively, persisted in DataStore. A home-screen widget built with Glance shows the blocked count alongside the local temperature and deep-links into the Privacy Shield when tapped.

The temperature is retrieved from the Open-Meteo API, which requires no key, using the device's last known location. It requires coarse-location permission, requested once at launch. Where permission or a recent location fix is unavailable, the widget displays —° rather than a fabricated value, and it refreshes on the system widget period of approximately 30 minutes.

Encrypted DNS

Android's WebView and its underlying network stack expose no public per-application API for DNS-over-HTTPS. An in-app DoH toggle would therefore not actually route WebView traffic, and would amount to a control that appears to do something while doing nothing.

Instead, Settings → Privacy → Secure DNS deep-links to Android's own Private DNS screen, which configures strict, hostname-pinned encrypted DNS for the entire device. This is the mechanism that genuinely works on the platform.

Difference from Privoo Desktop

Privoo Desktop bundles Chromium and can configure the resolver directly, so its encrypted DNS is a browser setting operating in strict mode. On Android the equivalent is an operating-system setting that applies device-wide. See Privoo Desktop: Encrypted DNS.

Implementation scope

Several areas are implemented as working foundations rather than exhaustively, and are documented as such rather than being presented as complete:

Known scope boundaries
AreaCurrent state
DownloadsA real download engine streams over HTTP(S) to app storage, persists live progress to Room, and supports pause and resume via HTTP Range requests, cancellation, and genuine speed and ETA reporting. Transfers run on an app-scoped coroutine, so they last as long as the process; surviving process death would require a foreground service.
Tracker blockingA curated hostname blocklist held as a single editable set, chosen for low memory use. It is not a full EasyList engine, unlike Privoo Desktop.
Tab reorderingSupported in the view model. The drag gesture in the tab switcher is not yet wired up.
Tab thumbnailsModelled in state; capturing live WebView bitmaps into that state remains to be added.
Secure DNSDeep-links to the operating system's Private DNS screen, for the platform reason described above.

These are documented limits of an application that compiles and runs as a usable browser, rather than defects.

Comparison with Privoo Desktop

Privoo for Android compared with Privoo Desktop
AspectPrivoo for AndroidPrivoo Desktop
SourceClosed sourceMIT licensed, public
DistributionAPK via Proton Drive, linked in DiscordGitHub Releases
UpdatesManual onlyAutomatic
EngineAndroid WebViewChromium 148 via Electron
Built withKotlin, Jetpack ComposeJavaScript, HTML, CSS
BlockingHostname blocklistEasyList, EasyPrivacy, uBlock Origin
Encrypted DNSDeep-links to OS Private DNSIn-browser DoH, strict mode
Tor and .marianaNot availableAvailable
DRM playbackSystem WebView behaviourWidevine, VMP-signed
ExtensionsNot supportedPartial third-party support

Requirements and building

The application is closed source, so building from source is not available to the public. The project's own build requirements are recorded here for completeness:

Build environment
ToolVersion
Android StudioLadybug (2024.2) or newer
JDK17
Android Gradle Plugin8.7.x
Gradle8.11.x
Minimum SDK29 (Android 10)
Target and compile SDK35 (Android 15)

See also