Skip to main content
In development. 86d is being built in the open. Every capability is Experimental until it earns evidence, so check maturity levels before you rely on anything here.
This is a rehearsal, not a cutover. You map each Shopify concept onto its 86d equivalent, import a copy of your data into a throwaway Store Runtime, and find out what breaks while your real Store keeps selling. You need a Store running locally first: the Quickstart takes about ten minutes.
Do not point a domain at the result. Checkout, Payments, tax, Shipping, Orders, and several import targets have no evidence yet. Shopify stays authoritative for as long as this takes.

What maps to what

Pick your Modules

Enable the ones matching what you want to test. A broad rehearsal looks like this:
Run 86d generate afterward.

Export from Shopify

Shopify Admin exports CSV for the three big ones:
  • Products: Admin → Products → Export → All products → CSV
  • Customers: Admin → Customers → Export → CSV
  • Orders: Admin → Orders → Export → CSV
  • Discounts and gift cards: only through the Shopify Admin GraphQL API
Media, pages, blog posts, and metafields also need the GraphQL API. Save the responses as JSON.

Transform and import

@86d-store/import-export takes CSV and JSON for the entities it covers. Write a small script in whatever language you like to map the fields. The ones that bite:
  • Shopify Variant Price is dollars. 86d price is cents. Multiply by 100, and do it with integers.
  • Shopify Compare At Price maps to compareAtPrice, also cents.
  • Shopify Tags is one comma-separated string. 86d tags is an array.
  • Shopify product Handle maps to slug.
  • Shopify Status values (active, draft, archived) map straight across.
Then call POST /admin/products/import, POST /admin/collections/create, and the rest, or wrap them in your own script.
Import into a database you are willing to delete. You will run this more than once.

Keep your URLs working

Shopify uses /products/<handle>, /collections/<handle>, and /pages/<handle>. 86d uses the same shapes, so most links survive untouched. For the ones that changed:
Add them in Store Admin → Catalog → Redirects, or through POST /admin/redirects.

Rebuild the theme

Liquid does not convert to MDX. There is no tool for this and there is not going to be one. Pick the closest Module component for each section of your old theme, drop it into the matching MDX page, and carry over your custom HTML and CSS: Anything without an equivalent becomes a block of React and Tailwind in the MDX file. That is a normal outcome, not a failure of the mapping.

Payments, shipping, and tax

Pick one sandbox provider and follow Set up a payment provider. Do not copy live payment credentials into a rehearsal. For Shipping, compare your imported zones and rates against what the Shipping Module produces for the same basket. For tax, enter test registrations and then deliberately create a case the Store cannot resolve. Confirm it returns a review status rather than quietly charging zero. Silent zero tax is the failure mode that costs money nine months later.

Prove the import

  1. Write down the exact timestamp of your Shopify export.
  2. Import a second delta into a fresh test database.
  3. Compare counts, money totals, Inventory, Customer attribution, and anything that did not come across at all.
  4. Force failures in sandbox Checkout, refunds, tax, Shipping, and notifications.
  5. Export your 86d test data and restore it somewhere else, so you know you can leave.
Do not touch DNS. Do not accept a real Order. A production cutover needs evidence for the exact capabilities you plan to use, and that evidence does not exist yet.

What does not come across

  • Shopify Functions: no translator exists. Rewrite them as Modules.
  • Shop Pay: no documented equivalent.
  • Shopify Markets rounding rules: enable @86d-store/multi-currency and set rounding per currency yourself.
  • Theme app extensions: rewrite them as Module Storefront components and place them in MDX.

Stuck

Open an issue at github.com/86d-store/86d/issues. Questions that come up more than once get folded back into this page.