A Good Keyboard

Encryption and privacy

What you type goes nowhere

The keyboard does not record your typing and does not send it anywhere. A Good Keyboard has no server: there is no place, on the developer’s side, that your text could pass through.

Your rules are encrypted, and the key is not ours

They follow you through your iCloud, in your Apple account’s private database. Their content — shortcut, replacement, counter — is encrypted field by field, with keys that stay on your devices. Neither the developer nor Apple can read your rules.

Your statistics, in that same private iCloud

Per-key counters, never text. Encrypted in transit and at rest — with Apple’s keys, like the rest of your iCloud. You can harden that by turning on Advanced Data Protection on Apple’s side.

The only data the developer can read is anonymous

And you have to agree to it: you are asked during onboarding, and it is no until you say otherwise. One record per device is then sent — thirteen dates and counters. Never your text, never your rules, no personal identifier: just a number drawn at random. Withdraw your consent and it is deleted.

Why Full Access is required

It is the iOS permission that lets the keyboard read the shared space where your rules live. Without it, iOS isolates the extension and your shortcuts cannot be applied. That is what it is for.

Apple’s warning, explained

iOS then shows a stern message. It is the standard text, the same for every third-party keyboard: it describes what a keyboard could do, not what this one does.

The technical detail
  • Sync happens over CloudKit, in your iCloud account’s private database. The developer runs no server and has no access to that database.
  • Rules: shortcut, replacement and counter are written to CloudKit’s encrypted fields (encryptedValues), whose keys stay on your devices. Only the modification date stays in the clear.
  • Statistics: a snapshot of per-key counters and typing cadence. No text, no words.
  • If learning is on, a correction you accept becomes a rule — encrypted like the others, in your own iCloud.
  • The anonymous measurement is the only public-database write in the whole codebase, and it depends on your consent.

Anonymous statistics

It is off by default

You are asked once, during onboarding, and the answer stays no until you say otherwise. You can change your mind at any time in Settings → Subscription and privacy. Turning the switch off deletes the record sent from your device.

What is sent: thirteen counters, nothing else

One send per 24 hours at most, and a single record per installation: each send overwrites the previous one. No history is kept on the other side.

  • the install date
  • whether you finished onboarding
  • how many days you typed
  • the last of those days
  • how many rules you created
  • how many have been used
  • how many are solid
  • the total replacements applied
  • whether your subscription is active
  • whether the pack is unlocked
  • your language
  • the app version
  • the date of that last send

What is never sent

Not a word you type. No rule trigger, no rule content. No typing cadence, no touch precision, no per-key usage. The keyboard itself sends nothing: it writes its counters into your iPhone’s shared space, and the app transmits them when you open it.

The number that travels with it

It is a number drawn at random on install. It is not your Apple ID, nor your device identifier: the app never asks iCloud who you are, and never asked for your name.

It is stable, and that is deliberate: it is what makes it possible to answer “is this installation still here on day 30?”. Sends from one installation are therefore linked to each other over time.

The technical detail
  • These counters are stored in the public database of the app’s iCloud container — the only public write in the whole codebase. Your rules and detailed statistics never leave your private database.
  • CloudKit itself attaches a creator identifier (creatorUserRecordID) to records in a public database. It is opaque, confined to this container, gives neither name, nor email, nor Apple ID, and the code never reads it — but it exists, and it does not come from us. That is why this page states what we do not ask for and what we have no access to, rather than claiming an impossibility.
  • This matches what is declared to Apple in the app’s privacy manifest: data not linked to the user, no ad tracking, nothing leaving the Apple ecosystem.

The policy, word for word

The text below is exactly what the app displays.

Version 2026-06-11

This policy is written in plain language to explain what A Good Keyboard does, and especially what it does not do, with your shortcuts.

A Good Keyboard lets you create personal text shortcuts and use them with its keyboard.

The app does not sell your data, does not include behavioral ads, and does not use a third-party analytics service in this code.

One thing leaves your device for the team, and only if you agreed to it: a short list of anonymous counters. Nothing you type is part of it. See “Anonymous counters” below.

Shortcut Access

Your saved shortcuts are yours. Nobody at A Good Keyboard, including the development team, can view the shortcuts you save.

A Good Keyboard does not have a server that receives your shortcuts. The app and keyboard read them locally on your device only to display, edit, sync, or apply the replacements you chose.

Data Stored

A Good Keyboard may store your replacement rules, usage counts, keyboard settings, aggregated typing statistics, and subscription state.

Do not save passwords, security codes, sensitive numbers, or highly private information in a rule.

Storage and Sync

Settings and statistics are stored on your device, in the App Group shared by the app and the keyboard. Your detailed statistics can also sync to the private iCloud of your Apple account: the development team has no access to it.

Rules and lifetime counters may sync through the private CloudKit database of your iCloud account so they are available on your signed-in devices. This is not a database managed by the development team.

Anonymous Counters

If you agreed during onboarding, the app sends a short list of counters once a day, to understand where people drop off: the install date, whether you finished onboarding, how many days you typed and the last one, how many rules you created, how many have been used, how many are solid, the total number of replacements applied, your language, the app version, and whether your subscription is active.

Nothing you type, no rule content, no typing rhythm, and no touch precision data is ever transmitted. The app counts, it does not read.

These counters travel with a number drawn at random on your device, which contains neither your name, nor your email, nor your Apple ID. They are stored in the public database of the A Good Keyboard iCloud container, which the development team can read — unlike your detailed statistics, which stay in your private iCloud.

The keyboard itself never sends anything: the app transmits, when you open it.

You can decline during onboarding, or change your mind at any time in Settings. Turning the switch off erases the counters already sent from your device.

Keyboard and Full Access

The keyboard needs iOS Full Access to read data shared by the app and sync iCloud rules.

A Good Keyboard does not send typed text to an external API. Replacements are calculated locally from the rules you created.

Purchases

Purchases and subscriptions are processed by Apple through the App Store. A Good Keyboard only stores whether the subscription is active in the App Group.

Payment, cancellation, and renewal management happen in your Apple account.

Deletion

You can delete your rules in the app. Deletion removes the rule from the local cache and also requests deletion in CloudKit.

You can also remove iCloud-associated data from iOS iCloud settings when that option is available.