Kernel Browser
A polished GeckoView browser for Android, built without Chromium WebView.
Safari-inspired chrome · address suggestions · private tabs · bundled extensions
Kernel Browser is an Android browser shell around Mozilla GeckoView with native Kotlin UI, smooth settings sheets, square tab previews, history autofill, Google recommendations, and allowlisted WebExtension support.
Description
Kernel Browser is a native Android browser focused on a clean, Safari-like mobile experience while running on Mozilla GeckoView instead of Chromium WebView. It combines bottom-first browser controls, Google search suggestions, visited-site autofill, private tabs, tab previews, and bundled extension support in a lightweight Kotlin app shell.
[!IMPORTANT] Kernel Browser is still an early Android browser project. Use the ABI-specific APK for your device; modern Samsung/Pixel phones should install the
arm64-v8aAPK from v1.10.
What Is Kernel Browser?
Kernel Browser is a native Android browser built with Kotlin, XML views, and GeckoView. It keeps the UI lightweight and Android-first while using Mozilla's browser engine instead of Android WebView.
Android UI -> BrowserTabs -> GeckoSession -> GeckoView
|
+-> History, settings, extensions, tab previews
Features
| Feature | Details |
|---|---|
| Native Android Shell | Kotlin and XML views drive the app chrome without a web-based UI layer. |
| GeckoView Engine | Pages run through Mozilla GeckoView with one shared GeckoRuntime. |
| Safari-Inspired Chrome | Bottom controls auto-hide after a short delay and return when the page is tapped. |
| Google Defaults | Home, empty input, and non-URL searches use Google. |
| Address Suggestions | The address bar shows Google recommendations and previously visited pages while typing. |
| Tab Management | Normal/private tab modes, a clean square tab panel, and live page thumbnails. |
| Private Tabs | Private tabs are separated and closed when the app exits. |
| History | The settings sheet can show and clear browsing history. |
| Extensions | Allowlisted WebExtensions with permission summaries and private-tab toggles. |
| Bundled Blocking | uBlock Origin is enabled by default when extension assets are fetched. |
Quick Start
1. Clone
git clone https://github.com/YashasVM/Kernel-browser.git
cd Kernel-browser
2. Fetch Extension Assets
Extension binaries are generated assets and are ignored by Git. Fetch the pinned allowlist before testing extension behavior:
.\scripts\fetch_extensions.ps1 -Clean
3. Build
Use Android Studio's bundled JBR for command-line builds:
$env:JAVA_HOME='C:\Program Files\Android\Android Studio\jbr'
.\gradlew.bat testDebugUnitTest assembleRelease --no-daemon
Release APKs are written to:
app/build/outputs/installable/
For phone installs, see docs/install.md. For release verification, see docs/build.md.
APKs
| APK | Use On |
|---|---|
KernelBrowser-1.10-v1.10-safari-suggestions-2026-06-24-arm64-v8a.apk |
Modern phones, including Galaxy S24 Ultra |
KernelBrowser-1.10-v1.10-safari-suggestions-2026-06-24-armeabi-v7a.apk |
Older 32-bit Android devices |
KernelBrowser-1.10-v1.10-safari-suggestions-2026-06-24-x86_64.apk |
Android emulators and x86_64 devices |
[!NOTE] GeckoView native libraries dominate APK size. ABI split APKs are the practical way to avoid shipping every native architecture to one phone.
Repository Layout
.
|-- app/
| |-- src/main/java/com/kernel/browser/ # Kotlin browser shell
| |-- src/main/res/ # Native Android UI resources
| `-- build.gradle.kts # Android app build
|-- assets/ # README and project visuals
|-- docs/ # Install and release notes
|-- scripts/fetch_extensions.ps1 # Fetch pinned extension assets
|-- build.gradle.kts
|-- settings.gradle.kts
`-- README.md
Building
Debug
$env:JAVA_HOME='C:\Program Files\Android\Android Studio\jbr'
.\gradlew.bat testDebugUnitTest assembleDebug --no-daemon
Release
$env:JAVA_HOME='C:\Program Files\Android\Android Studio\jbr'
.\gradlew.bat testDebugUnitTest assembleRelease --no-daemon
Install On A Connected Phone
$adb="$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe"
& $adb install -r app\build\outputs\installable\KernelBrowser-1.10-v1.10-safari-suggestions-2026-06-24-arm64-v8a.apk
Extension Assets
The fetch script downloads official AMO XPI artifacts, verifies SHA-256 checksums, unpacks them into app/src/main/assets/extensions/, validates Gecko extension IDs from manifest.json, and writes app/src/main/assets/extensions.json.
| Extension | Default |
|---|---|
| uBlock Origin | Enabled |
| Cookie-Editor | Disabled |
Release Notes
Latest release notes are in docs/releases/v1.10.md.
Roadmap
- Smooth out tab thumbnails across background tabs.
- Add a first-run onboarding screen for extension permissions.
- Add signed CI release builds for ABI split APKs.
- Keep refining settings, extensions, and tabs around the same Safari-like motion system.
Made by @yashas.vm / YashasVM
Small, fast, and still getting sharper with every build.
Built With
- kotlin
- powershell
Log in or sign up for Devpost to join the conversation.