Clipboard with three rows of version notation dots in restrained navy and teal on cream paper

Reference

How to read APK version strings

What the digits after the dot mean, and when a higher number is not necessarily safer.

Reading time: 6 min read

Major, minor, patch breakdown on cream textured paper with restrained navy and teal ink

The three-number version string

Most APK version strings follow the form major.minor.patch, for example 4.1.2. The major number changes when the developer rewrites a large part of the app; the minor number changes when the developer adds a feature; the patch number changes when the developer ships a bug fix or a small adjustment. A reader who reads only the major number is missing the most informative part of the string: the patch number is the one that changes most often and is the one the changelog usually names.

Editor note. Editor note on the major.minor.patch convention: the convention is not universal. Some developers use major.minor.build, where the third number is a build counter rather than a patch counter. The games library surfaces whichever form the developer publishes.

The three-number version string on cream textured paper with restrained navy and teal ink
The three-number version string.

When a higher number is not a safer build

A higher number is not necessarily a safer build. A version bump from 4.0.4 to 4.1.0 is a feature addition, not a security fix; a version bump from 4.1.0 to 4.1.2 is a patch bump, which is more likely to be a security fix or a bug fix. A reader who treats every version bump as a security improvement is over-rating the surface. The changelog line on the developer site is the source of truth; a version bump without a changelog line is a signal that the developer has not published what changed.

Editor note. Editor note on the higher-number trap: a 4.1.2 build is not necessarily safer than a 4.0.4 build. The games library lists the changelog line for each build; a reader who trusts the number without reading the changelog is missing the verification surface.

When a higher number is not a safer build on cream textured paper with restrained navy and teal ink
When a higher number is not a safer build.

Reading the changelog line

The changelog line is a short sentence written by the developer. A good changelog line names the feature or the fix, the date the build was published, and the build number. A bad changelog line is "improved performance" or "minor bug fixes" with no further detail. A reader who only reads the bad changelog lines is missing the verification surface; the games library surfaces the changelog line for each build on the entry.

Editor note. Editor note on the changelog line: a one-sentence changelog is the minimum useful signal. A changelog that names a specific feature or a specific fix is more useful than one that does not.

Reading the changelog line on cream textured paper with restrained navy and teal ink
Reading the changelog line.

What a build counter means

Some developers use a build counter in the third position of the version string, for example 4.1.4523. A build counter is the number of builds the developer has published since the last major.minor release. A build counter is useful for verifying that the reader is installing the latest build, but it is not a substitute for the changelog line. A reader who treats the build counter as a freshness signal is reading the right field.

Editor note. Editor note on the build counter: the build counter is incremented every time the developer publishes a build, regardless of whether the build is a feature, a fix or a regression. A high build counter does not mean a safer build.

What a build counter means on cream textured paper with restrained navy and teal ink
What a build counter means.

Confirm the version on the developer site

Before tapping install, confirm the version on the developer site matches the version on the entry. The apps library lists the entries we have already opened on the developer site; an entry not on the list is a candidate for the contact submission. A reader who installs a version that does not match the developer site listing is installing an unverified build.

Editor note. Editor note on the version check: open the developer site in a new tab and verify the version string against the one listed on the games library entry. A reader who trusts the in-app version without checking is the most common source of version mismatch installs.

Confirm the version on the developer site on cream textured paper with restrained navy and teal ink
Confirm the version on the developer site.

Why developers use a four-number version string

Some developers use a four-number version string, for example 4.1.2.1, where the fourth number is a build counter that resets to zero on every major bump. A reader who reads only the first three numbers is missing the build counter; the build counter is the most precise freshness signal. The games library surfaces whichever form the developer publishes.

Why developers use a four-number version string on cream textured paper with restrained navy and teal ink
Why developers use a four-number version string.

Why developers use a date-based version string

Some developers use a date-based version string, for example 2026.08.12. A date-based version string is unambiguous and easy to compare; a number-based version string is comparable only if the developer follows the major.minor.patch convention. A reader who reads a date-based version string can sort the versions by date without reading the changelog.

Why developers use a date-based version string on cream textured paper with restrained navy and teal ink
Why developers use a date-based version string.

Why some developers do not publish version strings at all

Some developers do not publish a version string on the developer site. The games library marks the entry "version not published by the developer" rather than estimating the version. A reader who treats an unpublished version as the developer's latest build is reading an absence as a positive signal; the absence is the signal.

Why some developers do not publish version strings at all on cream textured paper with restrained navy and teal ink
Why some developers do not publish version strings at all.

Common pitfalls on APK version strings

Three pitfalls show up often in reader mail. The first is reading a higher number as a safer build: a higher number is not necessarily a safer build, and the changelog line is the source of truth. The second is trusting the in-app version string without checking the developer site: the in-app version string can be different from the developer site version string if the developer has not published the most recent build. The third is treating a build counter as a freshness signal without reading the changelog: a high build counter does not mean a safer build, and a build counter increment is not a feature. A reader who treats these three pitfalls as a single workflow is reading the surfaces as coupled when they are independent. The apps library lists the entries we have already opened on the developer site; an entry not on the list is a candidate for the contact submission.

Common pitfalls on APK version strings on cream textured paper with restrained navy and teal ink
Common pitfalls on APK version strings.

A short checklist for reading a version string

Before tapping install on a Yono-style app, run the following short checklist on the version string. Read the major number: a major bump means a rewrite of a large part of the app. Read the minor number: a minor bump means a feature addition. Read the patch number: a patch bump means a bug fix or a small adjustment. Read the build counter if the developer uses one: a build counter is incremented every time the developer publishes a build. Read the date if the developer uses a date-based version string: a date-based version string is unambiguous and easy to compare. Read the changelog line for the build you are about to install: the changelog line is the source of truth for what changed. Confirm the version on the developer site matches the version on the entry. Together the seven checks cover the version-reading work in seven steps. The seven steps take about three minutes. The three minutes is the cheapest way to verify the version string. The apps library lists the entries we have already opened on the developer site; an entry not on the list is a candidate for the contact submission.

A short checklist for reading a version string on cream textured paper with restrained navy and teal ink
A short checklist for reading a version string.

When a version string is enough on its own

A version string is enough on its own when the developer publishes a date-based version string and a dated changelog line for each build. In that case the reader can sort the builds by date and read the changelog line for the build the reader is about to install. The games library surfaces a date-based version string where the developer publishes one; where the developer publishes a number-based version string, the games library surfaces the major.minor.patch convention. A version string is not enough on its own when the developer publishes a build counter without a changelog line. In that case the reader has to verify the build counter increment against the developer's published cadence; without a cadence, the build counter is a number without a meaning. A reader who trusts a version string without a changelog line is trusting the developer's naming convention without verifying the build contents. The games library surfaces the changelog line for each build on the entry, so a reader who reads the entry has both the version string and the changelog line in front of them. Together the version string and the changelog line cover the version-reading work; the reader does not need to open the developer site separately if the entry already carries both. The apps library lists the entries we have already opened on the developer site; an entry not on the list is a candidate for the contact submission.

When a version string is enough on its own on cream textured paper with restrained navy and teal ink
When a version string is enough on its own.