> ## Documentation Index
> Fetch the complete documentation index at: https://patch.codemagic.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Fingerprinting

> How native fingerprints block incompatible OTAs, and how to register each store binary with a disabled release.

{/* Capacitor: hidden from the Capacitor sidebar; its counterpart is binary-version-capacitor.mdx. Do not copy this page onto Capacitor until a Capacitor fingerprint exists. */}

# Fingerprinting

A fingerprint is a hash of the native code in your project. Patch computes it at release time and records the first value it sees for each deployment and binary version.

It is a compatibility signal. Matching fingerprints should mean compatible native code but are not a 100% guarantee.

## How it helps

### Disagreements

If a new release's fingerprint disagrees with the value already stored for that binary version, the current CLI and dashboard block the publication. The block is designed to stop accidental incompatibilities, and you can override it once you have checked that the release targets the intended native binary:

- In a terminal, `cmpatch release-react` and `cmpatch release create` show the stored and release fingerprints and ask you to confirm before they retry.
- In CI, or with `--yes`, there is no prompt: the command fails with a hint. Pass `--allow-fingerprint-mismatch` to publish anyway.

### Expansion

The SDK usually only installs a release whose target binary version matches the running app. Fingerprint expansion is the exception: the worker also publishes that release to other binary versions that already recorded the same fingerprint.

Store builds that share native code can therefore receive the same OTA without you targeting each binary version by hand.

## Register each store build

Fingerprint checks rely on having a baseline for that binary version for further releases to check against.

On each store (or production-track) build, from the same commit as the published binary, create a disabled release on the deployment those devices use:

```bash
cmpatch release-react \
  --platform ios \
  --deployment Production \
  --disabled \
  --yes
```

Using `--disabled` means the release is stored on the server and the fingerprint is recorded, but devices do not download it. Later OTA releases to that binary can then be checked against the fingerprint.

For targeting and promotion, see [Releasing updates](/docs/using-patch/releasing-updates).
