Open-source project
rumboalla/apkupdater avatar
rumboalla/apkupdater

APKUpdater: an Android update checker that queries seven stores at once

APKUpdater is an open source tool that simplifies the process of finding updates for your installed apps.

4,018 stars285 forksKotlinGPL-3.0

At a glance

What is it?
APKUpdater is a GPL-3.0 Android app that aggregates update results from APKMirror, Aptoide, F-Droid, IzzyOnDroid, APKPure, GitLab, GitHub and Google Play. This review covers how the 3.x rewrite works, how to install it, and where it falls short.
Who is it for?
Adopt APKUpdater if you sideload apps from several stores and want one screen that reports what is outdated; skip it if you need iOS or a vetted enterprise distribution channel. Before installing, confirm which source each of your apps came from, because the aggregated result is only as trustworthy as the store it was pulled from, and check the release page you download from rather than a mirror.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 126 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What problem APKUpdater actually solves

Android has no single place that tells you when an app you sideloaded has a newer version. Google Play handles apps installed from Play, and F-Droid handles its own catalogue, but an APK you grabbed from APKMirror or a GitHub release page simply sits there until you remember to check. APKUpdater is built for that gap. The README describes it as a tool that "simplifies the process of finding updates for your installed apps", and the mechanism is aggregation rather than a store of its own: it queries APKMirror, Aptoide, F-Droid, IzzyOnDroid, APKPure, GitLab, GitHub and Google Play and reports what it finds.

The audience is narrow and specific. This is for people who install APKs outside Play, who run Android 5 (API 21) through Android 14 (API 34), and who want a single list instead of opening seven websites. The README also lists Android TV support, which matters because TV boxes are a common home for sideloaded builds. It is not a store, it does not host files, and it does not replace Play for apps that Play already updates.

How the 3.x rewrite queries multiple stores

The 3.x branch is a full rewrite in Kotlin using Jetpack Compose, Flow and WorkManager, and the repository layout matches that claim: a single app/ module, a Gradle Kotlin DSL build (build.gradle.kts, settings.gradle.kts), and a fastlane/ directory for store metadata. The architecture implied by those dependencies is a set of source clients feeding a reactive pipeline. Flow carries results from each source as they arrive, Compose renders the list, and WorkManager schedules the background checks that produce the update notifications.

That design has a visible consequence. Because results stream in per source rather than waiting for all eight to answer, a slow or unreachable store does not block the rest of the list. The flip side is equally visible: the app is only as accurate as the sources it queries. If a project publishes releases on GitHub but tags them inconsistently, or if a store lags behind upstream, APKUpdater will report what that source says, not what is actually newest. The README does not document any per-source version-matching rules, so how a candidate build is judged newer than the installed one is not something you can verify from the documentation alone.

The install path is where the aggregation pays off. The README lists direct install for sources that support it, installs without user interaction on Android 12 and above, and root install. Those three are not the same capability: the Android 12+ option depends on the platform's silent-install permission, root install depends on a rooted device, and everything else falls back to the standard package installer prompt.

Installing APKUpdater and running a first check

There is no package manager entry to install from. The README points to a stable release, version 3.0.3, distributed as com.apkupdater-release.apk from the project's GitHub releases, plus CI pre-release builds and older releases on the same page. The app is not on Google Play, so you sideload it like any other APK.

Download the stable APK from the release page. The filename in the README is com.apkupdater-release.apk.

bash
# from the README download section
# Stable Release (3.0.3)
# com.apkupdater-release.apk
adb install com.apkupdater-release.apk

After install, open the app and let it enumerate your installed packages. The README's feature list describes the two modes you will see: update sources, which check apps you already have, and search sources, which find new apps to install. Both draw on the same eight providers.

If you want the checks to run on their own, enable the scheduled background check. The README states that APKUpdater schedules background update checks and sends a notification when updates are found; WorkManager is the component named in the rewrite notes, so the schedule survives reboots and app restarts. What the README does not give is the default interval or the exact settings path, so expect to find it in the app's settings screen rather than in the documentation.

For updates, the README lists direct install for sources that support it, installs without user interaction on Android 12 and above, and root install. On a non-rooted device below Android 12, expect the normal installer confirmation for each update.

Where APKUpdater is the wrong tool

The most obvious limit is platform. There is no iOS build. The related searches include "Apkupdater ios", and the answer is that the README lists Android only, from API 21 to API 34. If you need the same function on an iPhone, this project does not provide it.

The second limit is trust. APKUpdater aggregates mirrors and third-party stores. APKMirror, Aptoide and APKPure are not the upstream developer, and an APK fetched from them is not guaranteed to be byte-identical to the one the developer signed. APKUpdater does not sign, verify or re-package anything according to the README; it reports a version and hands the file to the installer. On a rooted device with silent install enabled, that handoff happens without a confirmation dialog, which removes the last human check. If you are not comfortable with that, do not enable root install.

The third limit is coverage. An app that is not present in any of the eight sources will never appear as updatable, and the README does not describe a way to add a custom source. An app you built yourself and installed from a local file is effectively invisible to the update check unless you published it somewhere APKUpdater queries.

Finally, the release cadence is worth reading carefully. The most recent release listed is a CI pre-release, 0.0.604-ci, published on 2026-05-28. The stable release referenced in the README is 3.0.3. That means the version numbering on the release page and the version numbering in the README do not line up, and a reader looking for the newest build should check which channel they are on before comparing numbers.

How it compares with F-Droid and Obtainium

F-Droid is the closest thing to a default answer, and it takes the opposite approach. F-Droid builds apps from source itself and serves them from its own repository, so the trust chain is short and the catalogue is curated. APKUpdater does not build anything and does not curate; it reads what other stores publish. If every app you care about is in the F-Droid catalogue, F-Droid already solves your update problem and APKUpdater adds a second, less authoritative list. The README lists F-Droid and IzzyOnDroid as sources, so the two can coexist, but for a pure F-Droid user the extra layer is noise.

Obtainium is the other natural comparison for anyone tracking GitHub and GitLab releases. Where APKUpdater ships a fixed set of eight providers, Obtainium-style tools are built around adding a source URL per app. The trade-off is explicit: APKUpdater gives you a working list with no configuration and no way to extend it, while a per-app source model gives you coverage of anything with a release feed and more setup per app. The README documents no custom source mechanism for APKUpdater, so if your apps live outside the eight named providers, the fixed set is a hard ceiling.

Licence, maintenance and upgrade cost

APKUpdater is licensed under the GNU General Public License v3, with the README carrying a copyright line of 2016-2024 rumboalla. GPL-3.0 is a copyleft licence: if you fork the app and distribute a modified build, the source for your version has to be made available under the same terms. Using the app on your own phone carries no such obligation. This is a summary of what the licence identifier means, not legal advice; read the licence text if you plan to redistribute a build.

The repository is not archived, and the last push was on 2026-05-28. Releases in the list run from 2026-03-17 through 2026-05-28, all tagged as CI pre-releases. Upgrade cost for a user is low: the app is a single APK with no server component and no database to migrate, so a new build replaces the old one. Upgrade cost for a contributor is higher, because translations are maintained as a strings.xml file in app/src/main/res/values/ and the README asks for pull requests or issues against it, with a long list of named translators per language. Adding a language or fixing a string means touching that file on the 3.x branch.

Editorial conclusion

Adopt APKUpdater if you sideload apps from several stores and want one screen that reports what is outdated; skip it if you need iOS or a vetted enterprise distribution channel. Before installing, confirm which source each of your apps came from, because the aggregated result is only as trustworthy as the store it was pulled from, and check the release page you download from rather than a mirror.

Frequently asked questions

What is APKUpdater?

It is an open source Android tool that finds updates for apps you have already installed, aggregating results from APKMirror, Aptoide, F-Droid, IzzyOnDroid, APKPure, GitLab, GitHub and Google Play. The 3.x branch is a Kotlin rewrite using Jetpack Compose, Flow and WorkManager.

Is APKUpdater safe?

The README states there are no ads and no tracking, and the source is published under GPL-3.0. The app itself does not host or sign APKs; it reports versions from third-party stores and hands files to the installer, so the trustworthiness of any given update depends on the source it came from.

How do I update an APK app on my Android device with APKUpdater?

Install the app, let it enumerate your installed packages, then run an update check. The README lists direct install for sources that support it, installs without user interaction on Android 12 and above, and root install; on other configurations the standard installer prompt appears.

What can I use instead of APKUpdater?

F-Droid covers the same ground for apps in its own catalogue, because it builds and serves them itself rather than reading other stores. For apps tracked by release feed, a per-source tool lets you add a URL per app, which APKUpdater does not: the README documents a fixed set of eight providers.

Which APK updater app is the best?

That depends on where your apps come from. APKUpdater is the one that queries eight stores at once and reports what each says; F-Droid is the better fit when every app you care about is in its own catalogue, because it builds and serves those apps itself.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. README
  4. Releases
  5. rumboalla/apkupdater on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/rumboalla-apkupdater.svg)](https://hysenlabs.com/projects/rumboalla-apkupdater)