Publishing

Build and Release

Build and Release

Ruflet already supports packaging for the major targets you would expect from a Flutter-backed app stack.

Build targets

Current CLI targets include:

  • apk
  • android
  • ios
  • aab
  • web
  • macos
  • windows
  • linux

Example commands:

-function">ruflet build apk
-function">ruflet build ios
-function">ruflet build web
-function">ruflet build macos

Two build modes

Server-driven mode

This is the default. Your packaged app expects a backend URL:

app:
  backend_url: TOKPLACEHOLDER0TOKEN

Use this mode when:

  • the app should talk to a hosted Ruflet backend
  • you want a thinner client package
  • your release model already includes a deployed server

Self-contained mode

Use --self to build against the embedded runtime/client entrypoint:

-function">ruflet build android --self
-function">ruflet build ios --self

Use this mode when:

  • you want more standalone packaging
  • the app logic should travel with the client build
  • you are closer to an installed-app workflow than a hosted runtime

Assets and branding

ruflet.yaml also drives build-time assets:

assets:
  dir: assets
  splash_screen: assets/splash.png
  icon_launcher: assets/icon.png

build:
  splash_color: TOKPLACEHOLDER0TOKEN
  splash_dark_color: TOKPLACEHOLDER1TOKEN
  icon_background: TOKPLACEHOLDER2TOKEN
  theme_color: TOKPLACEHOLDER3TOKEN

Installing builds

After building, use:

-function">ruflet install

This helps move exported outputs into the client workspace and asks Flutter to install the app on a chosen device.

Prebuilt client updates

Ruflet also has a client update flow:

-function">ruflet update all
-function">ruflet update web --check

This is useful when you rely on cached prebuilt clients for development.

Shipping advice

  • Decide early whether your app is server-driven or self-contained.
  • If you need media, camera, storage, or other extensions, declare them up front in ruflet.yaml.
  • Test the real build target early, especially on iOS and Android, because native permissions and packaging details matter.