Self-updating screenshots
bjhess
190 points
28 comments
April 26, 2026
Related Discussions
Found 5 related stories in 93.4ms across 8,303 title embeddings via pgvector HNSW
- Screenshots of Old Desktop OSes adunk · 660 pts · May 12, 2026 · 51% similar
- Your Smart TV is taking screenshots of your screen every 15 seconds (2024) nowflux · 46 pts · April 21, 2026 · 50% similar
- Show HN: DD Photos – open-source photo album site generator (Go and SvelteKit) dougdonohoe · 60 pts · March 10, 2026 · 47% similar
- Show HN: Editing 2000 photos made me build a macOS bulk photo editor om202 · 11 pts · April 11, 2026 · 47% similar
- ChatGPT Images 2.0 pretext · 24 pts · April 21, 2026 · 46% similar
Discussion Highlights (20 comments)
immanuwell
nice, embedding the capture instructions right in the markdown as comments is a dead-simple solution that'll age way better than any fancy external tooling
efortis
same here, but linking to the screenshots used for pixel diffing, which get committed to the repo. https://github.com/ericfortis/mockaton/tree/main/pixaton-tes...
LeoDaVibeci
I've needed this so many times. BTW this should be a meme: "I think this might be the neatest thing I’ve built in X that nobody will ever notice."
taspeotis
I’ve wondered about doing screenshots from the e2e test run, even keeping docs/ all together in the same repo so when you update the documentation and need a new screenshot you add a new test
furyofantares
Very cool. For the small casual games I've been vibe coding, I always start from a place where the application has a CLI where it can run headless, rendering to offscreen texture, with a a screenshot command as well as performance instrumentation. It takes no time to include all this, and gives the agent a way to automate the ui and inspect important things. It also lets me trivially have the agent update screenshots. Not as neat as being part of the build process, but I will now add that.
est
I maintain an internal wiki, the contents were generated by each CI/CD and always reflects from latest running code.
CyberShadow
Same, I've added a .#screenshots derivation. High up-front effort but almost zero maintenance afterwards. Bonus: since you're generating screenshots programmatically anyway, you can generate a pair of each with your app's light/dark theme, and swap them in/out depending on prefers-color-scheme: dark. <picture> elements work in GitHub READMEs, too: https://github.com/CyberShadow/CyDo#readme
3eb7988a1663
shot-scraper is another project in this vein. https://github.com/simonw/shot-scraper
irishcoffee
I wrote a gui app once that ran on a safety-critical platform. I ended up stuffing a rendering of the gui (rendered offscreen) into shmem at I think 24hz, and rendered that screenshot into the safety critical application. I passed clicks (no typing for this gui) back from the statically rendered image updating on a cadence, to the offscreen GUI. Worked well. Not quite the same as this, but that’s what this reminds me of.
schneems
This is neat. I wrote https://github.com/zombocom/rundoc . It has a similar feature. The main driver is to produce tutorials so it also puts the output of commands run back in the document.
maderalabs
Nice! I actually started to build this exact thing a couple years back, and ended up abstracting it out to something more generic with https://picshift.io/ . That said, I still love the screenshot use case - the original name of this project was ScreenSync ;)
kalb_almas
I'm sometimes getting NoMethodError at /self-updating-screenshots undefined method `name' for nil:NilClass Ruby title-for: in handle, line 12 Web GET interblah.net/self-updating-screenshots followed by a very detailed traceback when I try to access the page
merelysounds
This is very useful in mobile projects. App stores require screenshots, but generating N images for NUMBER_OF_SCREEN_SIZES times NUMBER_OF_LOCALIZATIONS can be a chore. In the past I wrote my own scripts for that, today tools like Fastlane[1] help. I use Fastlane for my logic puzzle game Nonoverse[2], you can see sample screenshots in its App Store page. I also automated App Preview video recording, complete with multiple scenes. If anyone wants to read more let me know, perhaps this is a good topic for an article. [1]: https://fastlane.tools/ [2]: https://apps.apple.com/us/app/nonoverse-nonogram-puzzles/id6...
devmor
Really love this, it should be standard practice!
xp84
Bravo. This is incredibly useful, and really improves the quality of documentation, especially for many applications whose design and UI are always in flux.
Xmd5a
> Then you change the UI slightly – tweak a colour, move a button, update some copy – and suddenly every screenshot that includes that element is stale. You know they’re stale. Your users might not notice, but you know, and it gnaws at you. F Related: Sabotaging projects by overthinking, scope creep, and structural diffing – https://news.ycombinator.com/item?id=47890799
bobek
Plus we had a visual diff on the top of that as a part of the CI pipeline. It prevented a bunch of mishaps ;)
willm
I approve of this approach. The docs for Textual (TUI library for Python) build screenshots along with the docs. Technically not really screenshots, they are SVGs, but principle is the same. They never get out of date. https://textual.textualize.io/widgets/markdown/#example
erikmay
Awesome! Now you could even go a step further and add satori to the pipeline to add content to the the fresh screenshot. This way annotation could be easily added to the screenshot.
dhruv3006
This is very cool - I think I will try having this in https://voiden.md/ .