A minimal, privacy-first Android browser. Built with Kotlin and Jetpack Compose, powered by our own rendering and JavaScript engines.
Solara is a browser for Android that does not rely on Chromium, WebView, or any third-party rendering engine. It uses Optima (our Rust rendering engine) to parse HTML and CSS, Solarium (our Zig Runtime engine) to run scripts, and Solarian (our Kotlin search API) for search.
The goal is a browser that is:
- Small. No 200 MB engine dependencies.
- Fast. Native rendering, no bridge overhead.
- Private. No telemetry, no accounts, no tracking.
- Beautiful. Material 3, glass-morphism, quiet design.
Solara is the flagship browser for the SolaraStudio ecosystem. For older devices, see Solaria.
Solara is a thin Android shell around two native engines.
| Layer | Component | Language | Responsibility |
|---|---|---|---|
| 1. UI | Solara UI | Kotlin · Compose | Screens, tabs, toolbar, theme, gesture handling |
| 2. State | ViewModels | Kotlin · Coroutines | StateFlow, business logic, lifecycle |
| 3. Data | Repositories | Kotlin | Room, DataStore, caching, preferences |
| 4. Bridge | JNI Bridge | Kotlin ↔ C ABI | Native calls, callbacks, handle table |
| 5. Engine —> Render | Optima | Rust | HTML parse · CSS cascade · DOM · layout · paint |
| 6. Engine —> Runtime | Solarium | Zig | Runtime · event loop · DOM bindings |
| 7. Service | Solarian | Kotlin | Search providers, suggestions |
| 8. Surface | SurfaceView | Android | GPU-backed render target |
- Optima — rendering engine. Rust.
- Solarium — runtime engine. Zig.
- Solarian — search provider API. Kotlin.
Solara itself does not implement HTML, CSS, or JavaScript. It provides the UI shell, state management, and native integration.
To be added.
To build Solara you need:
- JDK - 17 or later
- Android SDK - with platform 36 and build-tools 36.0.0
- Android NDK - 25.1.8937393 (for building Optima and Solarium)
- Rust 1.85+ with the four Android targets
- Zig 0.14+ (for building Solarium)
- Gradle 9.5 (included via wrapper)
git clone https://github.com/SolaraStudio/Solara.git
cd SolaraSolara depends on prebuilt Optima artifacts hosted on GitHub Packages. Add your credentials to ~/.gradle/gradle.properties:
GITHUB_ACTOR=your-github-username
GITHUB_TOKEN=ghp_your_personal_access_tokenThe token needs the read:packages scope.
cd android
./gradlew assembleReleaseandroid/app/build/outputs/apk/release/app-release.apk
./gradlew assembleDebug./gradlew assembleRelease -Pabi=arm64-v8aSupported ABIs: arm64-v8a, armeabi-v7a, x86, x86_64.
Solara/
├── android/ Android application
│ ├── app/ Application module
│ │ └── src/main/
│ │ ├── java/com/solara/browser/
│ │ │ ├── data/ Room, DataStore, repositories
│ │ │ ├── domain/ Models, use cases
│ │ │ ├── engine/ JNI bindings to Optima and Solarium
│ │ │ ├── ui/ Compose screens, components, theme
│ │ │ └── di/ Hilt modules
│ │ ├── res/ Resources
│ │ └── jniLibs/ Native libraries (populated at build time)
│ ├── build.gradle.kts
│ └── settings.gradle.kts
├── docs/ Architecture and design notes
├── scripts/ Build and maintenance scripts
└── README.md
Settings are exposed in the app itself. For development, the following environment variables are recognised during build:
| Variable | Purpose |
|---|---|
APP_VERSION |
Override version name |
OPTIMA_VERSION |
Optima artifact version to depend on |
VERSION_SUFFIX |
Append a suffix to the version (e.g. -SNAPSHOT) |
cd android
./gradlew test
./gradlew connectedAndroidTestContributions are welcome. Before starting, please read CONTRIBUTING.md.
For larger changes, open an issue first so we can align on the approach before you write code.
- Fork the repository.
- Create a feature branch.
- Make your changes, with tests where reasonable.
- Run
./gradlew checklocally. - Open a pull request.
| Repository | Purpose |
|---|---|
| Solaria | Android browser for older devices |
| Optima | Rendering - engine (Rust) |
| Solarium | Runtime - engine (Zig) |
| Solarian | Search provider API (Kotlin) |
| web | Website |
| docs | Documentation |
Solara stands on the work of others:
- Jetpack Compose — declarative UI toolkit
- Material 3 — design system
- Hilt — dependency injection
- Room — persistence
And the engines that make it a browser:
Solara is licensed under the Mozilla Public License 2.0. See LICENSE for the full text.