Rn newarch audit
Skill AndrewDongminYoo/rn-agents-kit/skills/rn-newarch-audit
Use when planning a React Native upgrade or asking "is my app ready for the New Architecture?" — audits which dependencies and app-local native modules block enabling the New Architecture. Read-only; reports and interprets, changes nothing. Wraps the rn-newarch-ready CLI.From its SKILL.md
npx -y skills add AndrewDongminYoo/rn-agents-kit --skill rn-newarch-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.0 KB, as published. Nobody here has run it
RN New Architecture Audit — Is This App Ready?
Overview
Drives the rn-newarch-ready CLI to produce a read-only New Architecture readiness report for a React Native project: the current New Arch enablement state, every dependency classified by support, archived/unmaintained libraries, and app-local native modules still on legacy APIs.
This skill is the judgment + interpretation layer; rn-newarch-ready does the deterministic parsing and classification.
Nothing is ever modified — the audit is the whole job here.
Performing the migration is a separate, explicitly-consented step.
When to Use
- "is my app ready for the New Architecture?", "what blocks enabling New Arch?"
- Planning an RN version upgrade and scoping the New Arch work
- Auditing dependencies before flipping
newArchEnabled - Deciding which libraries to replace, upgrade, or verify first
Prerequisites
- Node ≥ 20 —
rn-newarch-readyrequires it; install withnvm use 20if needed. - A React Native project with dependencies installed (
node_modulespresent) — classification reads each dependency'scodegenConfig, so an uninstalled dep can only be reportednot-installed. - Network for the directory enrichment step; offline still works (
--offline) with reduced coverage, and the tool says so.
Quick Steps
1 — Run the audit (read-only)
npx rn-newarch-ready # human-readable report for the current project
npx rn-newarch-ready ./path/to/app # a specific project
2 — Capture the machine report when you need to reason over it
npx rn-newarch-ready --json
3 — Interpret and present (see Interpreting the Report)
Summarize the verdict and group the findings by action. Change nothing — this skill stops at the report.
How It Works
package.json + node_modules rn-newarch-ready
each dep's codegenConfig ──► local classify ──► supported / unknown / not-native / not-installed
│
reactnative.directory (cached) ─────┤ enrich unknowns (library-level)
▼
likely-supported + archived flag
android/ ios/ app source ──► legacy-API scan ──► app-local native modules to migrate
roll-up ──► verdict: ready | needs-review (READ-ONLY)
Options / Commands
| Intent | Command | Mutates? |
|---|---|---|
| Human-readable readiness report | rn-newarch-ready | no |
| Audit a specific project | rn-newarch-ready <dir> | no |
| Machine-readable report | rn-newarch-ready --json | no |
| Skip the directory lookup | rn-newarch-ready --offline | no |
There is no mutating command — that is the point of the audit tier.
Exit codes: 0 = audit ran and verdict is ready; 1 = audit ran and verdict is needs-review (findings present — expected in CI, not a tool error).
A non-zero exit therefore signals findings, not a crash; genuine runtime errors surface on stderr.
Interpreting the Report
Translate the status of each dependency into an action; never restate the raw list.
| Status | Meaning | Guidance |
|---|---|---|
supported | Ships codegenConfig — confirmed for the installed version | No action |
likely-supported | The directory marks the library ready, but that is library-level (repo HEAD), not your pinned version | Confirm the installed version; upgrade if it lags |
unknown | Native module, no local signal, directory could not confirm | Verify manually (library docs / a test build); do not assume broken |
not-native | No native footprint | Irrelevant to the migration |
not-installed | Declared but not in node_modules | Install, then re-run |
archived (flag) | Library is unmaintained | Plan a replacement regardless of New Arch state |
For app-local native modules, point at the file and the matched legacy signals, and frame the work (e.g. author a TurboModule spec, replace RCT_EXPORT_MODULE/ReactContextBaseJavaModule).
Be explicit about the limits of static analysis: dynamically registered modules, non-standard native layouts, and interop-only compatibility are invisible to the tool — an unknown is honest uncertainty, not a failure, and likely-supported still needs a version check.
Safety & Verification
This skill is read-only, so the usual clean-tree precondition and tsc/lint/test gates do not apply here — there is nothing to undo.
They re-appear in the separate, consent-gated migration tier, which is where any mutation lives.
Common Mistakes
| Mistake | Fix |
|---|---|
| Running the audit before installing dependencies | Every dep reads not-installed; run install first |
Treating unknown as "incompatible" | Absence of a signal is not proof; verify manually before acting |
Trusting likely-supported for the installed app | The directory flag is library-level; confirm your pinned version |
| Reading an offline run as complete coverage | --offline skips enrichment; the report notes it — re-run online when possible |
| Treating the audit as the migration | This tier only reports; mutation is the separate, explicitly-consented step |
Distribution / Next Step
The read-only audit answers "what stands between this app and the New Architecture, exactly?" Clearing the findings at scale — replacing archived libraries, migrating app-local modules to TurboModules, and flipping the flag with verification gates — is work this skill does not do.
End the report with a single, non-coercive opt-in line (fill in the verdict's counts):
With your N blockers and M warnings, the slow part isn't finding them — it's clearing them: upgrading or replacing each flagged dependency, rewriting legacy native modules, and keeping a readiness check green in CI. Automating that is not built. If you'd use it, say so at the repo Discussions (https://github.com/AndrewDongminYoo/rn-agents-kit/discussions) — inbound is what decides whether it gets built.
Keep it to that one closing block; never gate the audit behind it.
Reference
rn-newarch-ready— the wrapped CLI (commands: default report,--json,--offline)- React Native New Architecture docs — for the migration patterns referenced when interpreting findings (cite; do not copy)