← Blog Shopify July 15, 2026 · Pial Updated September 11, 2026

The Shopify dev environment checklist: Node, a database, a public address

Three things have to be right before a Shopify app installs locally. Miss one and you get a confusing failure that looks like your code's fault and is not.

ReDock's Runtimes tab: two Node versions and two PHP versions installed side by side, each showing how many sites run on it.

Before a Shopify app will run and install locally, three things have to be in place: the Node version the app expects, somewhere to keep its data, and a public HTTPS address for OAuth and webhooks.

Miss one and you get a confusing failure. A version mismatch, a database error, or a callback that never resolves, each of which looks like your code’s fault and is not.

This is the checklist. ReDock handles the three, and it is an environment for building apps rather than a tool for managing a store.

1. The right Node version

Shopify app templates pin a version, and running on another one produces errors that mislead you for an hour.

The Node.js section of ReDock’s Runtimes tab: 22.11.0 running one site and 22.23.1 running six, side by side, with an Install another Node.js version option beneath.

Pin the version on the site, from its Setup tab, and it stays pinned. What matters here is the second line under each version: versions sit side by side, so an older app and a new one coexist. And none of them are installed onto your system. Every runtime lives in ReDock’s own folder, per version, per site, so your PATH is irrelevant and uninstalling leaves the machine as it was.

Check what the app actually wants before you pin. Shopify scaffolds often carry more than one package with its own requirement, and the front end and the back end can differ.

2. Somewhere for the app’s data

A Shopify app keeps sessions somewhere. If there is nowhere, OAuth completes and then immediately falls over, because the session has nothing to live in.

ReDock’s data browser: two MySQL databases, PostgreSQL listed with Connection refused, and Redis listed as keys and values.

MySQL, MariaDB, PostgreSQL and Redis all run as supervised services and browse in the same window, so pick whichever your app is written against and point its configuration at it.

Note the third row. PostgreSQL is listed and says Connection refused, because it is not running. That is the honest-state rule doing its job: the window tells you a thing is not answering rather than showing an empty database and letting you conclude the tables are missing. When an app’s session store is broken at four in the afternoon, that distinction is the whole debugging session.

The databases docs cover browsing and querying.

3. A public HTTPS address

This is the one localhost cannot provide. Shopify’s servers redirect OAuth to your callback and post webhooks to a URL, and neither can reach a port on your own machine.

The Sharing tab for one site: the local address, an arrow to a name under redock.xyz, and a Share this site button.

Turn sharing on and the app has a real HTTPS address. Register it in the Partner dashboard as the app URL and as the webhook endpoint. Use a named link rather than a quick one, because you are registering it: a named link keeps its name, and a quick one expires in a day.

Shopify app development on localhost covers all three together and testing webhooks locally drills into the webhook half.

Knowing what good looks like

The point of a checklist is not to do each step by hand every time. It is to know what a working environment means, so you can tell when something is off. When the install fails, you check in order: is it on the right Node, is the database answering, did the callback arrive. The logs answer the third one directly.

One honest note. This is an environment for developing Shopify apps. It runs, exposes and configures your app locally. It is not a store-management tool, and there is no Shopify module or theme tooling in it. Shopify MCP: what an agent can and cannot do draws that line, and the Shopify page states it plainly.

FAQ

What Node version does my Shopify app need?

Whatever the app pins. Check every package in the project, because a scaffold’s front end and back end can want different ones. Pin it on the site and it stays pinned.

Why does my app need a database locally?

For its session store. Sessions have to persist somewhere, and without a database OAuth completes and then falls over. MySQL, PostgreSQL and Redis all run as services here.

Can I skip the public address if I am just testing?

No. OAuth callbacks and webhooks come from Shopify’s servers, which cannot reach your machine directly. You need a real HTTPS address, and sharing the site gives you one.

Does it work on Windows?

Yes. Sites, the agent, sharing and the MCP server are the same on macOS and Windows.

Want the checklist handled rather than remembered? Download ReDock for macOS or Windows.