Designing a feature whose entire job is to be screenshotted
Notes on the GameCard export, and treating the share image as the main feature.
Most features get judged by whether they work. The GameCard export got judged by something stricter: whether someone would willingly post it somewhere other people could see. That's a much higher bar than "functions correctly," and it changed how I approached the whole feature.
Why a dedicated export format at all
The result already rendered fine on the page itself, so a separate export image wasn't strictly necessary from a functionality standpoint. But the on-page layout was built for a browser window, not for a phone screen in a group chat, and the two have completely different constraints. A 9:16 format matches how the image actually gets consumed — full-screen on a phone, in a story or a chat thread — rather than forcing people to crop or screenshot an awkward rectangle themselves.
Every design decision ran through one filter
For this specific feature, I stopped asking "does this look good" and started asking "would I personally post this without feeling like I need to explain it first." That ruled out a lot of things that tested fine in isolation. An earlier draft included the full score breakdown across all four axes crammed onto the card, which was more informative but visually busy, and visually busy doesn't survive being viewed at thumbnail size in someone's feed. The shipped version keeps the total score large and the verdict line prominent, with the breakdown available on the page itself for anyone who clicks through — not jammed into the shareable image.
Performance mattered more here than almost anywhere else
Image generation is one of the few parts of the product where a slow response directly kills the feature's purpose. If generating the export takes long enough that someone gets bored and closes the tab before it's ready, the share never happens and the entire point of building a dedicated export format is lost. That pushed image generation to be one of the most heavily optimized paths in the whole app, disproportionate to how "important" it might look on a feature list next to things like scoring or the leaderboard.
What this taught me about building shareable things
If growth depends on people voluntarily posting something, that something has to earn its place on their feed on its own, with zero context required. It can't rely on a caption explaining what it is. I didn't fully internalize that until I'd built and discarded a version that looked fine to me but needed an explanation to land with anyone else — and a feature that needs an explanation isn't actually shareable yet.