02 · Setup profesional
Partner account, dev store, CLI 3.x, flujo de trabajo.
El entorno de desarrollo de Shopify tiene tres piezas que no son negociables: una Partner account (tu identidad como desarrollador en el ecosistema), un development store (tu sandbox de pruebas sin costo), y Shopify CLI 3.x (el binario que unifica scaffold, dev server y deploy). Sin los tres, no puedes desarrollar nada.
-
mkdir -p ~/proyectos/shopify/brew-atlas && cd ~/proyectos/shopify/brew-atlas— Crear el directorio base del tutorial -
npm install -g @shopify/cli@latest— Instalar Shopify CLI 3.x -
shopify version— Verificar que instaló bien -
shopify auth login— Autenticarse con la Partner account -
shopify theme init brew-atlas-theme --clone-url https://github.com/Shopify/horizon— Scaffold del theme (una sola vez) -
npm init @shopify/app@latest -- --template remix— Scaffold de la app (una sola vez) -
shopify theme dev --store brew-atlas-dev.myshopify.com— Dev server del theme con hot reload -
shopify app dev— Dev server de la app con tunnel de Cloudflare automático
Buscá los bloques con badge ✓ Ejecutar en el contenido. Los bloques con 📖 Referencia son ilustrativos — no los ejecutes.
Qué SO usar
El ecosistema (Node, Rust, toolchain de Wasm, Shopify CLI) asume Unix. Según el SO, la fricción cambia.
| SO | Recomendación | Comentario |
|---|---|---|
| Linux (Ubuntu/Debian/Fedora/Arch) | ⭐ Ideal | Experiencia nativa. npm -g, rustup, compilación de Wasm y hot reload: todo sin drama. |
| macOS (Intel / Apple Silicon) | ✅ Excelente | 95% de la experiencia Linux con Homebrew. ARM64 (M1/M2/M3) tiene builds nativos para Shopify CLI y todas las deps. |
| Windows + WSL2 (Ubuntu dentro de WSL) | ✅ Viable con gotchas | Trabaja en ~/proyectos/ (filesystem Linux nativo), no en /mnt/c/. El cross-filesystem mata el hot reload. |
| Windows nativo (PowerShell / cmd) | ❌ Desaconsejado | Paths con \, permisos distintos, fricciones reales con Rust/Wasm para Functions. Instala WSL2 en lugar de pelear con esto. |
Gotchas específicos de WSL2 que vale la pena saber antes de empezar:
- No instales Node con
apt— usanvm. Shopify CLI requiere Node 22+ en 2026 y la versión deaptsuele estar atrás. - Trabaja siempre en
~/proyectos/(ext4 nativo), nunca en/mnt/c/. El cross-filesystem mata el hot reload. - El puerto 9292 de
shopify theme devse reenvía a Windows automáticamente — lo abres enlocalhost:9292desde el browser de Windows. - El tunnel de Cloudflare para
shopify app devfunciona igual que en Linux nativo. - VS Code desde Windows con la extensión “WSL” abre el proyecto en modo remoto — es la forma correcta de editar.
Qué es y por qué existe
El ecosistema Shopify distingue entre dos tipos de cuentas desde el principio, y la confusión entre ellas genera problemas reales. Una cuenta de comerciante es para alguien que tiene una tienda y vende productos. Una Partner account es para desarrolladores, agencias y cualquiera que construya para otros comerciantes o para el App Store. Tú necesitas una Partner account.
La diferencia no es solo administrativa. Con una Partner account puedes crear development stores: tiendas de prueba gratuitas que no expiran, donde puedes instalar tu theme o app, generar órdenes de prueba con tarjetas de crédito falsas, y probar integraciones sin pagar ni arriesgar datos reales. Un comerciante con cuenta estándar no puede crear development stores.
Shopify CLI 3.x es el punto de entrada a todo lo demás. Maneja el scaffold de themes y apps, levanta el dev server con hot reload, abre un tunnel de Cloudflare automáticamente para que tu app localhost sea accesible desde el browser del store, y gestiona el deploy a Shopify. En versiones anteriores del CLI (1.x, 2.x), había que configurar ngrok manualmente o usar workarounds. En 3.x, el tunnel es automático y transparente.
Paso 0: Preparar directorio de trabajo
Todo el tutorial asume ~/proyectos/shopify/brew-atlas/ como directorio raíz del proyecto, tanto en macOS como en Linux y WSL2-Linux. Antes de cualquier comando del CLI, crea esa carpeta y posiciónate en ella:
Desde ~/:
mkdir -p ~/proyectos/shopify/brew-atlas cd ~/proyectos/shopify/brew-atlas
A partir de acá, todos los comandos del CLI en esta sección asumen que el cwd es ~/proyectos/shopify/brew-atlas/ o un subdirectorio de ahí. Cuando sea relevante, lo marcamos con una línea “Desde path/:” justo antes del bloque.
En macOS, la convención local suele ser ~/Projects/ (con P mayúscula). El path exacto no importa — el tutorial lo referencia como ~/proyectos/shopify/brew-atlas/ por consistencia, pero si prefieres otra ubicación, haz la traducción mental cada vez que lo veas.
Paso 1: Partner account
Ve a partners.shopify.com y crea tu cuenta. Si ya tienes una cuenta de comerciante con el mismo email, el proceso te pedirá que las vincules — Shopify soporta que el mismo email sea Partner y comerciante al mismo tiempo.
La Partner account no tiene costo. Una vez creada, tienes acceso al Partner Dashboard donde gestionas tus apps, themes, development stores y ganancias de revenue share.
Paso 2: Development store
Desde el Partner Dashboard, ve a Stores > Add store > Development store. Dale un nombre — para este tutorial usa brew-atlas-dev — y selecciona “Create a store to test and build”. Shopify te asigna un dominio brew-atlas-dev.myshopify.com que usarás en los comandos del CLI.
Los development stores son completamente funcionales: tienen todos los features de Shopify, incluyendo checkout, customer accounts, metafields y todo lo que cubre este tutorial. La única limitación relevante para nosotros es que no se pueden usar como staging para producción — están diseñadas para desarrollo.
Los development stores tienen un límite de 50 órdenes por mes en 2026. Pasado ese límite, no puedes generar más órdenes de prueba hasta el mes siguiente. Para testing de alto volumen, usa la Shopify Testing Toolkit con bots de test.
Paso 3: Shopify CLI 3.x
npm install -g y shopify auth login no requieren un directorio de trabajo específico — puedes correrlos desde cualquier lado.
npm install -g @shopify/cli@latest
Verifica que instaló correctamente:
shopify version
Deberías ver algo como @shopify/cli/3.x.x. Si ves un error de permisos en Linux/macOS, el problema es con los permisos globales de npm — usa nvm para gestionar Node y evita instalar paquetes globales con sudo.
Shopify CLI 3.x requiere Node.js 22 o superior en 2026. Si tienes una versión más antigua, el CLI instalará pero algunos comandos fallarán silenciosamente. Verifica con node --version.
Una vez instalado, autentícate contra tu Partner account:
shopify auth login
Esto abre el browser y te pide autorizar el CLI. Después de autorizar, el CLI guarda el token localmente y ya no te vuelve a pedir login (hasta que el token expire o lo revoques).
Paso 4: VS Code
Dos extensiones son suficientes para trabajar bien:
- Shopify Liquid — la extensión oficial de Shopify para VS Code. Da syntax highlighting para Liquid, autocompletado de tags y filters, y validación de schemas de secciones. Búscala como “Shopify Liquid” en el marketplace, publicada por Shopify.
- GraphQL Foundation — syntax highlighting y validación de queries GraphQL. La necesitarás para las secciones de APIs.
Si usas un editor diferente, Shopify mantiene un Language Server Protocol (LSP) para Liquid que funciona con cualquier editor que soporte LSP.
Paso 5: Scaffold del theme
El scaffold del theme de Brew Atlas se genera con el CLI clonando el tema Horizon de Shopify (el tema de referencia de 2025 construido sobre theme blocks):
Ojo al copiar --clone-url desde otro lado. Si pegas este comando desde Notion, Slack, ChatGPT o cualquier web con autocorrect, los -- pueden haberse convertido en un em-dash — (U+2014). El CLI te va a responder con Unexpected arguments o algo igualmente críptico. Verifícalo con echo "comando" | cat -A — el em-dash aparece como M-bM-^@M-^T en lugar de --. Los botones Copiar de este tutorial ya normalizan los guiones; el problema solo aparece cuando pegas desde otra fuente.
Desde ~/proyectos/shopify/brew-atlas/:
shopify theme init brew-atlas-theme —clone-url https://github.com/Shopify/horizon
El CLI crea la carpeta brew-atlas-theme/ como subdirectorio del cwd. Si estás parado en ~/proyectos/shopify/brew-atlas/, el resultado es ~/proyectos/shopify/brew-atlas/brew-atlas-theme/ — exactamente donde queremos que viva.
Alternativamente, puedes usar el tema en blanco que provee el CLI si prefieres empezar desde cero sin las opiniones de Horizon:
Desde ~/proyectos/shopify/brew-atlas/:
shopify theme init brew-atlas-theme
Para este tutorial usamos la opción de Horizon porque ya implementa theme blocks — el primitivo actual — y podemos modificarlo en lugar de construir todo desde cero.
El directorio generado tiene la estructura estándar de un OS 2.0 theme. La sección 04 cubre esa estructura en detalle.
Paso 6: Scaffold de la app
El scaffold de la app de Brew Atlas usa el template de Remix, que desde finales de 2025 genera un proyecto con React Router v7:
Desde ~/proyectos/shopify/brew-atlas/:
npm init @shopify/app@latest — —template remix
El CLI te pedirá un nombre para la app (usa brew-atlas-app). El CLI crea la carpeta brew-atlas-app/ como subdirectorio del cwd — igual que con el theme, el resultado queda en ~/proyectos/shopify/brew-atlas/brew-atlas-app/. Cuando termine, el proyecto generado usa React Router v7 a pesar de que la opción se llama “remix” — es un naming legacy que el CLI mantiene por compatibilidad.
Cuando el CLI genera la app, también crea automáticamente la app en tu Partner Dashboard con un Client ID y Client Secret. No tienes que crear la app manualmente desde el dashboard.
Paso 7: Dev server del theme
Para desarrollar el theme con hot reload:
Desde ~/proyectos/shopify/brew-atlas/brew-atlas-theme/:
shopify theme dev —store brew-atlas-dev.myshopify.com
El CLI sube el theme a tu development store en modo “preview” y abre una URL de preview en el browser. Cada vez que guardas un archivo, el CLI detecta el cambio, sincroniza el archivo modificado al store, y el browser recarga la sección afectada sin recargar la página completa.
La primera vez que ejecutas este comando, el CLI te pide autorizar el acceso al store. Autoriza, y el token queda guardado para ese store específico.
Los dos “passwords” alrededor de shopify theme dev
Si buscas “shopify theme dev password” vas a encontrar dos cosas distintas que suenan parecido. Conviene separarlas antes de que te topes con el problema:
Storefront password (candado público de la tienda)
Es el candado que aparece cuando el dev store todavía no está abierto al público: el visitante ve una pantalla pidiendo una contraseña antes de poder ver la tienda. Se gestiona en Online Store → Preferences → Password protection.
El CLI lo bypassea automáticamente si la tienda está asociada a tu Partner account — el caso típico del lector de este tutorial. No hay que hacer nada al respecto. Solo lo vas a tocar cuando decidas abrir el dev store al público manualmente.
Theme Access token (app oficial “Shopify Theme Access”)
Es un token del tipo shptka_... que se genera instalando la app oficial Shopify Theme Access en una tienda. Solo es necesario en tres escenarios:
- La tienda no está asociada a tu Partner account (por ejemplo, estás colaborando con un cliente y te pasaron un token en lugar de acceso directo).
- La cuenta tiene 2FA y el flujo interactivo del CLI te está friccionando.
- Estás corriendo el CLI en CI/CD y no hay browser disponible para
shopify auth login.
Se usa pasándoselo al CLI con --password o exportando SHOPIFY_CLI_THEME_TOKEN:
shopify theme dev —store mi-store.myshopify.com —password shptka_xxxxxxxxxxxxxxxxxx
Para el caso típico del lector de este tutorial — tu propio dev store recién creado desde el Partner Dashboard — no hace falta ningún password. Basta con correr shopify auth login una vez y el CLI maneja todo el resto internamente.
Paso 8: Tunneling automático
Cuando desarrollas una app (no un theme), tu servidor corre en localhost pero necesita ser accesible desde el browser del store de Shopify y desde los webhooks de Shopify. En versiones anteriores del CLI, esto requería configurar ngrok manualmente. En CLI 3.x, el tunnel es automático:
Desde ~/proyectos/shopify/brew-atlas/brew-atlas-app/:
shopify app dev
El CLI levanta tu servidor local y simultáneamente crea un tunnel de Cloudflare que expone localhost:3000 (o el puerto que uses) en una URL pública *.trycloudflare.com. Esa URL se registra automáticamente como la URL de tu app en el Partner Dashboard para el store conectado. No tienes que tocar la configuración del tunnel.
La URL del tunnel cambia cada vez que reinicias shopify app dev. Si tienes webhooks configurados manualmente en el dashboard que apuntan a esa URL, tendrás que actualizarlos. Para desarrollo, usa los webhooks gestionados por el CLI (en shopify.app.toml) en lugar de los del dashboard — el CLI los actualiza automáticamente.
El flujo de trabajo diario
Una vez que tienes el entorno configurado, el ciclo de desarrollo diario es:
Para el theme:
Desde ~/proyectos/shopify/brew-atlas/brew-atlas-theme/:
shopify theme dev —store brew-atlas-dev.myshopify.com
Editas archivos localmente, el CLI los sincroniza al store, ves los cambios en el browser. Cuando terminas, el CLI ofrece publicar el theme como draft o como theme activo.
Para la app:
Desde ~/proyectos/shopify/brew-atlas/brew-atlas-app/:
shopify app dev
El CLI levanta el servidor (que es tu app de React Router v7), abre el tunnel, y conecta la app al store. Las rutas de la app aparecen en el admin del store dentro del iframe de la embedded app.
Puentes mentales
Shopify CLI es para Shopify lo que Angular CLI es para Angular: scaffolding, dev server, build pipeline y deploy en un solo binario. La diferencia es que Shopify CLI maneja dos tipos de proyectos muy distintos (themes y apps) con comandos distintos. shopify theme dev es análogo a ng serve. shopify app dev es análogo a npm run dev en una app de Next.js con un servidor de desarrollo — solo que el CLI también gestiona el tunnel y la autenticación OAuth automáticamente.
Estado 2026
El CLI 3.x está en activo desarrollo. Los cambios más relevantes de los últimos meses:
- El template “remix” genera proyectos con React Router v7 desde Q4 2025. El naming no ha cambiado, pero el runtime sí.
- El tunnel automático usa Cloudflare Argo Tunnel sin necesidad de cuenta propia de Cloudflare.
shopify.app.tomles el archivo de configuración central de la app — reemplazó el modelo anterior basado en múltiples archivos.env. La mayoría de la configuración de la app vive ahí.- El CLI soporta múltiples stores en paralelo: puedes trabajar en diferentes stores cambiando el flag
--storesin re-autenticarte.
Sintaxis y anatomía
La estructura que genera el CLI para un theme (basado en Horizon):
brew-atlas-theme/
├── assets/
│ ├── base.css
│ └── theme.js
├── blocks/ # theme blocks (2025+) — reusables entre sections
├── config/
│ ├── settings_data.json
│ └── settings_schema.json
├── layout/
│ └── theme.liquid # HTML raíz de todas las páginas
├── locales/
│ └── en.default.json
├── sections/
│ ├── header.liquid
│ ├── footer.liquid
│ └── pdp.liquid # lo construimos en sección 05
├── snippets/
│ └── ...
└── templates/
├── product.json
└── collection.jsonLa estructura de la app generada por el CLI:
brew-atlas-app/
├── app/
│ ├── routes/
│ │ ├── _index.tsx # ruta raíz de la embedded app
│ │ └── app.tsx # layout con App Bridge
│ └── shopify.server.ts # configuración de autenticación OAuth
├── extensions/ # aquí van las extensiones (checkout, functions, etc.)
├── prisma/
│ └── schema.prisma # DB para sesiones OAuth
├── shopify.app.toml # configuración central de la app
└── package.jsonProyecto · Brew Atlas
Los scaffolds de theme y app de Brew Atlas se generan con los comandos del CLI que se documentaron arriba. En este repositorio no versionamos el output completo del scaffold (son cientos de archivos generados), sino los archivos que modificamos sobre esa base. El directorio brew-atlas/theme/ contiene las modificaciones al theme, y brew-atlas/app/ contiene las extensiones de la app.
Los archivos README en cada directorio documentan exactamente qué comandos ejecutar para regenerar el scaffold desde cero si clonas el repositorio.
Qué vas a crear/tocar en esta sección (archivos):
- Directorio base
~/proyectos/shopify/brew-atlas/(tu raíz del proyecto en local). ~/proyectos/shopify/brew-atlas/brew-atlas-theme/— scaffold del theme generado por el CLI (no se commitea al repo del tutorial).~/proyectos/shopify/brew-atlas/brew-atlas-app/— scaffold de la app generado por el CLI (tampoco se commitea; en el repo solo viven los archivos modificados).- En el repo del tutorial:
brew-atlas/theme/README.mdybrew-atlas/app/README.mdpara documentar cómo regenerar los scaffolds.
Comandos a ejecutar (orden):
mkdir -p ~/proyectos/shopify/brew-atlas && cd ~/proyectos/shopify/brew-atlasnpm install -g @shopify/cli@latestshopify version(verificación)shopify auth loginshopify theme init brew-atlas-theme --clone-url https://github.com/Shopify/horizon(desde~/proyectos/shopify/brew-atlas/)npm init @shopify/app@latest -- --template remix(desde~/proyectos/shopify/brew-atlas/)shopify theme dev --store brew-atlas-dev.myshopify.com(desde~/proyectos/shopify/brew-atlas/brew-atlas-theme/, cada vez que trabajes en el theme)shopify app dev(desde~/proyectos/shopify/brew-atlas/brew-atlas-app/, cada vez que trabajes en la app)
Los READMEs están en brew-atlas/theme/README.md y brew-atlas/app/README.md. Léelos antes de ejecutar cualquier comando de CLI.
Errores comunes
Si ejecutas shopify theme dev y el CLI dice “Can’t find theme with that name”, asegúrate de que el flag --store apunta al dominio exacto del development store (por ejemplo brew-atlas-dev.myshopify.com, no brew-atlas-dev). El CLI es estricto con el formato del dominio.
No uses tu development store como staging de producción. Los dev stores tienen límites de órdenes, no tienen SLA, y Shopify puede restrestarlos sin previo aviso si detecta uso inconsistente con el propósito de desarrollo.
La primera vez que instalas la app en el development store con shopify app dev, el CLI te genera un .env con la SHOPIFY_API_KEY y SHOPIFY_API_SECRET para ese store. Ese archivo está en .gitignore por defecto — nunca lo commitas. Si trabajas en equipo, cada desarrollador genera su propio .env vinculado a su propio development store.
Si trabajas con múltiples projects de Shopify al mismo tiempo, usa shopify auth switch para cambiar entre cuentas de Partner sin tener que hacer logout. El CLI guarda tokens por cuenta y puedes alternar entre ellas.
Checklist senior
- Tienes una Partner account activa en partners.shopify.com
- Tienes un development store creado con un nombre identificable
-
shopify versiondevuelve una versión 3.x -
shopify auth logincompletó el flujo OAuth sin errores - Tienes instaladas las extensiones “Shopify Liquid” y “GraphQL Foundation” en tu editor
- Puedes levantar
shopify theme devcontra tu development store y ver cambios en el browser - Entiendes por qué no usarías tu dev store como staging de producción
- Sabes dónde vive la configuración central de una app generada por el CLI (
shopify.app.toml)
Quiz
Quiz · ¿Lo tenés claro?
-
1. ¿Qué diferencia a una Partner account de una cuenta de comerciante?
La Partner account es gratuita, no expira, y habilita crear dev stores — un comerciante con cuenta estándar no puede crearlos.
-
2. Corres `shopify theme dev —store mi-store.myshopify.com` y el CLI te tira `Unexpected arguments`. ¿Causa más probable?
Es el bug clásico de autocorrect al copiar desde Notion/Slack/ChatGPT. Los botones Copiar del tutorial normalizan los guiones; el problema aparece cuando pegas desde otra fuente.
-
3. Lector típico con un dev store recién creado desde el Partner Dashboard: ¿qué password tiene que pasarle a `shopify theme dev`?
El CLI bypassea el storefront password para stores de tu Partner account y no necesita Theme Access token salvo casos específicos (sin Partner account, 2FA friccionando o CI/CD).
-
4. El template `remix` del CLI en 2026 genera un proyecto con...
Desde finales de 2025, el template 'remix' del CLI genera proyectos con React Router v7. El alias se mantiene por compatibilidad.
-
5. En WSL2, ¿dónde conviene clonar los proyectos del tutorial?
`/mnt/c/` es el filesystem de Windows expuesto a Linux. El cross-filesystem mata el hot reload. ext4 nativo (`~/proyectos/`) es varias veces más rápido y evita problemas de permisos.
-
6. ¿Desde qué directorio corres `shopify theme dev` para Brew Atlas?
El CLI busca `config/settings_schema.json`, los manifiestos de secciones y el `config.yml` del theme en el cwd. Si corres `shopify theme dev` desde la raíz del proyecto en lugar de desde `brew-atlas-theme/`, el CLI no va a encontrar esos archivos y va a fallar o usar un theme vacío.
Siguiente
Con el entorno configurado, la siguiente sección entra de lleno en Liquid: la sintaxis del lenguaje de templates que vive en todas las superficies del storefront. Si ya leíste Jinja, Handlebars o ERB, el salto es corto — pero hay detalles de scope y render que diferencian Liquid y que vale la pena entender antes de tocar un theme.