Secure and best way to enjoy a web.
| I WANT TO... | GO TO |
|---|---|
| WebApps Feature | GO TO FEATURE |
| WebApps Tech | GO TO TECH |
| System Requirements | GO TO REQUIRENMENTS |
| WebApps Strucure | GO TO STRUCTURE |
| WebApps Security | GO TO SECURITY |
A production-ready, multi-container web browser for Android. WebApps lets you run multiple independent web sessions side by side, each with its own cookies, storage, permissions, and lifecycle — organized into groups, protected with PIN locks, and kept alive in the background through a dedicated foreground service.
- Multi Container — run many isolated web sessions simultaneously, each with independent cookies and local storage.
- Multi Group — organize containers into color-coded groups for easier navigation.
- Fullscreen Mode — hide the app bar for an immersive, app-like browsing experience.
- Keep Alive — allow selected containers to keep running in the background even when not visible.
- Persistent Session — cookies and site data survive app restarts.
- Desktop Mode — switch a container's user agent to a desktop browser string on demand.
- Orientation Mode — lock a container to portrait, landscape, or follow the system setting.
- Swipe Up App Switcher — swipe up from the bottom of the browser screen to see and manage all active containers, similar to a mobile task switcher.
- Favicon Detection — containers automatically display the favicon of the site they point to.
- URL Validation & Typo Detection — catches common domain typos (e.g.
gogle.com→google.com) before loading. - HTTPS Enforcement & HTTP Opt-In — HTTP connections are blocked by default, with an explicit one-time bypass dialog.
- Dangerous Website Protection — blocks known malicious domains and detects suspicious homograph attacks.
- Permission Manager — per-container control over Camera, Microphone, Location, Notifications, and Storage access (Always Allow / Always Deny / Ask Every Time).
- Container Lock — protect any container with a PIN, stored as a SHA-256 hash.
- Source Inspector — view a container's live page source (HTML) and a running log of network resource requests.
- Recovery Mode — automatically detects crash loops, stuck page loads, and renderer crashes, offering Soft Reset (reload) or Hard Reset (clear cache and cookies).
- Download Support — captures download requests from any container and tracks their progress.
- Backup & Restore — export all groups and containers to a portable file, optionally encrypted with Android Keystore (AES-256-GCM), with Merge or Replace All restore strategies.
- Foreground Service — keeps active containers alive with a persistent notification supporting Open, Refresh, Stop, Refresh All, and Stop All actions.
- Language: Kotlin
- UI: Jetpack Compose, Material 3
- Architecture: MVVM (ViewModel + StateFlow, unidirectional Event/State pattern)
- Dependency Injection: Hilt
- Persistence: Room (SQLite)
- Serialization: kotlinx.serialization
- Security: Android Keystore, EncryptedSharedPreferences
- Navigation: Navigation Compose
- Minimum SDK: 26 (Android 8.0 Oreo)
- Target SDK: 35 (Android 15)
- An Android device or emulator running Android 8.0 (API 26) or higher
app/src/main/java/com/web/apps/
├── WebAppsApplication.kt
├── MainActivity.kt
├── core/
│ ├── container/ # Multi-container session lifecycle management
│ ├── inspector/ # Source Inspector (page source + network log)
│ ├── permission/ # Per-container permission decisions
│ ├── recovery/ # Crash loop / timeout detection and recovery
│ ├── security/ # Keystore, encrypted preferences, safe browsing
│ └── webview/ # WebView client, chrome client, and factory
├── backup/ # Backup export/import and serialization models
├── data/
│ ├── local/ # Room entities, DAOs, database, converters
│ └── repository/ # Repositories and URL validation
├── di/ # Hilt modules
├── service/ # Foreground service and its controller
└── ui/
├── appswitcher/ # Swipe Up App Switcher overlay
├── backup/ # Backup & Restore screen
├── browser/ # Main browser screen and ViewModel
├── containerlist/ # Container list and multi-group grid
├── containerlock/ # PIN lock setup and unlock UI
├── inspector/ # Source Inspector screen
├── navigation/ # NavHost and destinations
├── permission/ # Permission Manager screen
├── recovery/ # Recovery dialog and ViewModel
└── theme/ # Material 3 theme
- All PINs are hashed with SHA-256 before being stored; the raw PIN is never persisted.
- Encrypted backups use AES-256-GCM keys generated and stored inside the Android Keystore, so the encryption key never leaves secure hardware-backed storage where available.
- Dangerous Website Protection blocks known malicious domains and detects suspicious non-Latin homograph characters in hostnames.
