Skip to content

React Native · iOS simulator · Claude Code, Codex and Cursor

A QA engineer for your coding agent

Claude Code, Codex or Cursor writes the React Native change. QaReN tries it in your app on an iOS simulator and comes back with PASS or FAIL, and the evidence behind it.

Onboarding to the tasks tab
  1. 1Tap "onboarding-skip"
  2. 2Wait for "Welcome" to appear
  3. ✓"Welcome" is on screen
  4. 3Tap "tab-tasks"
PASSreport.md · ledger.json · block saved

Your agent says it is done. Did anyone open the app?

A coding agent checks its work the ways it can: types, lint, unit tests. It does not tap through the app. A screen that never appears, a tap that lands on nothing or a flow that breaks halfway gets past all of those and reaches review, or your users.

QaReN is the QA engineer on your agent's team. Your agent hands it the change and a short plan of what to check; QaReN runs that plan in the real app and tells both of you what happened.

How a check runs

What a check looks like

  1. 1

    You ask your agent to QA a change, for example "QA the onboarding change".

  2. 2

    The agent writes a plan in Markdown: what to tap, what to wait for and what must be on screen.

    ### Onboarding to the tasks tab
    
    1. Tap "onboarding-skip"
    2. Wait for "Welcome" to appear
    ✓ "Welcome"
    3. Tap "tab-tasks"
  3. 3

    QaReN borrows a simulator, builds and installs the app from your working tree, starts Metro, walks the plan step by step and tears down what it started.

  4. 4

    You get PASS or FAIL with the evidence. On a pull request, QaReN can record the screen and post the result as a comment.

Why you can trust the verdict

A verdict, not a summary

Every run ends in PASS, FAIL or a refusal with a typed reason and the next action to take. Your agent reads it as JSON; your scripts read the exit code.

exit 0 pass · 1 fail · 4 refused

Evidence you can open

Each run keeps a step-by-step ledger and a readable report at the paths its receipt names. A pull request run adds a screen recording when one can be captured.

report.md · ledger.json · run.json · logs/events.jsonl

It tests what you changed

QaReN builds your working tree, or a pull request's head, and fails the run if the code changes while the plan is being walked, so a drifted run can never pass.

CANDIDATE_DRIFTED is never a pass

Faster on every run

A passing block that is eligible is saved under .qaren/actions/ and replayed next time by the exact elements it used, so repeat checks skip the search.

ledger.blocks: replayed · patched · discovered

Built for

YourWhat QaReN works with
Coding agentClaude Code, Codex or Cursor, through the QaReN plugin.
AppAn Expo React Native app that uses expo-dev-client and pnpm.
MacAn Apple silicon Mac with Xcode. QaReN 2.0 sets up and checks on an iOS simulator.
AndroidComing in 2.1.

Get started

Open Claude Code, Codex or Cursor in your app. Copy this prompt, then paste it into your agent to set up QaReN for iOS simulators on an Apple silicon Mac:

  1. 1Copy the prompt.
  2. 2Paste it into your agent, from the app root.
  3. 3It stops and tells you if a step needs you, such as an Xcode download or a plugin UI step.

Prefer terminal commands or manual installation? See the full installation guide.

Copy this prompt to your agent
Set up QaReN in this app, from the app root, for my current host (Claude Code, Codex or Cursor). The QaReN repository is https://github.com/Lykhoyda/QaReN.

Check that this is an Apple silicon Mac and a pnpm Expo app using expo-dev-client with pnpm-lock.yaml. Install missing Node 24 or newer, Corepack and pnpm using user-writable locations. Check that full Xcode and an iOS simulator runtime are installed and ready. If a prerequisite needs administrator access, a license agreement or a manual download, stop and tell me the exact step I need to complete. Do not use sudo.

Install the QaReN plugin for my host using the per-host instructions at https://github.com/Lykhoyda/QaReN#install-the-plugin-yourself
If the host needs a plugin UI step or a session restart, tell me what to do and resume setup once the plugin is available.

Run /qaren:setup; if slash commands are unavailable, load and follow the plugin's setup skill. It owns installing the matching qaren CLI, running qaren doctor, configuring this app and selecting the iOS simulator. Follow its source-install fallback only if the release is unavailable. Use the matching binary path it resolves; preserve any existing qaren command on PATH and keep the default QaReN home and installer options.

Follow setup through writing .qaren/plans/smoke.md and running the first smoke check. Read the receipt and report result, run_id and next_action. If setup or the check stops, report the exact reason and fix; do not claim success before a passing receipt.

How it works

Under the hood, QaReN is the qaren command-line tool. The plugin teaches your agent to drive it, and you can run the same commands yourself.