AndroidGuideExplainer

In-app updates in DeDup 1.5.3 on Android: flexible, immediate and what Later does

Rahul Pahuja·October 17, 2026·3 min read

DeDup 1.5.3 on Android uses Google Play's in-app update system. Each time the main screen comes back to the foreground, the app asks Play whether a newer build exists. What happens next depends on the version number and a minimum DeDup sets remotely.

When the check runs

The check runs on every resume of the main screen, not once a day or once per install. It asks Play for the update status. If Play reports nothing, or the request fails, the app writes a debug log line and shows nothing.

The code's own note says only builds installed from Google Play see updates. Elsewhere, Play reports none and nothing happens. We haven't tested a sideloaded build.

The rule

DeDup compares build numbers (version codes), not the 1.5.3 name. This build's version code is 30. In order:

  1. If Play offers no newer build, nothing happens. This holds even when you're below the minimum.
  2. If your build number is below the minimum, DeDup starts an immediate update, a full-screen flow from Play.
  3. Otherwise DeDup starts a flexible update, which downloads in the background, unless you already declined that exact build.

The minimum is a Firebase Remote Config value named android_min_version_code. The default is 0, which means no minimum. It's fetched on each check. If the fetch fails, the code uses the last value it fetched, or 0. Since it's remote, it can change without a new release.

Flexible updates

A flexible update is offered at most once each time the main screen is created. Returning to the app again without that screen being re-created doesn't re-offer it. When the download finishes, DeDup shows a dialog titled "Update ready": "Restart DeDup to finish installing the new version." Restart installs it. Later closes the dialog. Later doesn't remember anything. On your next return to the app, the code sees the finished download and shows the dialog again.

If the flexible prompt from Play ends without you accepting (you decline or dismiss it), DeDup saves that build number in the app's local storage. It won't offer that build as a flexible update again. A newer build is offered normally.

Immediate updates

If the immediate update flow ends without success, for example when you back out, DeDup closes the app. The next time you open it, the app asks again. If you leave an immediate update partway through, the next resume picks it back up.

If Play says it won't allow the update type DeDup wants, the code does nothing.

Scope of this post

Checked against: DeDup 1.5.3 source code (Android).

Not tested on a device: any update flow, what Play shows on screen, how long a download takes, the sideload case, and the live Remote Config minimum. We read the rule in code and didn't run it.