Blurred Image Placeholders
Fade images in from a soft blurred preview instead of leaving a blank hole.
What it adds
A tiny blurred preview generated at upload and shown in the image's exact final box until the full file loads.
What your agent is told to do
5
What your agent is told to do
5-
1
Generate a very small preview once, during the upload pipeline that already produces the app's other image renditions, and store it alongside the image record.
-
2
Keep the preview small enough to be delivered with the page markup itself. If loading the placeholder needs its own request, it arrives no sooner than the image and buys nothing.
-
3
Reserve the image's exact final dimensions from its stored width and height, so the placeholder, the loaded image, and the failure state all occupy the same box.
-
4
Apply this to the image surfaces users actually wait on — feeds, galleries, article bodies, product grids — and reuse whatever Attachment Gallery or lightbox already exists rather than wrapping images in a second layer.
-
5
Do not generate previews on request. Producing a blurred thumbnail per page view puts image processing on the critical path of every render for no benefit.
Edge cases it handles
8
Edge cases it handles
8- The preview must be produced once at upload and stored, never derived per request, or it becomes a per-view cost on the busiest pages.
- Record the intrinsic width and height with the image and reserve that exact aspect ratio, so nothing on the page moves when the full file lands.
- An image already in the browser cache appears instantly, and fading it in from a blur makes a fast load look slow. Detect the completed load and skip the transition.
- Images that predate this feature, or whose processing failed, have no preview. Fall back to a flat neutral colour in the reserved box rather than leaving an empty gap.
- Cut the fade entirely when reduced motion is requested and show the image as soon as it is ready.
- A failed image load must resolve to a visible fallback with its alt text, not sit blurred forever as if it were still loading.
- The blurred preview is decorative. Alt text must describe the real image and must not be replaced or duplicated by the placeholder.
- Very small previews of sensitive images still convey their content. Serve them under the same access rules as the full image, not from an open path.
Definition of done
9
Definition of done
9- Every image with a stored preview shows it before the full file arrives.
- Previews are generated once during upload processing and never per request.
- Image boxes are reserved at their true aspect ratio and the page does not shift on load.
- Cached images render immediately with no fade.
- Images without a preview fall back to a flat colour placeholder.
- Reduced-motion preferences remove the transition.
- A failed load shows a visible fallback with alt text rather than a permanent blur.
- The feature matches the existing design system.
- No existing functionality is broken.
Related features
Picture-in-Picture Mode
Picture-in-Picture Mode
Let viewers pop a video into a floating window and keep using the rest of the app.
What it does
A control on the video player that hands the video to the browser's floating always-on-top window.
How it works
- 1 Add the control to the app's existing video player rather than building a separate popped-out player. Two players competing over the same element is the main way this feature goes wrong.
- 2 Keep the app in sync with the floating window in both directions. Pausing, seeking, or changing volume from the floating window must update the in-page player, and closing the floating window must return playback to the page at the same position.
- 3 Decide explicitly what happens when the user navigates away from the page that owns the video. Either keep the floating window alive and reconnect when they return, or end it cleanly, but do not leave a floating window playing a video the app has forgotten about.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/picture-in-picture-mode
Audio Waveform Scrubber
Audio Waveform Scrubber
Show the shape of a track so listeners can see the quiet and loud parts and click to them.
What it does
A waveform rendered from precomputed amplitude data, doubling as the seek control on the audio player.
How it works
- 1 Compute the amplitude data on the server when the file is first stored, and serve it as a small dataset the page can draw. Do not decode the audio in the browser to build the waveform.
- 2 Replace the plain scrub bar in the app's existing Audio Player with this surface rather than adding a second seek control beside it.
- 3 Draw played and unplayed regions distinctly, and keep the playhead position exact under click, drag, and keyboard seeking on the same surface.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/audio-waveform-scrubber
Hover Video Preview
Hover Video Preview
Hovering a video card plays a short silent clip so people see what it is before clicking.
What it does
A silent, short-loop preview that plays inside a video card on deliberate hover and returns to the poster on exit.
How it works
- 1 Generate a short, low-resolution, silent preview clip during video processing and store it alongside the poster frame. Do not play the full source file behind the card.
- 2 Require a deliberate hover before doing anything. Wait several hundred milliseconds after the pointer settles, then load, so a cursor crossing a grid does not fire a dozen requests.
- 3 Give touch devices an explicit preview control on the card, since hover does not exist there. A long-press or a small preview button is fine; silently doing nothing on mobile is not.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/hover-video-preview
How it works
-
1
Copy the link
Grab the Markdown instruction URL for this feature.
-
2
Give it to your AI
Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.
-
3
It inspects, then implements
Your agent reads your existing app first, then adds the feature to fit it.
Works with your stack
These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.
Need it tighter than that? Customize the feature and tell it exactly what you're running.