-
Notifications
You must be signed in to change notification settings - Fork 4
Full vs Lite
WM Keyboard builds as two APKs from the same source. bundles on-device machine learning for handwriting, scanning, grammar checking, offline voice, and a local AI model. drops all of it for a much smaller download. Everything else (typing, prediction, themes, languages, privacy) is identical between them.
Both flavors come from one Gradle flavor dimension (capabilities) that flips five build flags. Lite ships with all five off, which hides exactly five tools from the toolbox:
| Tool | What it does | |
|---|---|---|
| Handwriting | Write words by hand (finger or S Pen) with on-device recognition | Not available |
| Text scan (OCR) | Point the camera at printed text and type it | Not available |
| QR & barcode scanner | Scan a QR code or barcode and insert its text | Not available |
| Document scanner | Scan a document with Google's scanner and send it as an image | Not available |
| Grammar check | Check your writing for grammar issues, fully offline (Harper) | Not available |
There's no toggle to flip in Lite. The setting never renders at all. The same check hides these tools everywhere they could otherwise show up: the toolbox panel, the Tools settings screen, settings search, the hardware-keyboard tool shortcuts, and the onboarding tool picker. A Lite build also declares no Harper spell-checker service, so it never appears as an option under Android's system spell checker.
The document scanner has a second condition on top of the flavor. It's an activity inside Google Play services rather than this app's own code, so the same check drops it on a Full build running on a phone without Play services. Text scan and QR scanning stay on such a phone, because their models are in the APK.
Handwriting carries one nuance of its own. Even on Full, its "Handwrite with swipes" option (draw letters instead of gliding) appears only once you've turned on gesture typing, because handwriting a swipe needs the same recognition model.
See Handwriting, Scanner, and Grammar check for what each tool does in detail.
Two more features are Full-only without being toolbox tools of their own. Both are options nested inside tools that exist in both editions:
- Offline Whisper voice dictation. The Voice typing tool always exists, but its "Recognition engine" choice (system recognizer versus offline Whisper) appears only on Full. Lite users see the system recognizer and nothing else, and Whisper never comes up. Even on Full, the system recognizer stays the default until you switch it. The Whisper tool page covers its full model catalog.
- On-device local LLM. The AI writing tools provider picker filters out the "On your device" chip unless the Full flags are set, leaving the eight that reach a server: Claude, OpenAI, Gemini, Grok, DeepSeek, Ollama, LM Studio and "Other service" for anything else that speaks the OpenAI chat-completions shape. On Full, on-device is a ninth chip beside them. Claude (Anthropic) is still the default provider until you change it.
The build's own comment on the flavor split calls it out directly: Lite "removes roughly 100 MB of ML Kit + Harper native libraries for low-storage devices." That figure covers the handwriting, scanning, and grammar libraries specifically. The LiteRT and LiteRT-LM runtimes behind offline Whisper and the local LLM are also Full-only native dependencies and add to the same gap.
Most of what gets cut is runtime library code, not language data. The biggest models these features use (handwriting recognition per language, Whisper's transcription graphs, LLM weights) download on demand into app storage on Full, so none of those sit in the APK.
Two do ship inside it, though. The direct-download builds pull in ML Kit's bundled text-recognition and barcode-scanning libraries, which carry their models with them, so OCR and QR scanning work on a phone with no Google services at all. Play builds swap both for the unbundled versions, which fetch their models through Play services instead. Either way it's a Full-only dependency, so Lite carries neither the libraries nor the models.
Measuring the real 0.3.0 release APKs tells the same story, with a smaller gap than that code comment's rough number. On arm64-v8a, Full lands at 63.2 MB and Lite at 8.25 MB, so about 55 MB apart rather than 100. Figures shift as dependencies update, same as noted on Installation.
Lite is a smaller build, not a more private one. Every Full-only feature already runs on-device and says so in its own settings caption. Handwriting recognition "runs fully on your device with Google ML Kit." Text scan says "no photo and no text leaves your device, and it works offline." Document scanning says "the processing runs on your device." Harper grammar checking "works offline and uploads nothing that you type." Whisper "runs fully on your device across many languages and sends no audio anywhere." The on-device AI caption says the text you run an action on "stays on your device." Everything Full adds follows the same offline-first posture as the rest of the keyboard.
About / App / Version
The Version row reads the build's own flavor name, so it shows "Full build (release) · code …" or "Lite build (release) · code …" alongside the version number. There's a quicker visual check, though. Open the toolbox. If Handwriting, Text scan, QR & barcode scanner, Document scanner and Grammar check are all there, you're on Full. If they're missing, you're on Lite.
There's no in-app switch between editions. Which one you have depends entirely on which APK you installed. Both flavors share a package name and a release signing configuration, so installing the other edition's APK over your current install is a normal app update rather than a conflicting package. Your settings, themes, learned words and the rest of the app's data stay in place automatically. See Installation for the build commands for each flavor.
- Toggling a Lite build's settings never leaves Handwriting, OCR, QR, Doc scan or Grammar "enabled but hidden" in some special sense. All five are still listed among the keyboard's default enabled tools internally. They just never pass the supported-tool check that decides what renders, and that is true on either build.
- Build release APKs for both editions on different machines without sharing a signing keystore and the packages carry different signatures. Installing one over the other then fails the way any mismatched-signature update does (see Installation → Details & edge cases).
- Exported debug logs stamp which flavor produced them, which is useful context if you're sharing one for a bug report.
- Home
- Getting started
- Typing
- Languages
- Suggestions & correction
- Emoji & expression
-
Tools
- Clipboard manager
- Voice typing
- Offline voice (Whisper)
- Handwriting
- Scanner (OCR, QR, documents)
- Camera tool
- Translate
- Search, Wikipedia & dictionary
- Media controls
- AI chat
- AI tools
- Utility tools
- Snippets & text expansion
- Text editing & cursor tools
- Instruments
- Trackpad
- Calendar
- App launcher
- Learn from text
- Vocabulary
- Resize the keyboard
- The toolbar
- Themes & appearance
- Addons
- Plugins
- Privacy & security
- Accessibility
-
Reference
- Gesture cheat sheet
- Typing
- Hardware shortcuts
- Deep links & launcher shortcuts
- Key press
- Link builder
- Dictionaries & words
- File formats
- Languages
- Importing from other keyboards
- Appearance
- Importing from Espanso
- Keyboard themes
- Keyboard font
- Troubleshooting
- Glossary
- Icons
- Easter eggs
- Layout & size
- Key layouts
- Rows & bars
- Keyboard modes
- Emoji
- Phone number formats
- Tools
- Addons & plugins
- Reference - Accessibility
- Fingerprint lock
- Reference - Data saver
- Reference - Permissions
- Privacy
- Reference - Selection actions
- Servers
- Reference - Backup & restore
- About & diagnostics
- Statistics
- Settings A–Z
- Development