Skip to content

For Flutter apps. More SDKs are on the way.

Change your app after it’s in the store.

CtrlApp is a dashboard and a small package you add to your app once. From then on you can switch a broken feature off, ask old versions to update, change text and settings, and message the people using it. No new release, no waiting for store review.

flutter pub add ctrlapp
console / my-shopproduction
Checkout
Oldest version allowed
The phone runs 1.2
// change something on the left
What you can change

Six things you no longer need a release for

Each one is a setting in the dashboard and a line or two in your app.

01

Switch things off

Pause one feature or the whole app. People on an old build see your message instead of a crash.

if (!ctrl.boolFlag('checkout')) {
  showPausedScreen();
}
02

Ask people to update

Set the oldest version you still support. Older builds get an update screen with a link to the store.

ctrl.blockChanges.listen((block) {
  if (block.action == 'force_update') {
    openStore(block.forceUpdateUrl);
  }
});
03

Change text, numbers and images

Edit a title, a limit or a banner in the dashboard. If a value is missing, your default is used.

final title = ctrl.text(
  'home.title',
  fallback: 'Welcome',
);
final max = ctrl.configValue<int>(
  'cart.max',
  defaultValue: 10,
);
04

Send a message

Modals, banners and ads appear inside the app in your own theme. Push notifications reach the phone when the app is closed.

// Nothing to add. The package shows
// modals, banners and ads for you.
05

Aim at a group

Put tags on devices from your app, then send a campaign to a tag. One tag can match a single person.

await ctrl.addTags(['vip']);
06

Keep tampered devices out

The package reports emulators, rooted and jailbroken phones. You decide whether to allow, warn or block them.

// On by default. Choose the rule
// in the dashboard.
Getting started

Three steps, about ten minutes

1

Create an app

Make an account, add your app, and copy its key. It starts with ck_sdk_.

2

Add the package

Run flutter pub add ctrlapp in your project.

3

Start it when the app launches

That is all the setup. Use CtrlApp.instance from anywhere after this.

Read the full Flutter guide
lib/main.dart
import 'package:ctrlapp/ctrlapp.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await CtrlApp.init(apiKey: 'ck_sdk_YOUR_KEY');
  runApp(const MyApp());
}
Platforms

Flutter is ready. The rest are coming.

SDKStatusInstall
FlutterAvailableflutter pub add ctrlapp
JavaScriptIn developmentNot released yet
AndroidIn developmentNot released yet
iOSIn developmentNot released yet
.NETIn developmentNot released yet
Questions

Things people ask first

Do I need to release a new version to use it?

Once. Add the package and ship that release. After it is out, everything above is changed from the dashboard.

What happens when a phone has no internet?

The package keeps the last decision on the device. A feature you switched off stays off, even if someone opens the app offline.

What if I delete a flag or misspell a key?

Every call returns the default you pass in when the control does not exist, so a missing key never breaks the app.

Which platforms can I use it on?

Flutter today, on iOS and Android. The JavaScript, Android, iOS and .NET SDKs are being built and are not released yet.

Connect your app and try it on a real device.

Every account starts on the free plan.