Skip to main content

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

FlagTypeDescription
--name <name>stringCreate mode: name for the new app. Mutually exclusive with --client-id
--partner <id>stringCreate mode: partner (org) ID to create the app under; needed only when your account has multiple partners (ignored in link mode)
--client-id <id>stringLink 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

FlagTypeDescription
--partner <id>stringFilter 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

FlagTypeDescription
--path <path>stringProject root (default: .; ignored with --client-id)
--client-id <id>stringLook 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

FlagTypeDescription
--path <path>stringProject root (default: .)
--debugboolBuild extensions in debug mode (default: false)
--ngrok-authtoken <token>stringYour 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

FlagTypeDescription
--path <path>stringProject root (default: .)
--debugboolBuild extensions in debug mode (default: false)

Examples

# Deploy from current directory
shoplazza app deploy

# Deploy a specific project
shoplazza app deploy --path ./my-app

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

FlagTypeDescription
--client-id <id>stringLink mode: pull an existing app's config by client ID. Mutually exclusive with --create
--createboolCreate mode: create a new app in the backend, then write its config. Mutually exclusive with --client-id
--name <name>stringCreate mode: name for the new app (required with --create)
--partner <id>stringCreate mode: partner (org) to create the app under; auto-selected when you belong to only one
--config <name>stringName of the app configuration (default: the app's name) — written to shoplazza.app.<name>.toml, merged if it exists
--path <path>stringProject root (default: .)

config use

Switch the active app configuration (validated online).

shoplazza app config use [flags]

Flags

FlagTypeDescription
--config <name>stringThe name of the app configuration to switch to (default: the base shoplazza.app.toml)
--path <path>stringProject root (default: .)

extension create

Scaffold a new extension into the current app project.

shoplazza app extension create [flags]

Flags

FlagTypeDescription
--type <type>stringExtension type: theme, checkout, or function (required)
--name <name>stringExtension name / target directory under extensions/ (required)
--theme-type <subtype>stringTheme subtype: basic or embed (required when --type is theme)
--path <path>stringProject 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

FlagTypeDescription
--client-id <id>stringApp client ID (default: active config)
--partner <id>stringPartner ID (default: active config)
--path <path>stringProject root (default: .)
--offset <number>intPagination offset (default: 0)
--limit <number>intPagination 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

FlagTypeDescription
--name <name>stringFunction extension name under extensions/ (required)
--path <path>stringProject 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

FlagTypeDescription
--name <name>stringFunction extension name under extensions/ (required)
--client-id <id>stringApp client ID (default: active config)
--path <path>stringProject root (default: .)
--debugboolReserved flag for debug mode (default: false)

function list

List the current app's function extensions.

shoplazza app function list [flags]

Flags

FlagTypeDescription
--path <path>stringProject 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"