A premium hairstylist portfolio rebuilt around real Core Web Vitals work — not just a redesign.
Overview
A portfolio site for a Cluj-Napoca hairstylist, built to present a large photo portfolio with the polish of a fashion editorial rather than a typical local-business template.
A photo-heavy portfolio grid was loading every image at once, and a separate hero animation was blocking the page's main thread — both dragging real-world load times well past what a premium-feeling site should accept.
Challenge

The portfolio strip, drifting at the live site's own pace.
Approach
Rebuilt the image-loading strategy around real viewport geometry rather than index-based guessing, isolated the animated hero background so it no longer blocks the page, and corrected how the business itself is described in search results.

Despre Paula
Cu peste 8 ani de experiență, Paula transformă fiecare programare într-o poveste — de la tunsori de precizie la culoare lucrată artistic. Fiecare client pleacă din salon cu un look documentat foto și video, gata de distribuit.
The site’s about section, rebuilt in the browser — the client’s own type, palette and gold frame.
The site, as built

Design & Development
- Geometry-based image activation
- Above-the-fold portfolio tiles are detected from real layout measurements, not assumptions about column count — the rest defer loading until they approach the viewport, activating progressively as the visitor scrolls.
Technical Decisions
- A self-inflicted regression, found and fixed same-day
- The image-loading rework introduced its own performance cost — a batch of per-tile style writes was forcing the browser to recalculate layout far more than necessary. Found through direct measurement, then fixed by batching those writes into a single pass.
- Hero background isolated from the main bundle
- The animated hero background was rewritten to load only once it's actually needed, rather than as part of the page's initial JavaScript — removing a long task that was blocking interactivity on first load.
- Accurate business data in search results
- Corrected the site's structured data from a business entity that didn't exist into an accurate person-plus-employer relationship, matching how the business is actually run.
Results
Largest Contentful Paint
1408ms~620ms
Real-world, unthrottled measurement on the live site after the image-loading rework — roughly a 55% improvement.
Initial image requests
500
The rest activate progressively as the visitor scrolls — confirmed working, not just measured once.
- Role
- Design, Development, Performance Engineering
- Stack
- Next.js, TypeScript, Tailwind CSS
- Year
- 2026
- Industry
- Hair & Beauty
