Early preview: 0.1.0-dev.1|Zero Ruby. Pure Dart.

Ship Flutter and Dart apps faster, with lanes written in Dart.

Release automation for Flutter and Dart. Define lanes, compose actions, run anywhere: locally on developer machines or natively in CI.

boltPreview any lane with --dry-run
verifiedTyped actions in Dart
layersSame lane locally and in CI
terminaldartlane-cli — zsh
λproject-flutter$dart pub global activate dartlane
Activated dartlane 0.1.0-dev.1.
λproject-flutter$dartlane run beta
[1/3]flutter analyze
PASSED
[2/3]flutter build apk --release
DONE
[3/3]Firebase App Distribution upload
UPLOADED
check_circleLane 'beta' completed successfully
$dart pub global activate dartlane
version0.1.0-dev.1
licenseBSD-3-Clause
flutterAndroid + Firebase today

Everything you need to ship. Nothing you don't.

Say goodbye to opaque fastfiles, flaky Gemfile setups, and fragmented build tools. Control every stage from compilation to storefront delivery using native Dart idioms.

alt_route

Lanes: Plain Dart Workflows

Organize complex deployment pipelines into intuitive, asynchronous Dart functions. Chain tasks, handle failures cleanly, and reuse workflow logic across apps.

Read docsarrow_forward
extension

Actions: Composable Steps

Typed, reusable steps for analyzing, testing, building Android APKs and app bundles, bumping pubspec versions, and uploading to Firebase. Write your own when you need more.

Explore actionsarrow_forward
rocket_launch

Firebase App Distribution

Upload builds to your tester groups straight from a lane. Play Store and App Store publishing are not supported yet.

Ship to testersarrow_forward
sync_alt

CI-Ready Everywhere

The lane you run on your laptop runs the same way on GitHub Actions, with no prompts and error annotations. Other CI that sets CI=true gets the same behavior with plain output.

CI setup guidesarrow_forward
TYPE SAFETY FIRST

Define your pipelines in 100% Dart.

No Ruby gems, no Groovy scripting, no YAML nightmare logic. Enjoy complete language coherence across your entire stack.

code

Instant IDE Autocomplete

Full parameter suggestions, documentation hints, and jump-to-definition in VS Code and Android Studio.

shield_with_heart

Compile-Time Sanity

Catch missing variables, broken arguments, and typing mistakes before launching an expensive 30-minute CI run.

swap_horiz

Zero Context Switching

Your team already knows Dart. Build scripts become native codebase assets rather than devops friction.

descriptiondartlane.dart
UTF-8 • Dart 3.10
import 'package:dartlane_core/dartlane_core.dart';
import 'package:dartlane_firebase/dartlane_firebase.dart';
import 'package:dartlane_flutter/dartlane_flutter.dart';

import 'config.dart';

Future<void> main(List<String> args) => dartlane(
  args,
  lanes: {
    'beta': Lane('Build and ship to QA', (ctx) async {
      // 1. Static analysis gate
      await ctx.run(const FlutterAnalyze());

      // 2. Build the Android APK
      final build = await ctx.run(FlutterBuild.apk(flavor: Config.flavor));

      // 3. Upload to Firebase App Distribution
      await ctx.run(
        FirebaseDistribute(
          build.path,
          app: Config.firebaseAppId,
          groups: ['qa'],
        ),
      );
    }),
  },
);

How Dartlane works

Three steps from install to a build on your testers' phones.

01
download

Install globally

Activate the Dartlane CLI globally with dart pub global activate. No Ruby, no bundler.

$ dart pub global activate dartlane
02
draw

Set up and define a lane

Run dartlane init in your app. It creates dartlane/lanes.dart, where you chain build and upload actions.

$ dartlane init
03
play_arrow

Run locally or in CI

Execute dartlane run beta, or preview it first with --dry-run. The same command works in CI.

$ dartlane run beta

Runs the same on your laptop and on CI

Lanes are plain Dart, so a CI job only needs Dart and Flutter. GitHub Actions gets error and warning annotations, and any CI that sets CI=true runs without prompts.

verifiedGitHub Actions: full support
check_circleOther CI (CI=true): plain output
integration_instructions.github/workflows/beta.yaml
YAML
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
- name: Install lane dependencies
  working-directory: dartlane
  run: dart pub get
# Same lane you run on your laptop
- name: Run the beta lane
  run: dart run dartlane/lanes.dart beta