Skip to content

v4 stable preparation — 2026-09-29 ​

This report records the original local preparation phase. Commits, pushes and hosted CI repair were subsequently authorized; see CI verification and its linked PR checks for that follow-up. Statements below about uncommitted source or missing hosted evidence describe the original phase, not the later PR state.

This is local preparation evidence, not a stable release announcement or final 4.0.0 tarball validation. The source is the uncommitted preparation changes on v4, based on a710c6c; package version remains 4.0.0-beta.9. No commit, push, tag, GitHub default-branch change, actual release command (including a live dry run), npm publication, or Directory metadata update was performed.

Changes and validation ​

AreaEvidenceResult
Release policyIsolated argument/command-runner tests; no real release-it invocation34 tests passed: automatic next-beta and explicit version selection, registry availability/error checks, dotenv entrypoints, dry-run forwarding, invalid overrides, wrong branch, dirty tree, failed preflight
Basic checksnpm run verifyBuild, lint, typecheck, 110 root mocked tests, 12 example mocked tests, 107 packed files passed
Codegennpm run verify:codegenPacked RN 0.76.9, 0.77.3 and 0.84.0 consumers generated Android/iOS interfaces successfully
Android compiler./gradlew :app:assembleDebug --no-daemon --stacktrace in example/android, Java 17Full RN 0.84 application build passed
iOS compilerrbenv exec bundle exec pod install, then unsigned generic Simulator application buildPods and full RN 0.84 application build passed on local Xcode 27.0
Clean installationFresh temporary source copy, root npm ci/build, example npm ciResolved library entrypoint inside the temporary checkout's own dist; no prior node_modules or dist
Workflow inspectionYAML parsing, all run steps checked with bash -n, trigger/permission/job reviewPassed; no hosted execution claimed
DocumentationLocal/branch-qualified link targets and introductory JSX parsingPassed; remote v4 links require the pending branch push
Lock metadataRoot package version/dependencies compared with lock metadataAlready consistent; no dependency upgrade or npm lock rewrite needed

Local toolchain: Node 22.22.2, Java 17 (Zulu), Ruby 3.1.2, Bundler 2.3.7, Xcode 27.0 (27A266a). The configured hosted iOS job selects Xcode 26.2 on macOS 15; this local run does not verify that hosted environment.

pod install changed only the react-native-nfc-manager Pod checksum, reflecting the canonical repository URL now used by its podspec. Other Pod versions were unchanged. Compiler output retains upstream build-phase/deprecation warnings. The clean npm install also reported dependency audit findings; dependency remediation was not part of this tooling/documentation change, and passing installation is not a security audit result.

The clean checkout was /private/tmp/nfc-v4-preparation-clean-_8clewda. Local diagnostic logs (temporary, not durable release artifacts):

  • /private/tmp/nfc-v4-preparation-clean-install.log
  • /private/tmp/nfc-v4-preparation-codegen.log
  • /private/tmp/nfc-v4-preparation-android.log
  • /private/tmp/nfc-v4-preparation-pods.log
  • /private/tmp/nfc-v4-preparation-ios.log

Remaining promotion gates ​

  • Obtain separately authorized commits/push and successful hosted Validate, Android New Architecture, and iOS New Architecture checks. Apply verified status-check/branch-protection settings separately.
  • Prepare an unpublished exact final version and reviewed changelog. Record commit and tarball SHA-256, then validate that final candidate, including packed support-floor and Expo builds. This session did not rerun those native release-only consumers or validate a stable tarball.
  • Review candidate differences against historical physical-device evidence; perform applicable retests and retain explicit unverified flows. No hardware tests were run in this preparation session and no earlier beta record was relabeled. ISO 15693, configured transceive timeout, and NFC-V/ISO-DEP metadata gaps remain visible in the existing records.
  • Review actual release preview and authorize publication/default-branch operations independently, following RELEASING.md.
  • Update stable public claims and React Native Directory only in coordination with actual npm promotion, and verify the published package and Expo Doctor.

The OpenSpec change and AGENTS.md updates are locally ignored by existing .git/info/exclude rules. They remain available in this workspace but are not included in ordinary Git changes; no ignore policy was changed during this work.

Beta selection follow-up ​

The same-day refinement allows an omitted beta version to increment the local beta counter. Stable and new beta series still require exact versions. Registry checks reject existing candidates and fail closed on lookup/response errors. All registry and release calls in regression tests were stubbed; no live release preview or publication was executed. npm run verify passed again after this refinement. Native/Codegen results above belong to the preceding preparation run; those builds were not repeated for this release-helper/documentation-only edit.

Released under the MIT License.