AppSync by AppsOnAir

Manage App Updates & Maintenance with AppSync

Force critical updates, manage downtime, and manage app behavior at launch without hardcoded logic.

Secure Update
On App Start
Native Feel
9:41
The Problem

Your update flow is stuck in 2015

Most teams hardcode minimum versions, include version checks in app releases, and have no maintenance mode at all. The result: every rule change requires a new release, every backend deployment risks breaking the user experience, and iOS and Android run inconsistent logic.

Every version rule requires a new release

Changing a minimum supported version means touching code, opening a PR, building, and shipping. AppSync moves the rule to a dashboard so you can toggle it without a single commit.

Backend downtime breaks the app

When your servers go down, users encounter cryptic errors, and one-star reviews follow. AppSync shows a branded maintenance screen at app launch, which you can turn off when you're ready to resume.

iOS and Android speak different languages

Native update APIs differ between platforms. AppSync gives you one rule engine, one configuration, and one experience consistent across iOS, Android, Flutter, and React Native.

A smarter alternative to Store updates

Double the features at a fraction of the cost. Enterprise reliability without the premium overhead.

2.5k+
Teams
Instant
Global Sync

What is AppSync?

AppSync is a powerful mobile app update and maintenance management tool that gives you full control over how and when users are prompted to update their apps without the need for hardcoded logic.

Three Built-in Modes

Force, optional, or maintenance pick the right one per release

Configure each mode per platform and switch between them from the dashboard. AppSync runs at app launch and routes users to the appropriate popup or screen based on the rules you’ve set.

Force update

Critical Update

Users on a version below your minimum see an update popup at app launch with no cancel option. Tapping Update redirects them to the App Store, Play Store, or your AppsOnAir link.

Update Required

Version 2.4.0 is necessary to continue.

Update Now
Bypasses standard UI
Mandatory compliance
Prevents old app usage
Optional update

Gentle Nudge

The same popup, but with a Cancel button. Users can tap Update to go to the store, or Cancel to dismiss it and continue using the current version.

New Version

A recommended update is available.

Later
Install
Improves adoption rate
User-friendly flow
Customizable frequency
Maintenance

Downtime Mode

Replace the app at launch with a custom screen during the downtime. Configure the image, title, message, and colors from the dashboard. Toggle it on and off; no release required.

Down for Maintenance

Upgrading our servers.

Global scope
Customizable ETA text
Prevents broken states

Automate Your App Lifecycle

Step 01
Configure Rules
Enable global maintenance mode or downtime, or control app updates (force/optional) with AppSync using platform-wise or global targeting—applied on app launch.
Rules Dashboard
Force Update
Maintenance
DEVICE
CLOUD
STATUS
200 OK
PING
12ms
Step 02
SDK Handshake
On app launch, the lightweight SDK connects with AppSync Cloud to keep users updated with the latest app version.
Step 03
Instant Enforcement
Publish your app update via the App Store or Google Play. AppSync prompts users to update on app launch, while maintenance mode can be enabled instantly without a new release.
Force Update
Required
Update v2.4.0
Zero Friction Integration

One sync() call Done

Drop the SDK into your iOS, Android, Flutter, or React Native app. Call sync at startup. AppSync handles version checks, force prompts, optional prompts, and maintenance routing, all behind the SDK.

import AppsOnAir_AppSync
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    // AppSync Class instance create
    let appsOnAirSyncService = AppSyncService.shared

    // AppSync common services Initialization
    appsOnAirSyncService.sync(directory: ["showNativeUI":false]) { appUpdateData in
        // Write the code here when showNative UI is false
    }
    return true
  }
  // Remaining contents of your AppDelegate Class...
}
import com.appsonair.appsync.services.AppSyncService

class MainActivity : AppCompatActivity() {
  private val TAG = "MainActivity"
  override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      
      // Initializing AppSyncService with callback for custom UI
      AppSyncService.sync(
          this,
          options = mapOf("showNativeUI" to true),
          callBack = object : UpdateCallBack {
              override fun onSuccess(response: String?) {
                  Log.d(TAG, "onSuccess: ")
              }

              override fun onFailure(message: String?) {
                  Log.d(TAG, "onFailure: ")
              }
          },
      )
  }
}
@override
void initState() {
  AppSyncService.sync(
    context,
    options: {'showNativeUI': false},
    customWidget: (response) {
      return Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Text("Application Name : ${response["appName"]}"),
          Text(
            "Application Version : ${response["updateData"]["buildNumber"]}",
          ),
          const SizedBox(height: 20),
          ElevatedButton(
            onPressed: () {},
            child: const Text('Update'),
          ),
        ],
      );
    },
  );
  super.initState();
}
const [data, setData] = useState<AppSyncResponse | null>(null);

useEffect(() => {
  sync({ showNativeUI: false }).then((res) => {
    setData(res);

    // Custom alert for android app update
    if (res.updateAvailable) {
      Alert.alert(
        "Update Available",
        "A new version of the app is available. Please update to the latest version.",
        [
          {
            text: "OK",
            onPress: () => Linking.openURL(res.updateData.updateLink!),
          },
        ]
      );
    }
  });
}, []);
Built For Every Mobile Team

Whoever ships your app, AppSync fits

Enterprise & Compliance

Enforce minimum supported versions for security audits, compliance windows, or GDPR-driven breaks. Flip the toggle from the dashboard with no commit needed.

Startups & Indies

When a critical bug surfaces, immediately show a force-update prompt to nudge users toward the new store version, with no version-check code change required.

SaaS Mobile Apps

Manage maintenance windows for backend deployments. Block app entry instead of breaking it. Restore access with a single toggle.

Progressive Rollouts

Start with optional updates for 7 days, then promote to a forced update once you are confident the build is stable. Safer launches.

One Platform for different SDKs

Zero-friction integration for modern stacks.

Android

Kotlin & Java

iOS

Swift & SwiftUI

Flutter

Dart Ecosystem

React Native

JS & TypeScript

Got Questions? We've Got Answers

Do I need to update my app on the App Store or Play Store every time I change the update rules?

Can I apply different update rules for different app versions/platforms?

What if a user force-quits the app and relaunches during maintenance?

What happens if I uninstall AppSync SDK but forget to remove the dashboard settings?

Sync Your App
Success Today

No credit card required • Instant Setup