Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: onejs/one
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.17.1
Choose a base ref
...
head repository: onejs/one
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.17.2
Choose a head ref
  • 4 commits
  • 70 files changed
  • 1 contributor

Commits on May 13, 2026

  1. canary1.17.1-1778694255740

    natew committed May 13, 2026
    Configuration menu
    Copy the full SHA
    e382560 View commit details
    Browse the repository at this point in the history

Commits on May 14, 2026

  1. feat(vxrn): generate the real EXUpdates manifest for project-local as…

    …sets
    
    vxrn's iOS Podfile patch used to wrap the EXUpdates pod's 'Generate
    updates resources for expo-updates' build phase by pre-writing
    `EXUpdates.bundle/app.manifest` as `{ "assets": [] }` and exporting
    SKIP_BUNDLING=1 before invoking the upstream script. The reason was
    that Expo Metro can't resolve a One entry on most pnpm monorepos
    without EXPO_NO_METRO_WORKSPACE_ROOT=1, so the bundle step was
    short-circuited entirely.
    
    At runtime, expo-asset reads ExpoUpdates.localAssets (which sources
    its hash -> file URI dictionary from app.manifest) and falls back to
    a literal `{ uri: '', hash }` placeholder when the lookup misses.
    With an empty manifest, every project-local require()'d asset hit
    that placeholder. <Image source={require('./assets/logo.png')} />
    rendered blank in App Store / TestFlight builds. Consumers had to
    wire JS-side onError fallbacks to a hosted copy of every asset to
    paper over it.
    
    Flip the patch: now the wrapped build phase exports
    EXPO_NO_METRO_WORKSPACE_ROOT=1 and runs the real
    create-updates-resources-ios.sh. The generated manifest's
    nsBundleDir/nsBundleFilename entries match the asset paths vxrn
    writes into the .app, so getLocalAssetUri returns a real file://
    URI and project-local require()'d images load from the embedded
    bundle on first launch.
    
    For end-to-end success the app's Metro config also needs to pin
    server.unstable_serverRoot to projectRoot for release-shaped native
    bundles. Without that, vxrn writes assets at workspace-rooted paths
    while the manifest points at project-rooted paths and the mismatch
    still leaves project-local images blank. node_modules assets
    resolve correctly either way. The Monorepo asset resolution section
    of the OTA Updates docs walks through both pieces.
    
    Safe to land as the new default because the expo-updates
    integration just shipped and is not yet announced. No published
    consumer is depending on the empty-placeholder behavior.
    `one.disableExpoUpdatesIosShellScriptPatch` still exists as the full
    disable hatch if anyone hits an unforeseen issue.
    
    Tests updated.
    natew committed May 14, 2026
    Configuration menu
    Copy the full SHA
    ade9e88 View commit details
    Browse the repository at this point in the history
  2. canary1.17.1-1778722149902

    natew committed May 14, 2026
    Configuration menu
    Copy the full SHA
    f9f841e View commit details
    Browse the repository at this point in the history
  3. v1.17.2

    natew committed May 14, 2026
    Configuration menu
    Copy the full SHA
    ba71c93 View commit details
    Browse the repository at this point in the history
Loading