How we started with a custom keyboard, hit iPadOS walls, and shipped a privacy-first composer that feels right with Magic Keyboard.
We set out to ship a Phonetic keyboard for iPad. The on-screen part worked—but iPadOS doesn't let third-party keyboards reliably remap hardware keyboards system-wide. Rather than ship a half-solution, we pivoted to an iPad app—Composer—that delivers fast phonetic typing (especially with Magic Keyboard), autosave + notes, a key layout guide, and a strict offline, no-tracking stance. It's now approved for the App Store.
The Problem We Are Addressing
If you type Armenian, a phonetic layout (QWERTY → Armenian letters) is second nature. iPadOS, however, doesn't include Armenian Phonetic. Some third-party keyboards exist, but many ship with broad data-collection clauses. We wanted:
- A layout Armenians actually use: phonetic
- Privacy-first: offline, no analytics, no accounts
- Works with hardware keyboard (Magic Keyboard)
Phase 1 — The Keyboard Extension
Goal: A system keyboard you can pick in any app.
CSV → keys on screen: We defined the layout in a CSV. First speedbumps: BOM/line endings broke our parser; we fixed detection and normalized headers. "White keyboard": The extension booted with zero keys when CSV failed—we added error label + fallback layout. Constraints: Initial height locks fought UIKit; we switched to gentle constraints.
Signing, bundles, and install: Duplicate bundle identifiers, Embed & Sign issues, CFBundleExecutable missing, UIDeviceFamily warnings—all fixable. The on-screen phonetic keyboard worked.
Then came the hard stop: hardware keyboards. With a Magic Keyboard attached, our number/symbol row still typed digits in other apps. iPadOS routes physical keys through Hardware Keyboard Layout before third-party keyboards can remap them.
"iPadOS does not let a third-party keyboard extension globally remap a hardware keyboard across apps."
Phase 2 — The Pivot to Composer
Decision: Build an iPad app where we control the editor, so hardware keys map exactly the way Armenian phonetic writers expect.
What we built:
- Phonetic mapping for letters and punctuation
- Smart punctuation: Auto-capitalize after Armenian period and Return
- Keyboard layout guide: Full-screen, segmented
- Notes + autosave: Named notes plus background draft
- Copy/Share on the assistant bar
- iPad-only UI: Compact top bar, no clutter
The sticky UI bug: When returning to the app, iPadOS sometimes auto-scrolled. We tried multiple approaches and settled on freezing viewport briefly on foreground, blocking auto-scroll methods, then restoring exact offset + selection. Zero motion on return.
Shipping Details
- Privacy manifest (ITMS-91056): Must be
plist, not JSON. Include version keys, leave arrays empty if collecting nothing. - Export compliance: Set
ITSAppUsesNonExemptEncryption = NO - iPad-only:
TARGETED_DEVICE_FAMILY = 2 - Company/DSA: App Store Connect may block if missing
- TestFlight blank page: Usually no processed build yet
Composer Today
Armenian Phonetic typing, Magic Keyboard friendly, auto-caps, notes + autosave, copy/share, keyboard layout guide, iPad-only, privacy-first.