# Deploy

Use to deploy, publish, or push an Expo/React Native Power Apps mobile app to a Power...

- Repository: https://github.com/microsoft/power-platform-skills (1098 stars)
- Category: DevOps
- License: MIT
- Last updated: 2026-10-31
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add microsoft/power-platform-skills --skill deploy -g -a claude-code -y`
Codex: `npx skills add microsoft/power-platform-skills --skill deploy -g -a codex -y`
Cursor: `npx skills add microsoft/power-platform-skills --skill deploy -g -a cursor -y`
Gemini CLI: `npx skills add microsoft/power-platform-skills --skill deploy -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add microsoft/power-platform-skills`

## Description

Use to deploy, publish, or push an Expo/React Native Power Apps mobile app to a Power Platform tenant.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

> **Plugin check**: Run `node "${PLUGIN_ROOT}/scripts/check-version.js"` - if it outputs a message, show it to the user before proceeding.

**📋 Shared instructions: [shared-instructions.md](${PLUGIN_ROOT}/shared/shared-instructions.md)**, read first.

# Deploy

Builds the mobile app in the current directory and pushes it to the Power Platform environment recorded in `power.config.json`.

This skill uses the standard 4-step deployment flow for this plugin: check memory bank, build, deploy, then update memory bank.

## Out of scope (deliberately)

- `expo run:ios` / `expo run:android`, local native compile is the user's choice; run your platform-specific native command directly when ready.
- OTA updates and store distribution, out of scope for v0.
- Starting Metro for local dev, created apps use `npm run dev`; template Metro config writes `.powernative` logs for `/debug-app`.

## Workflow

1. Check memory bank → 1.5 App ID preflight → 2. Build → 2.4 Native package → 2.5 Offline profile coverage gate → 3. Deploy → 4. Update memory bank

---

### Step 1, Check memory bank

Read `memory-bank.md` from the project root if present. Capture:

- Project name
- Environment (id + display name)
- Current version

If absent, continue, the project may have been created without the plugin. Re-derive env from `power.config.json` if needed.

### Step 1.5, App ID preflight (first-deploy gate)

Read `power.config.json` **before building anything**:

```bash
node -e "const c=require('./power.config.json');console.log(c.appId||'MISSING')"
```

- **Prints a GUID** → normal path. Continue to Step 2.
- **Prints `MISSING`** (null, absent, or empty) → this is a **first deploy**. Say so plainly *before* doing any work:

  > "⚠️ First deploy detected, `power.config.json` has no `appId` yet. The app ID is minted by the first push, but it is compiled **into** the native bundle at build time. So two full build+push cycles are required. I'll run both; the second is not optional."

The rest: https://github.com/microsoft/power-platform-skills/blob/HEAD/plugins/mobile-apps/skills/deploy/SKILL.md
