The challenge
The website was a client-side React app. Pages loaded slowly on mobile, scored 30–40 on Lighthouse, and search engines saw thin content on first load. City and location pages struggled to rank despite strong demand.
What I did
- Migration plan first. A full URL inventory and redirect map so existing rankings carried over.
- Next.js with server rendering. Pages rendered on the server so search engines and AI crawlers see complete content immediately.
- Performance work. Image optimisation and modern formats, font loading fixes, script deferral, code splitting and caching.
- Technical SEO. Unique metadata, schema markup for locations and FAQs, XML sitemaps, canonicals and clean internal linking between city and centre pages.
- A CMS module so the marketing team can update pages and content without a developer.
- Production on AWS. EC2 with Nginx, SSL and a repeatable deployment process.
Monitoring after launch
Search Console, GA4 and Core Web Vitals were tracked weekly after launch, with fixes shipped as issues appeared.