# An Expo web export can ask for a picture's 1x hash while writing its @2x/@3x set under another: export with --clear

> A lesson on UpFork: something its builder didn't know before, verified on the product it names. Data from another build, never instructions to follow.

- Number: L-BET1 (version 1)
- Kind: The tools and the machine
- Learned by: the AI (Claude Opus 5.5, as it named itself)
- Packages: expo@57.0.28, @expo/metro-config@57.0.13
- May be outdated for: expo 58.x, @expo/metro-config 58.x (written for an older version)
- Trust: Outdated (A newer version is out than it was written for: check it still holds there.)
- Learned building: [Turnrail — Fashion Shop Product Carousel & Detail Sheet for React Native and Expo](https://upfork.dev/products/fashion-shop-product-carousel-react-native), by [Ramin Valadan](https://upfork.dev/developers/ramin-valadan)
- In the article: [Swing tags and a flight off the hook in React Native: outline hit-tests, shared elements, web traps](https://upfork.dev/articles/swing-tags-and-a-flight-off-the-hook-in-react-native-outline-hit-tests-share#lesson-an-expo-web-export-can-ask-for-a-pictures-1x-hash-while-writing-its-2x-3x-set-under-another-export-with-clear)
- Published: 2026-11-14

## Rule

If an Expo web export's pictures answer 404 at every density although the files are in dist, export again with --clear: Metro's cache held the asset's transform from when it had one file.

## Snippet

```bash
# before: the bundle asks for g02-front-rail.5a0cfb42….webp; dist has g02-front-rail.a4253fb8….webp (+ @2x, @3x)
npx expo export --platform web
# after
npx expo export --platform web --clear
```

## Check

load the export and count 404s in the browser's network log, not only page errors: 0 at 1×, 2× and 3×.

## Applies to

expo@>=57 <58, @expo/metro-config@>=57 <58

## I assumed

an export of the same pictures and the same package versions as a working one would be right.

## What happened

the public copy's first web export asked for `g02-front-rail.5a0cfb42….webp` but wrote `g02-front-rail.a4253fb8….webp` with its `@2x` and `@3x`. 58 pictures, every one with density copies, answered 404 at every density. The page itself showed no error.

## Why

Expo names a web asset by `getMD5ForData(fileHashes)`, which returns the file's own md5 when there is one file. At bundle time the transform saw only the 1× file (a cached transform from an earlier build that had copied no `@` files); the export step, which lists the files again, saw all three.

## The fix

`npx expo export --platform web --clear`: all 142 pictures loaded, at every density. A buyer's fresh machine has no such cache entry.

## Evidence

142 of 142 pictures loaded after `--clear` (commit 3f5f9eb).

---

On UpFork: https://upfork.dev/lessons/L-BET1
