Fastforge formerly Flutter Distributor
Ship every app faster to your users — Build, package, and publish with one clear configuration. Target popular distribution formats and app stores while fitting naturally into your CI/CD pipeline.
[!WARNING] Rust Migration In Progress: The core of Fastforge is being rewritten in Rust to deliver better performance, a smaller install footprint, and zero runtime dependencies on the Dart SDK. The new implementation lives in the
crates/directory and is being developed in parallel with the existing Dart packages.What this means for you:
- The current Dart-based CLI (
dart pub global activate fastforge) continues to work and receives bug fixes.- The Rust CLI will be released as a native binary — no Dart or Flutter SDK required to run it.
- APIs and configuration formats are designed to remain compatible; any breaking changes will be clearly announced.
- Contributions, feedback, and bug reports on the Rust implementation are very welcome — see the Contributing section.
English | 简体中文
Documentation
Key Features
- 🚀 One-Click Build: Support for Android APK/AAB, iOS IPA, OpenHarmony HAP/APP and more
- 📦 Multi-Platform Release: Support for App Store, Google Play, Firebase, Pgyer, fir.im, etc.
- 🔄 CI/CD Integration: Perfect integration with GitHub Actions, GitLab CI, and more
- 🛠 Flexible Configuration: Support for multiple environments, flavors, and custom build arguments
Supported Package Formats
- Android: AAB, APK
- iOS: IPA
- OpenHarmony: HAP, APP
- Linux: AppImage, DEB, RPM, Pacman
- macOS: DMG, PKG
- Windows: EXE, MSIX
- Universal: ZIP
- More formats coming soon...
Supported Distribution Platforms
- App Store
- Firebase
- Firebase Hosting
- FIR
- GitHub Releases
- PGYER
- Play Store
- Qiniu
- Vercel
- More platforms coming soon...
Installation
dart pub global activate fastforgeWindows users: After activation, ensure the pub cache bin directory is in your PATH:
- Open System Properties → Advanced → Environment Variables
- Under User variables, select
Path→ Edit- Add
%APPDATA%\Pub\Cache\binand click OK- Restart your terminal, then try
fastforge --help
Quick Start
- Add
distribute_options.yamlto your project root:
variables:
PGYER_API_KEY: "your api key" # Replace with your own API keys
output: dist/
releases:
- name: dev
jobs:
# Build and publish APK to PGYER
- name: release-dev-android
package:
platform: android
target: apk
build_args:
target-platform: android-arm,android-arm64
dart-define:
APP_ENV: dev
publish_to: pgyer
# Build and publish IPA to PGYER
- name: release-dev-ios
package:
platform: ios
target: ipa
build_args:
export-options-plist: ios/dev_ExportOptions.plist
dart-define:
APP_ENV: dev
publish_to: pgyerNote:
build_argsare parameters supported by theflutter buildcommand. Modify them according to your project requirements.
- Release your app:
fastforge release --name devCLI Commands
Package Your App
fastforge package --platform=android --targets=aab,apkPublish a Package
fastforge publish --path dist/your-app-1.0.0+1-android.apk --targets pgyerRelease (Package + Publish)
fastforge release --name devExamples
Fastforge includes several example projects to help you get started:
- hello_world - Basic example demonstrating the core functionality.
- multiple_flavors - Example showing how to configure multiple application flavors.
- custom_binary_name - Example of how to customize binary output names.
Advanced Usage
Environment Variables
Fastforge supports using environment variables in your configuration files. This is useful for sensitive information like API keys:
variables:
API_KEY: ${PGYER_API_KEY} # Uses the PGYER_API_KEY environment variableCI/CD Integration
Fastforge works well in CI/CD environments. For example, with GitHub Actions:
jobs:
build-and-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
- name: Install Fastforge
run: dart pub global activate fastforge
- name: Build and release
run: fastforge release --name production
env:
API_KEY: ${{ secrets.API_KEY }}Check the documentation for more detailed CI/CD integration examples.
Who's Using It?
- Biyi - A convenient translation and dictionary app.
- Qianji - A purely bookkeeping app.
- Airclap - Send any file to any device. cross platform, ultra fast and easy to use.
Contributing
Contributions are welcome! If you'd like to help improve Fastforge:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please make sure to update tests as appropriate and follow the existing code style.
Contributors
License
Fastforge Studio
The Studio web client, local server, and shared packages live in this repository under the studio- package prefix. See the Studio development guide for setup and checks.
Agent Skills
Agent skills that teach Claude and other Agent-Skills-compatible harnesses how to use fastforge live in skills/. Install them with npx skills add fastforgedev/fastforge; see the skills guide for details.