Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@
"description": "Incremental migration strategy for adopting React Native or Expo in native iOS/Android apps using @callstack/react-native-brownfield, including initial setup, packaging, and phased host integration.",
"source": "./",
"skills": ["./skills/react-native-brownfield-migration"]
},
{
"name": "deployment",
"description": "React Native deployment and release workflows for App Store and Play Store, including publish checklists, Fastlane automation, CI/CD patterns, and E2E pre-publish quality gates.",
"source": "./",
"skills": ["./skills/deployment"]
}
]
}
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ A collection of agent-optimized skills for AI coding assistants. The repo ships
| [github-actions](./skills/github-actions/) | GitHub Actions workflow patterns for React Native simulator/emulator build artifacts |
| [upgrading-react-native](./skills/upgrading-react-native/) | React Native upgrade workflow: templates, dependencies, and common pitfalls |
| [react-native-brownfield-migration](./skills/react-native-brownfield-migration/) | Incremental migration strategy to adopt React Native or Expo in native apps using @callstack/react-native-brownfield, with setup, packaging, and phased integration steps |
| [deployment](./skills/deployment/) | React Native release engineering workflows: publish checklists, Fastlane automation, and E2E pre-publish quality gates |

## React Native Best Practices

Expand Down Expand Up @@ -47,6 +48,7 @@ Other available installs:
/plugin install github-actions@callstack-agent-skills
/plugin install upgrading-react-native@callstack-agent-skills
/plugin install react-native-brownfield-migration@callstack-agent-skills
/plugin install deployment@callstack-agent-skills
```

Or use the interactive menu:
Expand Down Expand Up @@ -238,10 +240,15 @@ agent-skills/
│ ├── SKILL.md # Main skill file with RN upgrade workflow routing
│ └── references/ # Detailed upgrade flow files
└── react-native-brownfield-migration/
├── SKILL.md # Main skill file for Expo/bare path routing
├── react-native-brownfield-migration/
│ ├── SKILL.md # Main skill file for Expo/bare path routing
│ ├── agents/openai.yaml # Codex Skills UI metadata
│ └── references/ # Brownfield packaging and integration flow files
└── deployment/
├── SKILL.md # Main skill file for RN deployment and release workflows
├── agents/openai.yaml # Codex Skills UI metadata
└── references/ # Brownfield packaging and integration flow files
└── references/ # Publish checklist, Fastlane automation, E2E release gate flows
```

Use `.claude-plugin/marketplace.json` for Claude Code plugin installs and `.agents/plugins/marketplace.json` for Codex plugin installs.
Expand Down
51 changes: 51 additions & 0 deletions skills/deployment/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
name: deployment
description: React Native mobile release and publishing workflows using Fastlane, GitHub Actions, and pre-publish quality gates. Use when preparing App Store or Play Store releases, automating mobile deployment pipelines, or validating pre-release readiness.
license: MIT
metadata:
author: Callstack
tags: react-native, deployment, fastlane, app-store, play-store, ci-cd, github-actions, release, e2e
---

# React Native Deployment

## Overview

Covers release-readiness checks, Fastlane automation for Android/iOS, and E2E quality gates before App Store and Play Store submission.

## When to Apply

Use this skill when:
- Preparing a production React Native release.
- Setting up Fastlane for App Store Connect and Google Play deployment.
- Designing GitHub Actions release pipelines triggered by tags or release branches.
- Enforcing E2E pre-publish checks that block failing releases.

## Typical Deployment Sequence

1. (Android prerequisite) Verify Android 16KB page-size alignment locally for the release build. If the local zipalign verification fails, stop before any Android deployment.
2. Configure GitHub Actions repository secrets for store uploads from [fastlane-deployment.md][fastlane-deployment] (do not commit raw keys to the repo).
3. Run release readiness checks from [publish-checklist.md][publish-checklist].
4. Configure lanes and CI automation from [fastlane-deployment.md][fastlane-deployment].
5. Enforce release gates with [e2e-prepublish-tests.md][e2e-prepublish-tests].

## Quick Reference

| File | Description |
|------|-------------|
| [publish-checklist.md][publish-checklist] | Android/iOS/shared release readiness and store submission checks |
| [fastlane-deployment.md][fastlane-deployment] | Fastlane + GitHub Actions deployment automation for both stores |
| [e2e-prepublish-tests.md][e2e-prepublish-tests] | E2E gate design, flaky handling, and pre-publish smoke checks |

## Problem -> Skill Mapping

| Problem | Start With |
|---------|------------|
| Need a go/no-go checklist before submission | [publish-checklist.md][publish-checklist] |
| Need Fastlane lanes for TestFlight and Play tracks | [fastlane-deployment.md][fastlane-deployment] |
| Need release to fail when E2E tests fail | [e2e-prepublish-tests.md][e2e-prepublish-tests] |
| Need secret naming and CI handling conventions | [fastlane-deployment.md][fastlane-deployment] |

[publish-checklist]: references/publish-checklist.md
[fastlane-deployment]: references/fastlane-deployment.md
[e2e-prepublish-tests]: references/e2e-prepublish-tests.md
4 changes: 4 additions & 0 deletions skills/deployment/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "React Native Deployment"
short_description: "Fastlane, store publish checklists, and release gating for RN"
default_prompt: "Use $deployment to set up React Native Fastlane release automation, pre-publish validation, and App Store or Play Store delivery workflows."
113 changes: 113 additions & 0 deletions skills/deployment/references/e2e-prepublish-tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
title: E2E Pre-Publish Release Gates
impact: HIGH
tags: react-native, e2e, detox, maestro, playwright, release-gates, ci
---

# Skill: E2E Pre-Publish Release Gates

Use this workflow to enforce automated quality gates before store submission.

## Quick Pattern

- Run E2E against release-like builds, not only debug builds.
- Fail deployment jobs when required E2E suite fails.
- Keep a minimal smoke suite for every release candidate.
- Quarantine flaky cases with owner and expiry date.

## When to Use

- Before invoking production Fastlane lanes.
- When stabilizing CI-based release quality gates.
- When selecting tooling for cross-platform pre-publish checks.

## Tool Selection Guide

| Tool | Best For | Notes |
|---|---|---|
| Detox | React Native app-level E2E on simulators/emulators | Strong JS integration, good for CI gating |
| Maestro | Fast authoring of mobile UI flows | Good for smoke and regression flows |
| Playwright | Web or hybrid webview-heavy flows | Not a primary native mobile E2E tool |

## CI Execution Targets

- Android emulator (API level aligned to supported production baseline).
- iOS simulator (latest stable plus one fallback runtime if needed).
- Release-equivalent build config to catch signing/permission/runtime differences.

## Required Release Gates

Define mandatory checks:
1. Lint and unit tests pass.
2. E2E smoke suite passes on Android and iOS.
3. Crash-free launch and critical-path user flow pass.
4. Fastlane release lanes run only if all gates succeed.

## GitHub Actions Gate Example

```yaml
name: Prepublish Gates

on:
pull_request:
branches: [main]
push:
tags:
- "v*.*.*"

jobs:
quality-gates:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Unit tests
run: npm test -- --ci
- name: Detox smoke
run: npm run e2e:detox:smoke
- name: Maestro smoke
run: npm run e2e:maestro:smoke

release:
needs: quality-gates
if: startsWith(github.ref, 'refs/tags/v')
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Deploy after gates
run: bundle exec fastlane ios ios_beta && bundle exec fastlane android android_internal
```

## Smoke Checklist (Minimum)

- First launch and authentication flow.
- Main navigation tabs/routes open successfully.
- One critical transaction path succeeds.
- Foreground/background transition is stable.
- Logout/session renewal works.

## Flaky Test Handling Policy

- Allow at most one automatic rerun for known flaky group.
- Track flaky tests in a quarantine list with ticket owner.
- Set expiry date for quarantine; expired flaky tests become blockers.
- Never bypass smoke-suite failures for production submission.

## Common Pitfalls

- Running E2E only on debug builds.
- Treating quarantined tests as permanently ignored.
- Releasing from branches that skip required checks.
- Missing parity between local and CI simulator/emulator configs.

## Related Skills

- [publish-checklist.md](publish-checklist.md)
- [fastlane-deployment.md](fastlane-deployment.md)
Loading