Skip to content
M MYKHALCHENKO.consulting
Astro Performance SEO WordPress Migration Web Development

Website Rebuild & Web Performance

Rebuilt a lawyer's slow WordPress site as a static Astro build. PageSpeed 100/100 on mobile and desktop, nine SEO landing pages, rankings preserved.

2026
Criminal-Defence Lawyer, Kyiv
Web Developer & Performance Engineer

The Situation

A criminal-defence lawyer in Kyiv had a website that was working against him. It ran on an ageing WordPress install weighed down by a heavy theme, a stack of plugins, render-blocking scripts, and unoptimised images. Pages felt slow to open, and on a phone over mobile data the wait was long enough that a worried person looking for urgent legal help could give up and call the next lawyer in the search results instead.

For this kind of work, speed is not a vanity metric. People land on a criminal-defence site at the worst moment of their life — after a detention, a search, a charge — often on a phone, often in a hurry. A site that stalls loses them. On top of the speed problem, the old setup carried years of accumulated WordPress bloat and offered no clean foundation to build proper SEO landing pages on.

What I Did

Full rebuild on a static stack. I rebuilt the site from the ground up as a static Astro site — no WordPress, no database, no plugin stack. The whole thing is pre-rendered to plain HTML and served as static files, so there is no server-side rendering on each request and nothing to slow the first paint.

Stripped every avoidable request. The new site makes zero external requests: fonts are self-hosted and subset to only the character ranges actually used, there are no third-party scripts or CDNs, the CSS is inlined into the HTML so nothing blocks rendering, and the only JavaScript is a tiny inline script for the menu and scroll behaviour. Images are served as modern WebP at responsive sizes, with the hero image prioritised for the largest paint and everything else lazy-loaded.

The result — a perfect performance score. Google PageSpeed Insights reports a Performance score of 100/100 on both desktop and mobile, with first paint and largest paint landing in well under a second and effectively zero layout shift and blocking time.

Google PageSpeed Insights desktop report — Performance 100, Best Practices 100, SEO 100
PageSpeed Insights — Desktop: Performance 100, FCP 0.2 s, LCP 0.4 s, CLS 0.019.
Google PageSpeed Insights mobile report — Performance 100, Best Practices 100, SEO 100
PageSpeed Insights — Mobile: Performance 100, FCP 0.8 s, LCP 1.7 s, CLS 0.001.

SEO landing pages, not just a brochure. The old site was a thin brochure. The rebuild added nine dedicated landing pages, one per area of defence, each written keyword-first with a clear structure, comparison tables, an FAQ section, and structured data (JSON-LD for the practice, the lawyer, the service, and the FAQ) so the pages are eligible for rich results in search.

A migration that protected the rankings. This was a live site with history in Google, so the move had to preserve every ranking it already held. I mapped the old URLs to the new structure and put 58 permanent (301) redirects in place, plus host-level redirects to a single canonical domain, a generated sitemap, and a clean robots setup. Old links keep working, search engines follow the redirects, and the accumulated authority carries over instead of being thrown away.

Results

  • PageSpeed Performance: 100/100 on both desktop and mobile — first paint and largest paint under a second, near-zero layout shift and blocking time.
  • Zero external requests — self-hosted subset fonts, inlined CSS, a tiny inline script, no third-party calls.
  • Nine keyword-first SEO landing pages with comparison tables, FAQs, and JSON-LD structured data.
  • Full migration with 58 × 301 redirects to a single canonical domain — existing rankings preserved, no broken links.
  • No WordPress, no database, no plugins to patch — the site is static files on a CDN, with nothing to hack and nothing to keep updated.

What Made the Difference

The decisive move was dropping WordPress entirely rather than trying to optimise it. You can squeeze a WordPress site faster with caching plugins and image tooling, but you are still paying for a database query, a theme, and a plugin stack on every visit, and the ceiling is low. Pre-rendering everything to static HTML removes the whole category of problems at once: there is simply nothing left to be slow.

The second was treating the migration as seriously as the build. A faster site is worthless if the rebuild quietly drops the rankings the old one spent years earning. Mapping every old URL to its new home and redirecting it means the speed gain comes on top of the existing search presence, not instead of it — the client ends up faster and still found.