feat(examples): integrate mobile-devtools plugin for all examples#1246
Draft
feat(examples): integrate mobile-devtools plugin for all examples#1246
Conversation
Integrates the mobile-devtools devbox plugin for reproducible device management in E2E-latest. Enables New Architecture (newArchEnabled=true) to match RN 0.84's default behavior and catch interop issues in CI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds devbox.json and device configurations to E2E-compat and AnalyticsReactNativeExample. Both keep Old Architecture (compat). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a workflow that runs Detox E2E tests for both E2E-latest (RN 0.84 + New Arch) and E2E-compat (RN 0.72 + Old Arch) on Android and iOS. Triggered on push to feat/devbox-e2e-latest for testing, can be expanded to PR triggers once validated. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use --no-immutable for yarn install (lockfile drifts with Yarn version) - Pull Android SDK versions from devbox plugin env vars - Add || true to stop:emu/stop:sim cleanup steps - Update Kotlin and build tools to match RN version requirements Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Android E2E-latest (RN 0.84): - Update settings.gradle to use com.facebook.react.settings plugin - Add @react-native-community/cli packages to devDependencies - Remove deprecated native_modules.gradle apply from app/build.gradle - Add org.jetbrains.kotlin.android plugin Android E2E-compat (RN 0.72): - Disable lint for release builds (avoids needing SDK 35 in Nix) - Align build-tools version with Nix flake defaults (36.1.0) iOS E2E-latest (RN 0.84): - Simplify Podfile (remove deprecated get_default_flags) - CLI packages added via devDependencies fix autolinking iOS E2E-compat (RN 0.72): - Add root yarn install step to CI for workspace dep resolution - Metro bundling needs @babel/runtime from root node_modules All jobs: - Add "Install root dependencies" CI step for monorepo Metro resolution - Override ANDROID_BUILD_TOOLS_VERSION in devbox.json to match Nix SDK Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- metro.config.js: block uuid from root node_modules (v14 is ESM-only, breaks Metro's CommonJS resolution) - devbox.json: add jdk@17, pin ANDROID_COMPILE_SDK=33 and TARGET_SDK=33 to match available Nix SDK platforms - android/build.gradle: force all subprojects to use root buildToolsVersion and compileSdkVersion (prevents AGP 7.2.1 from requesting build-tools 30.0.3 which isn't in the Nix SDK) - android.lock: add hash_overrides for platform-tools SHA1 mismatch (Google updated the zip on their servers) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Doctor now exits 0 on successful fix, but || true provides a safety net in case of unexpected failures during dependency installation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- E2E-compat: Android API 24 (min), iOS 18.5 (min) on macos-15 - E2E-latest: Android API 36 (max), iOS 26.2 (max) on macos-26 - Set ANDROID_DEVICES/IOS_DEVICES to limit flake evaluation to one device - Add EMU_HEADLESS=1 / SIM_HEADLESS=1 for CI - Add Gradle and CocoaPods caching - Pin Xcode version via xcode-select - Set IOS_DOWNLOAD_RUNTIME=0 to avoid 7GB runtime downloads - Update iOS min device to 18.5 (pre-installed on macos-15) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move New Arch enablement (newArchEnabled=true, autolinking rewrite, Podfile cleanup, Kotlin 2.1.20, package.json deps) to a separate PR. Keep only the env-var-driven build config needed for Nix SDK and the lint fix needed for CI release builds. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Matches mobile-devtools plugin default. iOS 18.5 is pre-installed on macos-15 runners (Xcode 16.4), avoiding runtime downloads in CI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
E2E-compat only needs min devices (API 24, iOS 18.5). E2E-latest only needs max devices (API 36, iOS 26.2). Remove the unused counterparts to simplify and speed up flake eval. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Aligns with mobile-devtools plugin which now exposes ANDROID_MIN_SDK through android.lock and the devbox environment. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Nix flake reads ANDROID_COMPILE_SDK from android.lock to include that platform version in the SDK. Without it, only the device API (24) was included, causing Gradle to fail trying to download platform 33 into the read-only Nix store. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
Summary
Integrates the mobile-devtools devbox plugin into all three example apps for reproducible device management and E2E testing via CI.
Changes
devbox.jsonand device configurations to E2E-latest (RN 0.84.1)devbox.jsonand device configurations to E2E-compat (RN 0.72.9)devbox.jsonand device configurations to AnalyticsReactNativeExample (RN 0.85.0)build.gradlefiles (for Nix-provided Android SDK).github/workflows/e2e-mobile.ymlfor CI E2E testing.gitignoreCI Strategy
Each job targets one device set:
if: false) until New Arch PR lands (feat(e2e-latest): enable New Architecture (RN 0.84) #1249)Stack
🤖 Generated with Claude Code