◉RORK LABJP
●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…
Articles/Dev Tools
⬡ Dev Tools/2026-04-15Advanced

Building a Custom AI Keyboard Extension with Rork Max: A Complete iOS Keyboard Extension Guide

A complete guide to building a custom iOS Keyboard Extension with Rork Max. Covers Claude API integration for AI text completion, multilingual translation, smart templates, App Store review strategy, and subscription monetization.

Rork Max236Keyboard ExtensioniOS116AI31SwiftUI66UIInputViewControllerApp Extension3Subscription23

✦ Premium Article

The keyboard is where users spend more time than almost any other interface on their iPhone. Yet the App Store is surprisingly thin on well-executed AI keyboards — especially ones that offer real intelligence, not just emoji shortcuts or custom themes. Rork Max changes this. Because it generates true SwiftUI and UIKit code, it can build Keyboard Extensions — something no other no-code tool supports.

This guide walks through the complete process: generating the Extension target in Rork Max, wiring up Claude API for real-time text completion, sharing data securely between the main app and extension via App Groups, handling the tricky Full Access requirement, and getting through App Store review. You'll get three complete, working code examples, a 10-point pitfall list, and a monetization model built around subscription revenue.

Why AI Keyboards Are One of the Best Opportunities for Indie Developers Right Now

The keyboard app category has fundamentally shifted. GBoard and SwiftKey dominated the early years, but those apps are built for everyone — which means they're optimized for no one in particular. Niche AI keyboards have been quietly building strong subscription businesses: a medical terminology completer for nurses, a code snippet inserter for developers, an SNS post generator for content creators.

What makes keyboards a particularly attractive indie bet: switching costs are enormous. Once a user builds muscle memory with your keyboard and their customizations live in your app, they don't leave. Churn rates for keyboard apps run 2-3% monthly — significantly lower than the average utility app.

Rork Max opens this category to developers who couldn't previously tackle it. The three things that make it viable: it generates UIInputViewController subclasses correctly, it handles the Claude API integration code, and it builds the App Groups configuration for data sharing between the main app and the extension.

For a size reference, capturing just 2,000 paying subscribers at $4.99/month puts you at $10,000 monthly revenue before Apple's 30% cut. That's the math that makes this worth the engineering complexity.

iOS Constraints You Must Understand Before Building

Keyboard Extensions are one of the most restricted extension types in iOS. Get these wrong and you'll ship something that doesn't work — or gets rejected.

Network access requires Full Access: The extension cannot make network requests unless the user has explicitly granted Full Access in Settings → General → Keyboards → [Your Keyboard] → Allow Full Access. This is not optional — it's an OS-level restriction. Your entire AI feature set depends on users granting this.

60MB memory limit: The extension process runs in a sandboxed container with roughly 60MB of available memory. On-device LLMs are out. Cloud APIs are the correct architecture.

App Groups for data sharing: The standard UserDefaults container isn't shared between the main app and the extension. You must use an App Groups container with UserDefaults(suiteName: "group.yourcompany.yourkeyboard"). This applies to API keys, user preferences, subscription state — everything.

No background execution: The extension only runs when the keyboard is visible. AI requests must complete within the user's attention window — typically 5 seconds maximum before they give up.

Pasteboard restrictions: Without Full Access, the extension can't read from the clipboard. Write operations (copying generated text to clipboard) are allowed, but reading isn't.

These constraints inform every architectural decision. Design for Full Access as the "premium" state that unlocks AI features, and ensure the keyboard works as a basic input device without it.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦Developers stuck on iOS Keyboard Extension implementation can now build a Claude API-powered AI autocomplete keyboard today
✦Master UIInputViewController architecture, App Groups data sharing patterns, and Full Access handling with working code examples
✦Get the App Store approval checklist that avoids common rejections, plus a subscription monetization blueprint for building toward $7,000/month revenue
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

⬡ Dev Tools2026-09-05
Your Widget Extension Can Submit a BGTaskScheduler Request. It Just Cannot Register the Handler
Calling BGTaskScheduler from a widget extension compiles, submits, and returns true — and then nothing runs. Here is why registration belongs to the host app only, and how I moved refresh ownership back where it belongs across my wallpaper apps.
⬡ Dev Tools2026-07-18
The Generated Screen That Quietly Jams at AX5 and in German — Putting Layout Resilience Checks on Rork Max SwiftUI
A record of running every Rork Max generated SwiftUI screen through pseudolocalization and the largest text size to find exactly where it jams. Covers when to reach for ViewThatFits, ScaledMetric and layoutPriority, plus the snapshot checks that catch regressions every time you regenerate.
⬡ Dev Tools2026-05-17
Testing Rork Max SwiftUI Features on a Real Wallpaper App — What Worked, What Needed Fixes
I benchmarked Rork Max's SwiftUI generation against the production code of a wallpaper app I actually run. Here is what shipped as-is, what needed fixing, and what I ended up writing by hand — with working code and on-device measurements.