Performance7 min read622 words
Your AI-built site looks snappy on a MacBook. PageSpeed still says 40.
Developer laptops hide the real cost of vibe-coded pages. Here is where mobile time goes — and the practical changes that push Core Web Vitals into the green.
Rehan Goraya
Founder & Head of Product Development · Published 15 Sept 2026

Most founders we talk to swear their AI-built site feels instant. Then they open PageSpeed Insights on the mobile tab and land somewhere in the 30–50 range. Both can be true: a fast laptop on office Wi‑Fi hides almost every delay that a mid-range phone on cellular makes obvious.
Speed is not a polish pass. Field Core Web Vitals influence rankings, slow pages convert worse, and AI scaffolds tend to fail in the same places. Below is how we diagnose those sites and the eight changes that consistently move them out of the red.
Start with a baseline, not a guess
PageSpeed mixes a lab simulation with field data from real Chrome users when enough traffic exists. Optimise for the field numbers. Track Largest Contentful Paint (aim under 2.5s), Interaction to Next Paint (under 200ms), and Cumulative Layout Shift (under 0.1). Capture today’s values so every change has a scoreboard.
1. Cut JavaScript you never needed
The heaviest tax on vibe-coded marketing sites is usually the JS payload. Assistants happily add a date package, a full icon set for six glyphs, animation libraries, and chart code on pages with no charts. Parsing and hydrating that stack blocks interactivity on phones.
Run a bundle analyser, delete libraries replaceable with a few native lines, tree-shake icons, and code-split by route. Prefer server-rendered HTML so content appears before scripts finish. A sane marketing budget is well under 100 KB of compressed JavaScript.
2. Stop blocking the first paint
Synchronous scripts, CDN CSS frameworks, and remote font stylesheets each add round trips before the first pixel. On mobile that queues up fast.
Ship one compiled CSS file from your build. Defer non-critical scripts. Self-host WOFF2 fonts, preload the primary face, and use font-display: swap so text shows immediately.
3. Treat images like product, not decoration
Oversized PNGs, missing dimensions, and lazy-loading the hero are classic AI output. Convert to WebP/AVIF, size to the largest display width, use srcset, and always declare width/height or aspect-ratio. Lazy-load below the fold only — mark the LCP image with high fetch priority instead.
4. Audit third-party scripts ruthlessly
Tag managers, chat widgets, cookie banners, and pixels often outweigh your own code. Keep what pays for itself; load the rest after interaction or interactivity. Prefer server-side analytics when you can avoid a page script entirely.
5. Kill layout shift at the source
CLS is almost always a specific offender: late images, injected banners, font swaps, or embeds without reserved space. Reserve space up front, never shove content in above existing content after load, and pick fallback fonts with similar metrics.
6. Make taps feel instant
INP suffers when hydration monopolises the main thread or handlers do too much work. Less JS helps most. Break long tasks, defer heavy work, and skip full-framework hydration on pages that only need a menu and a form.
7. Deliver from the edge and cache correctly
One origin in one region feels slow everywhere else. Use a CDN/edge host, long-cache hashed assets, sensible HTML caching, and Brotli or gzip. Confirm your host actually enables them.
8. Animate without melting frames
Blur filters on large moving layers, backdrop-filter over scrolling content, and animating layout properties look polished in demos and janky on phones. Stick to transform and opacity, soften with gradients instead of blur, and honour prefers-reduced-motion.
Lock a performance budget
Write limits into the repo so the next human — or AI agent — cannot quietly break them: marketing JS under ~100 KB compressed, one CSS file under ~30 KB, two self-hosted fonts or fewer, no unpaid third-party scripts on landing pages, every image sized and declared, and monthly field-vital checks.
- LCP under 2.5s in field data
- INP under 200ms
- CLS under 0.1
- Hero never lazy-loaded
Questions people ask
- Performance
- PageSpeed
- Core Web Vitals
- Lighthouse

Written by
Rehan Goraya
Founder & Head of Product Development, Fixthevibecode
Building software products since 2019. Every enquiry is read and answered by me personally, not by a sales team.



