feat(mobile): preview native iPhone Duo workspace - #12557
Draft
juliusmarminge wants to merge 9 commits into
Draft
juliusmarminge wants to merge 9 commits into
juliusmarminge wants to merge 9 commits into
Conversation
Contributor
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. |
Bump every Expo package to the SDK 58 line (expo@58.0.0-preview.2, react-native@0.88.0-rc.0, gesture-handler 3.x, reanimated 4.6, screens 4.27) and absorb the breaking changes: - iOS scene lifecycle: the SDK 58 prebuild template now generates SceneDelegate.swift and the scene manifest itself, so the custom withIosSceneLifecycle plugin (and its regex surgery on AppDelegate) is deleted. Expo forwards URL, user-activity, and quick-action events to the app delegate under the scene lifecycle. - React Native strict TypeScript API: host-component refs use the new ViewInstance/TextInstance/TextInputInstance types, the codegen specs import codegenNativeComponent and CodegenTypes from the react-native root, and the removed StatusBar `translucent` prop is dropped. expo-blur and expo-glass-effect still type refs as Ref<View>, so both get a types-only pnpm patch until upstream adopts ViewInstance. - expo-file-system: File.write, readBytes and writeBytes are async; call sites await them so the atomic rename and upload ordering hold. - expo-notifications now shows foreground notifications by default. A notification handler suppresses the banner only when it targets the thread already on screen and lets everything else through. - gesture-handler 3.x: ReanimatedSwipeable's simultaneousWithExternalGesture became simultaneousWith and dragOffsetFromRightEdge became dragOffsetFromRight, with Gesture.Native() swapped for useNativeGesture. - Patches re-targeted to the new versions (metro-config source-map sanitizer, gesture-handler swipeable extensions, screens header bar items, expo-audio recorder error state, expo-sharing Android originalName, expo-widgets Live Activity environment). The reanimated layout-animation backport is upstream in 4.6.0 and its patch is removed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…arkdown module React Native 0.88 ships React-Core prebuilt, so quoted header imports no longer resolve. The unused RCTBridge import is dropped and the Fabric plugin header is imported through <React/...> like every other Fabric component. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… patch React Native 0.88 ships React-Core prebuilt, so @react-native-menu/menu's quoted RCTBridge.h import no longer resolves. Fold the fix into the existing menu patch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two patches for third-party packages that AGP 9 exposes: - expo-widgets resolves its layout registry script through a pnpm symlink, so the "am I the main module" path check never matched and the registry resource was silently skipped; comparing real paths lets it run. - @clerk/expo imports LocalSavedStateRegistryOwner and the Compose LocalLifecycleOwner but only got those artifacts transitively through navigation3; AGP 9 no longer leaks runtime constraints onto the compile classpath, so the module declares them itself. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
expo 58 depends on the noxcturnal Rust transformer and its platform binaries even when the experiment is off. The packages declare MIT but ship no license file, which fails strict third-party license generation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge
force-pushed
the
build-iphone-duo-app
branch
from
September 19, 2026 07:22
7db77f2 to
7506cb8
Compare
juliusmarminge
force-pushed
the
mobile/sdk58-upgrade
branch
2 times, most recently
from
September 19, 2026 21:05
ed7e8ef to
289662a
Compare
juliusmarminge
force-pushed
the
mobile/sdk58-upgrade
branch
from
September 23, 2026 06:00
289662a to
bf99371
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
T3 Code's existing Expo app now runs with a native iPhone Duo workspace: a thread sidebar beside the conversation on the inner display, compact navigation on the outer display, and system toolbar placement that follows the available space.
This is a draft progress snapshot, not ready to ship. It is based on the Expo SDK 58 / React Native 0.88 upgrade in #12045. The current base uses Expo
58.0.0-preview.3and React Native0.88.0-rc.0. Expect the Expo integration, dependency versions, and temporary native patches to change before release.Current behavior
Where the native changes live
react-native-screens@4.27.0patch@react-navigation/native-stack@7.17.6patcht3-native-controlsRNS_GAMMA_ENABLED, supports rotation, and connects native columns / geometry to the existing app.Duo-specific APIs have compiler / availability guards. This remains the same Expo application, with the existing layout path retained where native workspace columns are unavailable. This branch does not yet migrate to react-native-screens v5.
The layout follows Apple's iPhone Duo design guide: adapt through native containers and available geometry while maintaining the same information hierarchy and task state.
Verification so far
This publishes the current work without the full audit / readiness loop. Prior React Doctor runs reported existing findings; they have not been resolved as part of this snapshot.
Remaining work
Progress captures
Unfolded
Partially folded
Folded
Multi-tasking
Model: GPT-6. Harness: Codex.