Dartvel, home
Docs
Features
Studio
Cloud
Compared

Search the site

GitHub
pub.dev

GETTING STARTED

Getting started
Existing Flutter apps
Existing Native apps
Run on your phone

APP

UI and styling
Routing
State
Accessibility
Keyboard shortcuts
Localization
Devices and desktop
Native device access
Media, 3D and XR

DATA

Data models
Forms
Search
Sync and offline
Import and export
Change capture
Database
Cache
File storage
Images
Privacy and erasure

BACKEND

Backend functions
Auth and sessions
Authorization
Queues and jobs
Workers and memory
Notifications and mail
Outbound HTTP
AI
Webhooks
GraphQL and OpenAPI
API keys and OAuth
Multi-tenancy
Billing and commerce
Modules

OPERATIONS

Edge security
Secrets and environments
Monitoring
Releases

SHIPPING

Build targets
Telegram Mini Apps
Static web hosting
Servers and deploying

REFERENCE

Testing
CLI reference
Coding agents

SHIPPING

Build targets

Build one app for phones, desktops, the web, TVs, browser extensions and the terminal.

Each target below shows what has been verified by running the build.

ON THIS PAGE

Build with one command

Check tools before you build

Every target and its status

TVs and embedded devices use vendor embedders

Headsets: Meta Quest and Apple Vision Pro

Build for the terminal

Upstream embedders and credits

Build with one command

dartvel build web
dartvel build android
dartvel build    # every target this machine can build
dartvel build linux --profile development

Copy code to clipboard

Code generation runs first, so there is no separate step.

--profile takes development, profile or release. release is the default.

A target this host cannot build is skipped with the reason.

Check tools before you build

dartvel doctor
dartvel doctor --target tizen
dartvel build webos --auto-install

Copy code to clipboard

The build checks the host, then the tools, before it generates anything.

Tools Dartvel can fetch unattended install under ~/.dartvel/toolchains. It asks first, and installs without asking in CI.

Xcode, Visual Studio, the Android SDK and Tizen Studio are never installed for you.

Inside a project, doctor also checks the directories you configured as pagesDir, backendDir and modelsDir. A project that does not use one gets a [-] line, which is information and needs no fix. [!] is kept for something you have to fix.

[+] lib/pages exists
[-] lib/backend/functions not present (no backend functions)
[-] lib/models not present (no models)

Copy code to clipboard

Every target and its status

web

Needs: Any host

Status: Builds, and runs in headless Chrome

android

Needs: The Android SDK

Status: Builds an APK

fireos

Needs: The Android SDK

Status: Builds the Android APK

horizon

Needs: The Android SDK

Status: Builds a Meta Quest panel app, checked with aapt2. Not yet run on a headset

ios

Needs: macOS with Xcode

Status: Builds, verified on a macOS runner

macos

Needs: macOS

Status: Builds a universal binary

windows

Needs: Windows

Status: Builds, verified on a Windows runner

linux

Needs: Linux

Status: Builds and runs

tvos

Needs: macOS with Xcode

Status: Builds and runs on the simulator. Signed device builds are not verified

visionos

Needs: macOS with Xcode

Status: Planned: wired as the iPad app Vision Pro runs, not yet built on a Mac

tizen (alias tpk)

Needs: Tizen Studio

Status: Builds a signed TPK. CI can only skip it

sony-elinux

Needs: Linux

Status: Builds and runs in release on a virtual device

webos

Needs: The webOS toolchain

Status: dartvel build webos skips: LG's CLI cannot resolve a Dartvel project. A package assembled in CI runs in a Wayland window under ARM emulation. Not run on a TV

fuchsia

Needs: Linux

Status: Blocked: the embedder's Flutter is too old to resolve dependencies

vscode

Needs: npm

Status: Builds a VS Code extension

chrome-extension

Needs: Any host

Status: Builds and runs

firefox-extension

Needs: Any host

Status: Builds and runs

linux-cli

Needs: Linux

Status: Runs in a terminal in the verification workflow

windows-cli, macos-cli, fuchsia-cli

Needs: That OS

Status: Not verified, and not expected to build: the terminal embedder builds for Linux only

web-server

Needs: Any host

Status: See Servers and deploying

The evidence for every row, with CI run links, is in build-targets.md.

Read build-targets.md

TVs and embedded devices use vendor embedders

tizen, sony-elinux, webos, fuchsia and tvos build through the platform's own Flutter embedder.

Dartvel keeps a pinned fork of each, which it can install for you.

--arch picks arm, arm64 or x64 for embedded builds. It defaults to arm64, to x64 for fuchsia, and to this machine's own for sony-elinux.

sony-elinux-iso and sony-elinux-img

These names are accepted. Today they build the same bundle as sony-elinux, with no disk image.

Thanks to the embedders these targets are built on:

flutter-tizen

by Samsung

flutter-elinux

by Sony

flutter-webos

by LG

flutter-embedder

by the Fuchsia authors

flutter-tvos

by the FlutterTV authors

Headsets: Meta Quest and Apple Vision Pro

dartvel build horizon      # Meta Quest, Horizon OS
dartvel build visionos     # Apple Vision Pro, on a Mac
dartvel doctor --target horizon

Copy code to clipboard

Both open your app as a 2D panel. Your pages need no changes.

horizon is the Android build with what the Horizon Store asks of a panel app. Dartvel reads the finished APK back and stops the build if the store would refuse it.

Set the panel size and the headsets under dartvel.xr in pubspec.yaml: panel width and height in dp, and horizon devices.

visionos is the iPad app, which Vision Pro runs as Designed for iPad. Flutter has no visionOS engine, so there are no native windows, volumes or immersive spaces yet.

DV.Platform.isHeadset is true in both builds. Use it to decide what to offer, such as a back button for hands.

Not yet run on a headset

The Quest build has been checked with Android's own tools, not on a Quest. The Vision Pro build has not yet been built on a Mac.

Build for the terminal

dartvel build linux-cli     # terminal only, no GUI code
dartvel build linux-tui     # the same target

Copy code to clipboard

A -cli build links the terminal renderer and no GUI.

Set dartvel.terminal: true to link both into a normal desktop build.

build-targets.md records that terminal builds and native assets do not yet compose.

Terminal rendering is built on

flt

by Jia Hao (jiahaog) (BSD-3-Clause).

Upstream embedders and credits

Every TV, embedded, extension and terminal target runs on an embedder somebody else wrote. Dartvel keeps a fork of each so it can pin, patch and track it against the Flutter version Dartvel ships. Each fork keeps upstream's licence and docs untouched below a banner that says what changed.

flutter-tizen

Target: dartvel build tizen (alias tpk)

By: Samsung

Licence: BSD-3-Clause

What the fork adds: Tracks upstream's pin of Flutter 3.44.4. One patch: it stages the Flutter engine and assets into a native TPK, which Tizen SDK CLI 10.x left out.

Dartvel's fork
flutter-elinux

Target: dartvel build sony-elinux

By: Sony

Licence: BSD-3-Clause

What the fork adds: Records the pin at Flutter 3.29.3, the newest engine Sony publishes. dartvel build sony-elinux assembles its bundle from Sony's embedder artifacts.

Dartvel's fork
flutter-webos

Target: dartvel build webos

By: LG

Licence: BSD-3-Clause

What the fork adds: Records the pin at Flutter 3.38.10. Its Dart 3.10.9 is below Dartvel's floor, so dartvel build webos skips; CI assembles a package from LG's engine instead.

Dartvel's fork
flutter-embedder

Target: dartvel build fuchsia

By: the Fuchsia authors

Licence: BSD-2-Clause

What the fork adds: Adds a Bazel rule and a script that package any Flutter app, and a build-only bootstrap. Blocked today: the Flutter it bundles is too old to resolve a Dartvel project.

Dartvel's fork
flutter_vscode

Target: dartvel build vscode

By: SlowGen

Licence: none declared; the upstream LICENSE file is a placeholder

What the fork adds: Points the generated extension at the file tsc writes. dartvel build vscode runs upstream's own scaffold and build steps.

Dartvel's fork
flutter-tvos

Target: dartvel build tvos

By: the FlutterTV authors

Licence: BSD-3-Clause

What the fork adds: No source changes. Upstream pins Flutter 3.44.8.

Dartvel's fork
flt

Target: dartvel build linux-cli (alias linux-tui)

By: Jia Hao (jiahaog)

Licence: BSD-3-Clause

What the fork adds: Re-pins to Flutter 3.44.5 and adds dartvel-cli-flt, which bundles an app so it can leave the machine. Upstream is a research project that runs apps in development.

Dartvel's fork
mix

Target: A package, for projects that already use mix

By: Leo Farias and Bitwild

Licence: BSD-3-Clause

What the fork adds: Targets Dart 3.12 and Flutter 3.44 and keeps the package name, so a project swaps the dependency and its imports resolve unchanged. Upstream's 2,918 tests run unchanged in CI. DVBox and DVText do not use mix.

Dartvel's fork

Thank you to the maintainers of these projects at Samsung, Sony, LG, the Fuchsia team, FlutterTV, Bitwild, and to SlowGen and Jia Hao. Dartvel's TV, embedded and terminal targets exist because they did the hard part first.

Also built on

Every target is

Flutter

by the Flutter authors (BSD-3-Clause).

The generated router is built on

go_router

by the Flutter authors (BSD-3-Clause).

DV.Updates runs on the

updater

by Shorebird (MIT or Apache-2.0).

The Rust server is built on

Axum

by the Tokio project (MIT).

It runs on

Tokio

by the Tokio project (MIT).

PREVIOUS Releases Flags, branch previews, rollouts and old clients
NEXT Telegram Mini Apps Build for Telegram, use host controls and sign in
GitHub
pub.dev
npm
Acknowledgements
Privacy
Terms

FSL-1.1-MIT licensed. Built with Dartvel.

Dartvel is made by

SigmaDev Digital

To the bottom