Field notes · Website design
Wix headless with Astro: what rebuilding four sites taught me
Four websites moved off the Wix Editor and onto Wix-managed headless Astro. What I measured, what broke that no documentation warned me about, and how to tell whether your site should make the same move.
Over the past two months I moved four websites off the Wix Editor: two D'Argenta sites (dargentaawards.com and dargentaenterprise.com), Donna Roffe's store (donnaroffe.com) and this site. Wix still runs everything behind the pages — bookings, forms, media, the store catalogue, the domain. The pages themselves are now plain, server-rendered Astro.
Why leave the Editor: the numbers
A Wix Editor page ships the whole Wix runtime with it. Before the rebuild, every page of this site was 0.8–1.0 MB of HTML alone and loaded 195–255 files. The D'Argenta sites were in the same range: around 1 MB of HTML per page on Awards, and 541–972 KB for the Enterprise page I sampled.
After the rebuild, the homepages measure:
simonabrahamworks.com
- HTML (compressed)
- 14.5 KB
- Requests (mobile)
- 23
- Lighthouse mobile
- 91
- Lighthouse desktop
- 98
dargentaawards.com
- HTML (compressed)
- 20 KB
- Requests (mobile)
- 29
- Lighthouse mobile
- 83
- Lighthouse desktop
- 95
dargentaenterprise.com
- HTML (compressed)
- 22 KB
- Requests (mobile)
- 28
- Lighthouse mobile
- 80
- Lighthouse desktop
- 96
donnaroffe.com
- HTML (compressed)
- 13.5 KB
- Requests (mobile)
- 35
- Lighthouse mobile
- 82
- Lighthouse desktop
- 98
| Site | HTML (compressed) | Requests (mobile) | Lighthouse mobile | Lighthouse desktop |
|---|---|---|---|---|
| simonabrahamworks.com | 14.5 KB | 23 | 91 | 98 |
| dargentaawards.com | 20 KB | 29 | 83 | 95 |
| dargentaenterprise.com | 22 KB | 28 | 80 | 96 |
| donnaroffe.com | 13.5 KB | 35 | 82 | 98 |
Lighthouse 12, homepage, median of three runs per site and device, 7 October 2026. Lab numbers move a few points between runs; the gap below does not.
For comparison, a Wix Editor store I work with, measured the same day with the same tool: 2.9 MB of HTML (411 KB compressed), 396 requests on mobile, Lighthouse 32 on mobile and 42 on desktop.
Accessibility, best practices and SEO scored 96–100 on all four rebuilt sites.
Speed is the visible part. The bigger change is control: every title, description, heading, image size and line of structured data is now something I write, not something the Editor decides.
The setup
Wix-managed headless means Wix hosts the Astro site, handles sign-in and environment variables, and gives the code direct access to the same business apps the Editor used.
What worked
- Link your own project
- Start from your own Astro project and run npm create @wix/new@latest -- headless link. It creates a new Wix business and site for the project.
- Stay on Astro 5
- Wix's integration does not support Astro 6 yet.
- Render on the server
- Use the Wix hosting adapter with server output, so pages render on request and always show live data.
- Keep Wix for the business
- Bookings, the contact inbox, media and the store catalogue stay in the Wix dashboard. The site reads and writes them through the Wix APIs, so a booking made on the new site lands in the Wix Booking Calendar like any other.
- Ship with one command
- Each project has a script that runs the checks, commits to GitHub, builds and releases. Nothing goes live that is not in version control.
One thing changed during the project: version 1.1.254 of the Wix CLI added a finalize-migration command, the last step of moving an existing Editor site to a headless front end on the same Wix site instead of a new one. Until then, every headless project started as a new Wix site. Wix has not documented it yet; I will write it up once I have run it end to end.
What breaks in production
None of these show up on your laptop. All of them showed up on a live domain.
Five traps
- Wix answers some files first
- robots.txt, llms.txt, sitemap.xml and favicon.ico are served by Wix's edge, not by your code, so an Astro route for them does nothing. Set robots.txt and llms.txt in Wix's SEO settings or through their APIs, and link your icons from the page head: Wix's /favicon.ico stays blank whatever you upload.
- The site thinks it is on http
- Wix ends the HTTPS connection before the request reaches Astro, so Astro.url reports http://. Every canonical, hreflang link and share image built from it was wrong. Hard-code the production origin in one place and build every absolute URL from it.
- Wix adds its own SEO tags
- Wix injects a second title, description, canonical and its own homepage structured data on top of yours. Two canonicals are worse than none, so a small middleware step removes Wix's copies.
- Caching headers are ignored
- I set s-maxage so the edge would cache HTML. It never did. Server response time was 0.3–0.6 s without it, so I removed the code rather than keep something that only looked like it worked.
- Your sitemap is not Wix's
- Wix keeps /sitemap.xml for itself. Publish your own index at another path, such as /sitemap-index.xml, point robots.txt at it, and submit that one to Google and Bing.
SEO, done on purpose
Three of the four Editor sites had the same flaw: the body text was translated into every language, but the title and meta description were not. The Awards homepage carried one title across 23 languages; the Enterprise homepage, one title across 99. Donna Roffe's store had a different problem: 18 pages shared 6 titles, and Google had indexed exactly one page of it.
What every rebuild now does
- One H1, unique titles
- One H1 per page, and a unique title and description in every language.
- One connected graph
- Structured data as one linked graph — Person or Organization, WebSite, WebPage, breadcrumbs, and Product or Service where they apply — instead of disconnected snippets.
- Languages in the sitemap
- hreflang lives in the XML sitemaps only, not repeated in every page's head, so there is one source of truth to keep consistent.
- 301 for every old URL
- Editor slugs like /contact-8 and /copy-of-website-design become clean paths, and nothing that already ranked is lost.
- IndexNow on every release
- After each deploy the site sends its full URL list to Bing and the other IndexNow engines, so changes are picked up in minutes instead of weeks.
- An llms.txt
- A plain-text summary of who the site belongs to and what each page answers, for AI assistants that read it.
More than one language, including right-to-left
This site runs in English, Spanish (Mexico) and Hebrew. Awards runs in 23 languages and Enterprise in 98.
What it takes
- A URL per language
- Every language gets its own URL (/es/…, /he/…), its own title and description, and its own entry in the sitemap.
- Real right-to-left
- Hebrew pages set dir="rtl" on the document, and the layout follows the reading direction instead of being patched afterwards.
- Watch mixed direction
- A Latin abbreviation in parentheses inside a Hebrew sentence can reorder itself into nonsense. Test every Hebrew string in a browser, not in the editor.
- Mexico, not Spain
- The old site declared es-ES; the audience is Mexican, so it is es-MX.
Is it worth it for your site?
- Worth it when
- The site earns money or leads from search and the Editor's speed or SEO limits are costing you; you need more than one language done properly; or you want the site in version control, with every change reviewed and reversible.
- Not worth it when
- You change the layout yourself every week and do not want a developer in the loop; the site depends on Editor-only apps or Wix Members, which do not move between Wix sites; or a small brochure site already loads fast and ranks for your name.
Weighing this for your own Wix site?
Book an hour and we can look at it together.