We ship a bilingual (French/Arabic) marketplace site built on Astro — static output, hundreds of location plus service pages, and a few thousand professional profile pages, each with a photo pulled from Firebase Storage. Nothing exotic. Then one day the production build just... died. No warning during local dev, no failing test, no lint error. npm run build exited non-zero, and the stack trace pointed at astro:assets.
The cause, once I dug in: one profile's photo URL had gone stale. A Firebase Storage download token had rotated, so a request that used to return a JPEG now returned a 403. That's it. One dead URL, out of a few thousand, took the entire build down with it.
That surprised me, because I assumed Astro's image pipeline would fail soft on a bad remote image — log a warning, skip it, move on. It doesn't. Here's why, and what we did about it.
Why can't catch this
Astro's component and the underlying getImage() function both hand off to an Image Service, whose job is to transform() the image — resize it, convert format, whatever your config says. That's the part you can hook into and customize.






