Drift is a cross-platform mobile UI framework. Write your app once in Go, then build native Android and iOS apps via the Drift CLI.
- Single codebase - Write once, deploy to Android and iOS
- Go-native - Use Go's tooling, testing, and ecosystem
- Skia rendering - Hardware-accelerated graphics (same engine as Chrome and Flutter)
- No bridge overhead - Direct native compilation, no VM layer
- iOS builds on Linux - Build iOS apps without a Mac using xtool
# Install the CLI
go install github.com/go-drift/drift/cmd/drift@latest
# Create and run a new project
drift init hello-drift
cd hello-drift
drift run androidSkia binaries are downloaded automatically on first run.
Full documentation is available at driftframework.dev:
- Getting Started - Installation and first app
- Widgets - Available UI components
- Layout - Arranging widgets
- State Management - Managing app state
- Navigation - Routes and deep linking
- Theming - Colors and typography
- Animation - Motion and transitions
- Platform Services - Native APIs
- Skia - Building Skia from source
The showcase/ directory contains a demo app with examples of all widgets:
showcase.mp4
cd showcase
drift run android| Directory | Description |
|---|---|
cmd/drift |
CLI commands |
pkg/ |
Runtime, widgets, and rendering |
showcase/ |
Demo application |
scripts/ |
Skia build helpers |
third_party/skia |
Skia source checkout |
third_party/drift_skia |
Skia bridge outputs |
SKIA_REV |
Pinned Skia commit hash |
Drift follows semantic versioning.
Before v1.0.0: Breaking changes may occur in any release.
After v1.0.0:
- Deprecated APIs are marked with
// Deprecated: use X instead - Deprecated APIs remain for at least 2 minor versions
- Breaking changes only in major versions
v1.0.0 targets:
- Testing framework with widget tests and golden tests
- More widgets (Dialog, BottomSheet, Drawer, Snackbar, Slider)
- Internationalization (i18n/l10n)
- Developer tools (widget inspector, performance profiling)
- Hot reload
Contributions are welcome!
MIT License. See LICENSE for details.