The portfolio runs on Astro and deploys to Vercel. Every push to a branch triggers a preview deploy at a URL of the form rohan-portfolio-astro-git-
I review on the preview, not on localhost. The two reasons:
Production parity. The Vercel build uses the same Node version, the same build command, the same asset processing pipeline that production will use. localhost runs a dev server which is forgiving about a hundred small things, especially around image optimization, font loading, and CSS specificity in HMR. If something is going to render differently in production, the preview will catch it. localhost might not.
Real device testing. I review on my phone before merging anything. The preview URL is just a URL. I open it in iOS Safari on the actual phone in my hand. The desktop interaction’s reduced-motion fallback only shows up on a real touch device, because pointer:coarse never matches in DevTools’ device emulator (DevTools spoofs the user agent but not the pointer capability). Without the preview, the fallback would ship untested.
The Vercel dashboard becomes my queue. Every branch I haven’t merged sits there as a row with its preview URL and the SHA of its last push. I can scroll back through old previews to compare versions, even versions of branches that I never merged.
The cost is a few seconds of build time between push and preview. The benefit is that the version I’m reviewing is the version the world will see, on the device the world will see it on.
The principle: review against deployed artifacts, not local approximations. The dev server is for writing, not for judging.