#065

An AI Agent Moved engineeringleaders.io from Wix to Astro. My Review Still Found 9 Bugs.

· by Marian Kamenistak

An AI Agent Moved engineeringleaders.io from Wix to Astro. My Review Still Found 9 Bugs.

Our community site, engineeringleaders.io, ran on Wix for years, and for most of that time Wix was the right call: a community team has better things to do than review CSS. It became the wrong call the moment we cared about speed, search, and owning our own markup.

So I put a coding agent on it. Eight active days, 118 commits, and on 4 August 2026 the domain flipped from Wix to Astro on Cloudflare Workers. You are welcome to inspect the result; it’s the site that’s live right now, in English and Czech.

The headline numbers came after: mobile PageSpeed 78 → 96, LCP 3.8 s → 2.4 s, CLS 0, and a PageSpeed Insights re-run on 8 November 2026 returned the same 96, 2.4 s and 0. The biggest win was a boring media pass. The first audit after cutover weighed the homepage at 39.7 MB, because six decorative gradient PNGs skipped Astro’s image pipeline; one of them went from 7.66 MB to 460 KB. The hero video was the LCP element, so it now loads after the page does and a 24 KB poster takes its place.

But the part worth writing about is what the agent got wrong, because that list is what you’ll need if you try this yourself.

Measuring beats looking

The naive way to clone a site is screenshots: render both, diff, iterate. It fails slowly, because a screenshot tells you something is off without telling you which of the forty CSS properties involved is the guilty one.

Hand-drawn sketch: the word Screenshots crossed out in red, an arrow pointing down to four circled replacements: Rendered DOM, Computed styles, Inter + Lora, 152 animations
What the agent measured instead of comparing screenshots.

What worked is code-first. The agent reads the live page’s rendered DOM and computed styles per section and rebuilds from those numbers.

Side by side: the Wix site in July 2026 from archive.org, and the Astro rebuild live today — nearly indistinguishable
Left: Wix, July 2026 (archive.org). Right: the Astro rebuild, live. The migration’s job was that you can’t tell.

Fonts made the case on day one. A raw-HTML scan said the site used Helvetica Neue and Poppins, and I had already accepted the licensing risk of buying Helvetica. Then getComputedStyle across every rendered element found zero elements using either font. Wix ships 56 unused @font-face rules on every site; the fonts that painted were Inter and Lora, free to self-host, extracted from Wix’s own CDN. The markup lied and the measurement saved real money.

Animations, same story. The plan estimated “350+ motion directives” from the markup. document.getAnimations() found 152 real animation objects, and 49 of them were the identical 1200 ms opacity fade. A separate scroll-delta check across 55 elements ruled out parallax entirely. We rebuilt what runs, not what the attributes claimed.

The 9 bugs my review found anyway

Three automated verification passes ran before I looked: a side-by-side scroll-through, a typography audit across six computed properties per text role, and the animation extraction.

Marian Kamenistak speaking at an engineering leadership event.
The site this post is about serves the Engineering Leaders Community — this is one of its events. Photo: ELC.

My own pass still found 9 real gaps. Four were one-off misses; these five are the recurring patterns worth stealing as checks:

  1. A carousel flattened into a static grid, because its arrows only exist on hover and a static DOM scan reported “no controls.”
  2. Speaker photos cropped into circles where the original used landscape pills.
  3. A strikethrough price missing its line-through, same colour, wrong meaning.
  4. A heading constrained to 760 px that should have been 960 px, from reusing a sibling’s measured width.
  5. A background that was a real <img> gold gradient, not CSS, and so never got rebuilt.

Every one of those became a named check in the playbook. That’s the part I’d defend hardest: a migration method is worth exactly as much as its documented list of prior failures.

The part your agent can’t decide

An agent can rebuild a site. It cannot decide when your live domain flips, and it shouldn’t. The run kept three hard lines for all 8 days:

  1. Production canonicals in the markup from day one, so cutover needed zero edits.
  2. A noindex staging domain, so the rebuild couldn’t compete with the live site in search.
  3. A staged, reversible cutover: a 76-rule redirect map covering all 32 old Wix event slugs, and the Wix subscription kept paid as the rollback plan.

One postscript that surprised me most: weeks after cutover, an AI-visibility audit showed the domain was erroring on 54% of requests from AI crawlers (ChatGPT, Perplexity and friends) while robots.txt politely allowed all of them. The file is policy; the edge is law. We fixed the edge, re-ran the crawler matrix to all-200, and that check is now part of the method too.

A second migration, elc-conference.io, scored 100/100/100 on Lighthouse and still had ten section-level gaps when we compared it with the original in October: a missing 40-photo gallery, a missing venue map, a logo wall with four columns instead of five. The playbook now has a motion probe that lists every element moving on scroll, and a section-by-section parity check.

The whole playbook is public and MIT licensed, verification passes and cutover checklist included: github.com/marian-kamenistak/wix-to-astro. It sits with the rest of my agent-run tools on the AI coaching tools page.

If your company site is stuck on a page builder and the blocker is “we don’t have frontend capacity,” that blocker is smaller than it was a year ago.

Frequently asked

Can an AI agent migrate a Wix site to Astro?

+

Yes, the whole site, not just blog content. The method that works is code-first: the agent extracts each section's rendered DOM and computed CSS from the live page and rebuilds from those measured values. My migration of engineeringleaders.io took 8 active days and 118 commits, EN plus Czech, and it has been live on Astro since 4 August 2026. It still needed my own review pass, which found 9 visual gaps the automated checks missed.

Will I lose my Google rankings when leaving Wix?

+

The protection is mechanical: keep every slug you can, 301 the rest, and stage the cutover. My cutover shipped with a 76-rule redirect map covering all 32 old Wix event slugs plus every URL found in the backlink data, and the Wix subscription stayed paid as an instant rollback. The rebuild also lived on a noindex staging domain until the flip, so nothing competed with the live site during the build.

How much faster is Astro than Wix in practice?

+

On engineeringleaders.io, mobile PageSpeed went from 78 to 96 and LCP from 3.8 s to 2.4 s with CLS at 0 after the migration and a media-weight pass. The biggest single win was boring: one 7.66 MB PNG became 460 KB, and the hero video handed its LCP role to a 24 KB poster.

New posts, straight to your inbox.