Using Reference Photos Without Copying Them Directly

Bring Developers Into the Conversation Early
Most handover disasters start long before handover. They start when a designer spends three weeks crafting a layout in isolation and then presents it as a finished artefact. The developer receives something beautiful, immovable and occasionally impossible, and the conversation immediately becomes about what has to be cut.
Invite a developer into the project at the wireframe stage, or even earlier if you can. You do not need their sign-off on every decision, but you do want to know what is cheap, what is expensive and what is genuinely tricky. A five-minute chat about whether the team uses a component library, how they handle animation and what their browser support policy looks like will save you hours later.
Ask specifically about:
- Their front-end framework, and whether reusable components already exist that you should design around.
- How they handle responsive breakpoints — a fixed set, or something more fluid.
- Any accessibility standard the project must meet, and who tests for it.
- Their build and deployment process, so you know how quickly changes can be reviewed.
Prepare Files That Are Genuinely Handover-Ready
A design file is a set of instructions, not a gallery piece. Tidy it the way you would tidy a kitchen before guests arrive: nothing hidden, everything labelled, no mystery containers.
Use a consistent naming convention for layers, frames and components. Group screens by user journey rather than by date. Delete the explorations, or move them to an archive page — developers will open the wrong artboard, and you will get a build based on version four of seven.
Spacing is where most drift creeps in. Define a spacing scale and stick to it, then document it. If your padding values are 12, 13, 18 and 21 pixels, a developer will round them and the rhythm of the page will change. Give them tokens or variables they can lift directly rather than eyeballing.
Also include the boring screens: error states, empty states, loading states, success messages and anything with a long or short content variant. Most builds look wrong not because the hero section was misunderstood, but because nobody designed the page with four items instead of twelve.
Talk About Constraints Without Surrendering the Design
There is a difference between "that is not possible" and "that is possible but expensive". Learn to hear it. When a developer raises a constraint, your job is to work out what it is actually protecting — performance, maintainability, budget, a deadline — and then find a solution that respects it while keeping the intent of the design intact.
Be explicit about what matters. If the reason the layout works is the generous whitespace, say so, and be willing to trade something else for it. If the custom cursor was a bit of fun, say that too. Developers are usually trying to protect the thing you care about; they just need to know which thing it is.
Push back when it counts, and do it with evidence. "This feels wrong" is hard to act on. "On a 360-pixel screen the button falls below the fold and the primary action disappears" gives everyone something concrete to solve.
Design in Components and States
If you want a build that matches the mockup, design the system rather than the individual screens. Show each component in every state it can occupy: default, hover, focus, active, disabled, error, selected. Keyboard focus in particular is often forgotten and almost always visible to the users who need it most.
Document behaviour, not just appearance. What happens when a card title runs to three lines? Does the navigation collapse into a drawer, and at what point? Does the modal scroll internally, or does the page behind it? These are design decisions, and if you leave them blank, someone else will make them for you.
Short annotations next to the tricky bits go a long way. A sentence explaining that the sticky header should shrink after 200 pixels of scrolling is worth more than a second mockup of the same thing.
Stay Involved Once the Build Begins
Handover is a milestone, not a farewell. Agree a review rhythm — a quick look at the first built page, then checkpoints as sections come together. Reviewing early and often is far cheaper than reviewing everything in the week before launch.
When you review, test in a real browser at real sizes rather than staring at a static screenshot. Resize the window. Tab through the page. Check the longest piece of content you can find. Report issues in one place, with screenshots and a clear priority, and agree what counts as blocking and what can wait.
Budget for this in your quote. Design quality assurance is work, and if you have not priced it, you will either do it for free or skip it entirely. An hour or two a week across a build is usually enough, and it is the difference between a portfolio piece and a project you quietly stop mentioning.
Build a Relationship Worth Repeating
The best developer relationships are the ones where both sides understand the other's trade-offs. Learn a little about how the front end is structured. Share the reasoning behind your decisions rather than only the outcome. Credit their fixes, and ask what you could hand over better next time.
Keep a short retrospective note after each project: what got lost in translation, which files caused confusion, what you would document differently. Over a year, that note becomes your handover process — and the developers you work with will start recommending you, because you make their job easier rather than harder.
LEAVE A COMMENT