👏 great read! I'd like to add that a tiny base64 image can be a good blurry preview image which can be embedded in the html saving on round-trips for the previews or alternatively blurha.sh (used by e.g. Unsplash) which is similar but a little more involved.
And also consider addint a <noscript> with a decent version for when JS is disabled or fails for whatever reason, degrading loading but improving the UX 😉