app
Manage the full app development lifecycle — initialize, develop, deploy, and version apps and their extensions.
init
Create a new Shoplazza app project or connect to an existing one. The command scaffolds an app project into a new sub-directory of the current directory.
Two mutually exclusive modes:
- Create mode (
--name): Create a NEW app and scaffold its project. - Link mode (
--client-id): Link an EXISTING app by client ID and scaffold its project.
You must provide exactly one of --name or --client-id.
shoplazza app init --name "My App" [--partner <id>]
shoplazza app init --client-id <client_id>
Flags
| Flag | Type | Description |
|---|---|---|
--name <name> | string | Create mode: name for the new app. Mutually exclusive with --client-id |
--partner <id> | string | Create mode: partner (org) ID to create the app under; needed only when your account has multiple partners (ignored in link mode) |
--client-id <id> | string | Link mode: link an existing app by client ID. Mutually exclusive with --name |
Examples
# Create a new app (single-partner account)
shoplazza app init --name "my-app"
# Create a new app under a specific partner
shoplazza app init --name "my-app" --partner partner-id
# Link to an existing app
shoplazza app init --client-id your-client-id
list
List all apps associated with your account.
shoplazza app list [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--partner <id> | string | Filter by partner ID (required when the account has multiple partners) |
info
Show metadata for the current app, including partner, user, and local extension info.
shoplazza app info [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--path <path> | string | Project root (default: .; ignored with --client-id) |
--client-id <id> | string | Look up a specific app by client ID (skips the local project; extensions are not listed) |
dev
Start a local development server with hot module replacement for all extensions.
shoplazza app dev [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--path <path> | string | Project root (default: .) |
--debug | bool | Build extensions in debug mode (default: false) |
--ngrok-authtoken <token> | string | Your personal ngrok authtoken. Saved to <project>/.env as NGROK_AUTHTOKEN and reused on later runs. Used only as a fallback when the primary cloudflared tunnel cannot start |
deploy
Build and deploy the app and all its extensions to production.
shoplazza app deploy [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--path <path> | string | Project root (default: .) |
--debug | bool | Build extensions in debug mode (default: false) |
Examples
# Deploy from current directory
shoplazza app deploy
# Deploy a specific project
shoplazza app deploy --path ./my-app
config link
Write an app configuration file into the current project. Unlike app init, it does NOT scaffold a template — it only adds a shoplazza.app.<name>.toml.
Two mutually exclusive modes:
- Link mode (
--client-id): Pull an existing app's config from the Dashboard. - Create mode (
--create --name): Create a new app in the backend, then write its config.
shoplazza app config link --client-id <client_id>
shoplazza app config link --create --name "My App" [--partner <id>]
Flags
| Flag | Type | Description |
|---|---|---|
--client-id <id> | string | Link mode: pull an existing app's config by client ID. Mutually exclusive with --create |
--create | bool | Create mode: create a new app in the backend, then write its config. Mutually exclusive with --client-id |
--name <name> | string | Create mode: name for the new app (required with --create) |
--partner <id> | string | Create mode: partner (org) to create the app under; auto-selected when you belong to only one |
--config <name> | string | Name of the app configuration (default: the app's name) — written to shoplazza.app.<name>.toml, merged if it exists |
--path <path> | string | Project root (default: .) |
config use
Switch the active app configuration (validated online).
shoplazza app config use [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--config <name> | string | The name of the app configuration to switch to (default: the base shoplazza.app.toml) |
--path <path> | string | Project root (default: .) |
extension create
Scaffold a new extension into the current app project.
shoplazza app extension create [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--type <type> | string | Extension type: theme, checkout, or function (required) |
--name <name> | string | Extension name / target directory under extensions/ (required) |
--theme-type <subtype> | string | Theme subtype: basic or embed (required when --type is theme) |
--path <path> | string | Project root (default: .) |
Examples
# Create a theme extension
shoplazza app extension create --type theme --name my-theme --theme-type basic
# Create a function extension
shoplazza app extension create --type function --name my-function
versions
List all deployed versions of the app (paginated).
shoplazza app versions [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--client-id <id> | string | App client ID (default: active config) |
--partner <id> | string | Partner ID (default: active config) |
--path <path> | string | Project root (default: .) |
--offset <number> | int | Pagination offset (default: 0) |
--limit <number> | int | Pagination limit (default: 20) |
function compile
Compile a single function extension's src/index.js to WASM via the javy toolchain.
shoplazza app function compile [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--name <name> | string | Function extension name under extensions/ (required) |
--path <path> | string | Project root (default: .) |
function release
Compile and publish a single function extension. For a whole-app publish use shoplazza app deploy.
shoplazza app function release [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--name <name> | string | Function extension name under extensions/ (required) |
--client-id <id> | string | App client ID (default: active config) |
--path <path> | string | Project root (default: .) |
--debug | bool | Reserved flag for debug mode (default: false) |
function list
List the current app's function extensions.
shoplazza app function list [flags]
Flags
| Flag | Type | Description |
|---|---|---|
--path <path> | string | Project root (default: .) |
Configuration files
shoplazza.app.toml
The main app configuration file:
# Application Client ID (required)
client_id = "your-client-id"
# Application permission scopes
scopes = "read_customer write_cart_transform"
shoplazza.extension.toml
Each extension has its own configuration:
# Extension ID (system-generated)
id = "extension-id"
# Extension name
name = "My Extension"
# Extension type (theme / checkout / function)
type = "theme"