Ios parity audit #1

Merged
everestmcarthur merged 2 commits from ios-parity-audit into main 2026-08-03 10:14:18 -04:00
everestmcarthur commented 2026-08-03 10:14:07 -04:00 (Migrated from github.com)

Summary by CodeRabbit

  • New Features

    • Improved iOS support for modern Bridgeless React Native environments.
    • Added reliable loading of JavaScript source and Hermes bytecode.
    • Added configuration saving and loading for custom loader settings.
  • Bug Fixes

    • Prevented duplicate initialization and improved injection reliability.
    • Corrected security-container logging.
    • Added checksum verification for the downloaded iOS patcher.
  • Documentation

    • Added an iOS parity audit covering supported features, limitations, and remaining device-verification requirements.
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Improved iOS support for modern Bridgeless React Native environments. - Added reliable loading of JavaScript source and Hermes bytecode. - Added configuration saving and loading for custom loader settings. - **Bug Fixes** - Prevented duplicate initialization and improved injection reliability. - Corrected security-container logging. - Added checksum verification for the downloaded iOS patcher. - **Documentation** - Added an iOS parity audit covering supported features, limitations, and remaining device-verification requirements. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
coderabbitai[bot] commented 2026-08-03 10:14:27 -04:00 (Migrated from github.com)

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f9ed4023-0d83-4a01-82ff-b8cb6fafa3cb

📥 Commits

Reviewing files that changed from the base of the PR and between 35ad28b910 and 0044c2c12a.

📒 Files selected for processing (14)
  • .github/workflows/deploy.yml
  • AUDIT.md
  • Headers/JSI.h
  • Headers/RCTHost.h
  • Headers/Utils.h
  • Headers/jsi/instrumentation.h
  • Headers/jsi/jsi-inl.h
  • Headers/jsi/jsi.h
  • Makefile
  • Sources/JSI.mm
  • Sources/LoaderConfig.m
  • Sources/Sideloading.x
  • Sources/Tweak.xm
  • Sources/Utils.m

📝 Walkthrough

Walkthrough

The change adds a JSI API and runtime evaluator for Hermes bytecode and source scripts. It injects scripts through RCTHost on Bridgeless React Native and keeps a guarded bridge fallback. It also updates loader persistence, build inputs, logging, audit documentation, and patcher verification.

Changes

iOS runtime injection

Layer / File(s) Summary
JSI and runtime contracts
Headers/jsi/*, Headers/JSI.h, Headers/RCTHost.h, Headers/Utils.h, Makefile
Adds the public JSI API, inline runtime operations, instrumentation interface, Objective-C runtime hook declarations, bytecode detection declaration, and C++17 source discovery.
Script evaluation and bytecode handling
Sources/JSI.mm, Sources/Utils.m
Detects Hermes bytecode and evaluates bytecode or source text through a live JSI runtime.
Injection orchestration and host hooks
Sources/Tweak.xm, Sources/LoaderConfig.m
Centralizes script loading and execution, adds the RCTHost hook, guards duplicate injection, preserves the legacy bridge fallback, and adds loader configuration read/write methods.
Build, CI, and audit updates
Sources/Sideloading.x, .github/workflows/deploy.yml, AUDIT.md
Corrects logging, verifies the IPA patcher checksum, and documents iOS fixes, injection behavior, device validation status, and feature gaps.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant RCTHost
  participant Tweak
  participant JSI
  participant Runtime
  RCTHost->>Tweak: initialize runtime
  Tweak->>Tweak: runRevengeInjection
  Tweak->>JSI: evaluate Revenge scripts
  JSI->>Runtime: execute source or Hermes bytecode
  Runtime-->>JSI: return evaluation status
  JSI-->>Tweak: report execution result
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ios-parity-audit

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

<!-- This is an auto-generated comment: summarize by coderabbit.ai --> <!-- review_stack_entry_start --> [![Review Change Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/everestmcarthur/revenge-tweak/pull/1?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- This is an auto-generated comment: failure by coderabbit.ai --> > [!CAUTION] > ## Review failed > > The pull request is closed. <!-- end of auto-generated comment: failure by coderabbit.ai --> <details> <summary>ℹ️ Recent review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro Plus **Run ID**: `f9ed4023-0d83-4a01-82ff-b8cb6fafa3cb` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 35ad28b910f34848281a2cc54d393dd82188526a and 0044c2c12a2e699c669f57330060a094f5ed4a55. </details> <details> <summary>📒 Files selected for processing (14)</summary> * `.github/workflows/deploy.yml` * `AUDIT.md` * `Headers/JSI.h` * `Headers/RCTHost.h` * `Headers/Utils.h` * `Headers/jsi/instrumentation.h` * `Headers/jsi/jsi-inl.h` * `Headers/jsi/jsi.h` * `Makefile` * `Sources/JSI.mm` * `Sources/LoaderConfig.m` * `Sources/Sideloading.x` * `Sources/Tweak.xm` * `Sources/Utils.m` </details> </details> --- <!-- walkthrough_start --> <details> <summary>📝 Walkthrough</summary> ## Walkthrough The change adds a JSI API and runtime evaluator for Hermes bytecode and source scripts. It injects scripts through `RCTHost` on Bridgeless React Native and keeps a guarded bridge fallback. It also updates loader persistence, build inputs, logging, audit documentation, and patcher verification. ### Changes **iOS runtime injection** |Layer / File(s)|Summary| |---|---| |**JSI and runtime contracts** <br> `Headers/jsi/*`, `Headers/JSI.h`, `Headers/RCTHost.h`, `Headers/Utils.h`, `Makefile`|Adds the public JSI API, inline runtime operations, instrumentation interface, Objective-C runtime hook declarations, bytecode detection declaration, and C++17 source discovery.| |**Script evaluation and bytecode handling** <br> `Sources/JSI.mm`, `Sources/Utils.m`|Detects Hermes bytecode and evaluates bytecode or source text through a live JSI runtime.| |**Injection orchestration and host hooks** <br> `Sources/Tweak.xm`, `Sources/LoaderConfig.m`|Centralizes script loading and execution, adds the `RCTHost` hook, guards duplicate injection, preserves the legacy bridge fallback, and adds loader configuration read/write methods.| |**Build, CI, and audit updates** <br> `Sources/Sideloading.x`, `.github/workflows/deploy.yml`, `AUDIT.md`|Corrects logging, verifies the IPA patcher checksum, and documents iOS fixes, injection behavior, device validation status, and feature gaps.| **Estimated code review effort:** 4 (Complex) | ~45 minutes ### Sequence Diagram(s) ```mermaid sequenceDiagram participant RCTHost participant Tweak participant JSI participant Runtime RCTHost->>Tweak: initialize runtime Tweak->>Tweak: runRevengeInjection Tweak->>JSI: evaluate Revenge scripts JSI->>Runtime: execute source or Hermes bytecode Runtime-->>JSI: return evaluation status JSI-->>Tweak: report execution result ``` </details> <!-- walkthrough_end --> <!-- finishing_touch_checkbox_start --> <details> <summary>✨ Finishing Touches</summary> <details> <summary>📝 Generate docstrings</summary> - [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> Create stacked PR - [ ] <!-- {"checkboxId": "3e1879ae-f29b-4d0d-8e06-d12b7ba33d98"} --> Commit on current branch </details> <details> <summary>🧪 Generate unit tests (beta)</summary> - [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Create PR with unit tests - [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} --> Commit unit tests in branch `ios-parity-audit` </details> </details> <!-- finishing_touch_checkbox_end --> <!-- tips_start --> --- Thanks for using [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=everestmcarthur/revenge-tweak&utm_content=1)! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. <details> <summary>❤️ Share</summary> - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code) </details> <sub>Comment `@coderabbitai help` to get the list of available commands.</sub> <!-- tips_end -->
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: SheWhoReignsSupreme/revenge-tweak#1
No description provided.