Repository navigation
perf(mobile): isolate iOS Live Activity imports - #12380
Conversation
commented
Sep 18, 2026
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
commented
Sep 18, 2026
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a contained platform-import refactor that preserves the existing iOS Live Activity implementation while removing iOS-only runtime code from Android’s bundle. Shared registration behavior remains unchanged for supported paths, with tests updated for the adapter boundary. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (4)
Included review availability: Your plan provides up to 10 included reviews per hour; 5 remain after this review. 📝 WalkthroughWalkthroughThe change adds typed live activity helpers for iOS and other platforms. Local registration, cleanup, and remote reconciliation now use these helpers. Tests mock the named helper exports. ChangesAgent Live Activity integration
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Refactor Merge Risk: ⚪ Minimal · up to No actionable compatibility, runtime, security, or data-integrity issue was found in this change. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
The shared notification registration module eagerly imports the iOS Live Activity layout, bringing
expo-widgetsand 81 SwiftUI modules into Android. Put layout access behind an iOS adapter and an unsupported-platform adapter with erased type imports. Keep registration, retry handling, reconciliation, and sign-out cleanup in the shared module.Verification:
expo-widgetsmodules, zero SwiftUI modules, and no AgentActivity layout. iOS retains the layout and all 81 SwiftUI modules.This changes module ownership with no intended visual or lifecycle change. Release output and existing behavior tests provide the evidence; native app download size was not measured.
Based on #12379.
Runtime verification on September 18, 2026: the integrated stack at 47a3dcb was tested on an iPhone 17 Pro simulator (iOS 27.0) and T3Code_API_36_1 emulator (Android 16.0), one at a time. Compatible development clients were built and installed from this checkout, then connected to a disposable environment with seeded Git projects. Coverage included Home/list rendering, thread navigation, file search and word wrap, terminal menus and session selection, review diff selection, archive menus, and Settings Add Environment / scanner open and close. Temporary connections were removed and the devices and test servers were stopped. Tablet layouts, QR decoding, and Live Activity start/update/stop were not exercised. Screenshots use seeded demo content; any test counts in demo messages or terminal output are fixture text, not validation results.
iOS loaded the widget bundle, and Android launched with its platform no-op implementation. Live Activity lifecycle behavior was not exercised; production module ownership remains the evidence that Android excludes those imports.
The pre-existing iOS archive keyboard issue and stale-connection loading limitation are recorded with comparison evidence in #12399.
Prepared with Codex.
Summary by CodeRabbit
New Features
Bug Fixes