I wish there was some "why" > Static assets must be hosted at locations that are unique and independent of the web application environment(s) Why? Meaning a different domain or is path enough? What are "static assets" compared to every other file served by a web server? I assume meaning will never ever change, so images are not "static assets"? What if I name them by what they are and commit to changing the name when…
> Why?
Broadly, for the same reason that separating content, structure, and style is considered a good idea. (We can debate separately about whether HTML/CSS/JS applied this principle appropriately.)
From another angle, this is just another way of saying that static assets should not depend directly on the environment, and that only `index.html` should differ, since it's the effective manifest of your application. It's okay for different environments to go to a different URL for `index.html`.
> I assume meaning will never ever change, so images are not "static assets"?
An individual image is a static asset. If you want to use a different image, you should change the URL. This is where the "immutable" part comes in.
> So, static assets are only immutable when they don't have anything environment specific. Oh, and static assets always don't have anything environment specific.
Not every static asset is a build artifact, but every build artifact should be a static asset. This is not true in general, but it is what the whole idea of an "immutable application" is trying to achieve. The environmental bindings are pushed out to the top level, where they belong.
I agree it could have been worded better; the phrase "static asset" is a bit overloaded here.