Skip to content

v1.0.0-rc.22

Pre-release
Pre-release

Choose a tag to compare

@janicduplessis janicduplessis released this 09 Sep 05:02
· 53 commits to main since this release

New

  • Recycle compatible Android emulators across worktrees. Adoption clears app
    data, retains matching APKs to skip installation, and recovers from signer or
    version conflicts. The default pool holds three emulators.
    ea0292b1
  • Wait for optional [stim:readiness] pending and ready device logs during
    launch, and report whether readiness completed, timed out, or failed.
    689ad047

Removed (breaking)

  • Remove the legacy caches.injectMetroStore machine setting. Use
    optimizations.metroSharedCache instead.
    2c585854

Fixes

  • Wait for Metro to deliver the bundle before starting launch-stability checks.
    a4832aa3
  • Align Android device-log timestamps with the host clock so launch filters
    include the current app's logs.
    dd0f2c5e
  • Resolve dynamic imports from nested modules when bare Metro uses a hoisted
    metro-runtime package.
    1fe471f5
  • Restart a stuck Android app when following the unverified-launch remedy.
    6230e4aa

Docs

  • Document build optimizations, Android CAS, emulator recycling, and optional
    readiness reporting. Refresh the website and publish activity-timed Android
    and iOS launch-error benchmarks.
    2c585854,
    1f9fc1e8,
    c2f848b4

Migration notes

  • Replace caches.injectMetroStore: false with
    optimizations.metroSharedCache: false to keep shared Metro caching disabled.
  • Set pool.androidParkedMax to 0 when a fresh emulator is required.
    Recycling preserves system apps, shared storage, accounts and device settings;
    app data is cleared at adoption. Older AVDs without recorded creation settings
    are deleted when removed.

QA

  • Full preflight: formatting, lint, build, typecheck, knip, 3,737 unit tests,
    66 end-to-end tests, Node 20.19.4 runtime checks, website build, and all five
    packed tarballs passed.
  • Native loop and cache suites passed for bare React Native and Expo on both
    iOS and Android. Both device-pool suites passed.
  • Manual QA covered readiness success, timeout and error; nested dynamic
    imports; healthy, broken and repaired logs; UI interactions; and Trailhead
    on both platforms, including native cache reuse across worktrees.
  • Android release QA verified current JS in the installed, signed and aligned
    APK after adopting an emulator with a differently signed app.
  • A newly booted Android emulator can initially return unverified. Follow
    the printed restart remedy and verify the UI. The recovery instruction was
    corrected during this QA pass. iOS may require the printed UI Reload
    fallback when Metro cannot identify its peer. Earlier client errors remain
    visible until the next launch, as documented.
  • Authenticated remote providers, physical-device signing, Android flavors,
    and iOS release swapping were omitted because those implementations did not
    change. Shared launch and lease behavior has simulator/emulator and unit
    coverage.