Skip to content
AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYToyYzBlNjc0YS0wZDNlLTQ1OTAtOGY5MS04ODJlMTJmZjgyZTMAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaJM2VYRvnmgdbtHW3RwdVvIAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDoyNGMwMzcyYi0zMTI3LTQ5MGQtODdkMy00ZTU4OWQxNjliMTFscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNoIt8o42DUvE1U8yJZp2OthgAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggcTnvhDbQ1kQik6Jcm6EJX7wY1xSOPtsvKRXe7Xv+1jOkZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaIMe/QyPD890P4dSRlXQEZoAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCC0vhaiXriEiHwiTHixBlxebfXCSo8Jk+MjGSdqW1G0KmRuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBh/Zmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjJjMGU2NzRhLTBkM2UtNDU5MC04ZjkxLTg4MmUxMmZmODJlMy9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOmNhYTNmNTY3LThiNWMtNGMzYS1hN2Q3LWZiNzA2ZjFkMWFiNnJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCBxOe+ENtDWRCKTolyboQlfvBjXFI4+2y8pFd7te/7WM6JjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFggGL6ckTIuvUg76N7kiVDgpJ1YJkrBFfCGRsMvUmxN3MCiY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFgg/TnnDVpvxuYjwqKHpbXerm47o0s39Sg/I7Aw78ycmTx0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQNScRVbr1v4TZAKyEpH5K3lqoyp+LqlerWTdqbvloYHvJIGHVwSADeZFTHmwb5or4hu8b1Nvh6yzQC2vdFc2y1c=

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

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.