|
| 1 | +# CLAUDE.md — nostrkey.app.ios.src |
| 2 | + |
| 3 | +## What This Is |
| 4 | +NostrKey iOS app — native wrapper that runs the full NostrKey browser extension UI on iOS with native platform integrations (QR scanner, clipboard, lock screen npub display). |
| 5 | + |
| 6 | +## Ecosystem Position |
| 7 | +Mobile surface for NostrKey — the key management layer. Same role as the browser extension but on iOS. Uses dual-WKWebView architecture with IOSBridge.swift bridging JS to native APIs. |
| 8 | + |
| 9 | +## Current Version |
| 10 | +v1.1.1 — Bundled extension v1.5.4 — App Store submission in progress |
| 11 | + |
| 12 | +## Tech Stack |
| 13 | +- Swift 5.9, Xcode 15.0+ |
| 14 | +- Dual-WKWebView (background + UI) |
| 15 | +- IOSBridge.swift (`WKScriptMessageHandler`) |
| 16 | +- ios-polyfill.js maps `chrome.storage`/`chrome.runtime` to bridge calls |
| 17 | +- UserDefaults for storage |
| 18 | +- AVFoundation for QR scanning |
| 19 | +- xcodegen for project generation |
| 20 | + |
| 21 | +## Build |
| 22 | +```bash |
| 23 | +xcodegen generate |
| 24 | +open NostrKey.xcodeproj |
| 25 | +# Build & Run in Xcode |
| 26 | +``` |
| 27 | + |
| 28 | +## Key Differences from Browser Extension |
| 29 | +- Storage: UserDefaults (not `chrome.storage`) |
| 30 | +- QR scanning: AVFoundation (native) |
| 31 | +- No `window.nostr` injection |
| 32 | +- No cross-device sync yet |
| 33 | +- Lock screen QR code + npub display (iOS-only features) |
| 34 | + |
| 35 | +## Planned |
| 36 | +- App Store listing |
| 37 | +- App Groups (share profiles between iOS app ↔ Safari extension) |
| 38 | +- Biometric unlock (Face ID / Touch ID) |
| 39 | +- Deep links (`nostr:` URIs) |
| 40 | + |
| 41 | +## Related Repos |
| 42 | +- `nostrkey.browser.plugin.src` — core extension code (bundled here as web assets) |
| 43 | +- `nostrkey.app.android.src` — Android equivalent |
| 44 | +- `nostrkey.bizdocs.src` — business strategy |
0 commit comments