Ir al contenido principal

Sección 02

02 · Setup profesional

Partner account, dev store, CLI 3.x, flujo de trabajo.

En una frase

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.

Qué vas a ejecutar en esta sección

  1. mkdir -p ~/proyectos/shopify/brew-atlas && cd ~/proyectos/shopify/brew-atlas — Crear el directorio base del tutorial
  2. npm install -g @shopify/cli@latest — Instalar Shopify CLI 3.x
  3. shopify version — Verificar que instaló bien
  4. shopify auth login — Autenticarse con la Partner account
  5. shopify theme init brew-atlas-theme --clone-url https://github.com/Shopify/horizon — Scaffold del theme (una sola vez)
  6. npm init @shopify/app@latest -- --template remix — Scaffold de la app (una sola vez)
  7. shopify theme dev --store brew-atlas-dev.myshopify.com — Dev server del theme con hot reload
  8. 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.

SORecomendaciónComentario
Linux (Ubuntu/Debian/Fedora/Arch)⭐ IdealExperiencia nativa. npm -g, rustup, compilación de Wasm y hot reload: todo sin drama.
macOS (Intel / Apple Silicon)✅ Excelente95% 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 gotchasTrabaja en ~/proyectos/ (filesystem Linux nativo), no en /mnt/c/. El cross-filesystem mata el hot reload.
Windows nativo (PowerShell / cmd)❌ DesaconsejadoPaths con \, permisos distintos, fricciones reales con Rust/Wasm para Functions. Instala WSL2 en lugar de pelear con esto.

Nota

Gotchas específicos de WSL2 que vale la pena saber antes de empezar:

  • No instales Node con apt — usa nvm. Shopify CLI requiere Node 22+ en 2026 y la versión de apt suele 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 dev se reenvía a Windows automáticamente — lo abres en localhost:9292 desde el browser de Windows.
  • El tunnel de Cloudflare para shopify app dev funciona 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 ~/:

Ejecutar Crear directorio base

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.

Nota

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.

Cuidado

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

Nota

npm install -g y shopify auth login no requieren un directorio de trabajo específico — puedes correrlos desde cualquier lado.

Ejecutar Instalar Shopify CLI

npm install -g @shopify/cli@latest

Verifica que instaló correctamente:

Ejecutar Verificar instalación

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.

Nota

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:

Ejecutar Autenticarse con Shopify

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):

Cuidado

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/:

Ejecutar Scaffold del theme

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/:

Referencia Scaffold minimal (alternativo)

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/:

Ejecutar Scaffold de la app

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.

Nota

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/:

Ejecutar Dev server del 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:

Referencia Usar Theme Access token (solo si aplica)

shopify theme dev —store mi-store.myshopify.com —password shptka_xxxxxxxxxxxxxxxxxx

Nota

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/:

Ejecutar Dev server de la 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.

Tip

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/:

Referencia Flujo diario — 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/:

Referencia Flujo diario — 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

Desde Angular/React

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.toml es 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 --store sin 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.json

La 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.json

Proyecto · Brew Atlas

Brew Atlas · Paso 2

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.md y brew-atlas/app/README.md para documentar cómo regenerar los scaffolds.

Comandos a ejecutar (orden):

  1. mkdir -p ~/proyectos/shopify/brew-atlas && cd ~/proyectos/shopify/brew-atlas
  2. npm install -g @shopify/cli@latest
  3. shopify version (verificación)
  4. shopify auth login
  5. shopify theme init brew-atlas-theme --clone-url https://github.com/Shopify/horizon (desde ~/proyectos/shopify/brew-atlas/)
  6. npm init @shopify/app@latest -- --template remix (desde ~/proyectos/shopify/brew-atlas/)
  7. shopify theme dev --store brew-atlas-dev.myshopify.com (desde ~/proyectos/shopify/brew-atlas/brew-atlas-theme/, cada vez que trabajes en el theme)
  8. 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

Cuidado

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.

Cuidado

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.

Nota

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.

Tip

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

Checklist senior

  • Tienes una Partner account activa en partners.shopify.com
  • Tienes un development store creado con un nombre identificable
  • shopify version devuelve una versión 3.x
  • shopify auth login completó el flujo OAuth sin errores
  • Tienes instaladas las extensiones “Shopify Liquid” y “GraphQL Foundation” en tu editor
  • Puedes levantar shopify theme dev contra 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

Quiz · ¿Lo tenés claro?

6 preguntas · respondé para marcar la sección como completada.

  1. 1. ¿Qué diferencia a una Partner account de una cuenta de comerciante?

  2. 2. Corres `shopify theme dev —store mi-store.myshopify.com` y el CLI te tira `Unexpected arguments`. ¿Causa más probable?

  3. 3. Lector típico con un dev store recién creado desde el Partner Dashboard: ¿qué password tiene que pasarle a `shopify theme dev`?

  4. 4. El template `remix` del CLI en 2026 genera un proyecto con...

  5. 5. En WSL2, ¿dónde conviene clonar los proyectos del tutorial?

  6. 6. ¿Desde qué directorio corres `shopify theme dev` para Brew Atlas?

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.