Replace react-native-piratechain with react-native-pirate-wallet - #6021
Open
j0ntz wants to merge 2 commits into
Open
Replace react-native-piratechain with react-native-pirate-wallet#6021j0ntz wants to merge 2 commits into
j0ntz wants to merge 2 commits into
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
2 tasks
peachbits
reviewed
Jun 16, 2026
j0ntz
force-pushed
the
agent/1214721783909451
branch
from
August 4, 2026 03:49
bd3b5d1 to
6b506f3
Compare
The send scene's address tile renders Enter/Myself/Scan/Paste as icon buttons whose labels only appear in an aggregated parent accessibilityText, so maestro cannot select them by text and every automated send drive had to fall back to coordinate taps.
j0ntz
force-pushed
the
agent/1214721783909451
branch
from
August 12, 2026 00:37
6b506f3 to
54f256b
Compare
The Pirate Chain team's orchard upgrade ships a unified SDK whose react-native binding (react-native-pirate-wallet) replaces the react-native-piratechain wrapper Edge wrote. The reimplemented piratechain plugin in edge-currency-accountbased consumes the new module through the same makePiratechainIo nativeIo bridge, so no GUI code changes are needed beyond the dependency swap. The package is not yet published to npm (it only exists as a zip asset on PirateNetwork GitHub releases), so the dependency points at a vendored sibling checkout (file:../react-native-pirate-wallet) staged from the official v1.1.4 release artifacts. Swap to a hosted tgz or npm version once a packaging decision is made.
j0ntz
force-pushed
the
agent/1214721783909451
branch
from
August 12, 2026 03:26
54f256b to
f39d1ec
Compare
j0ntz
marked this pull request as ready for review
August 12, 2026 03:26
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f39d1ec. Configure here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Technical Design Document
piratechain-sdk-v115-reconcile.md
CHANGELOG
Does this branch warrant an entry to the CHANGELOG?
Dependencies
EdgeApp/edge-currency-accountbased#1055
Requirements
If you have made any visual changes to the GUI. Make sure you have:
Description
Asana: https://app.asana.com/0/1215088146871429/1214721783909451
Swaps
react-native-piratechainforreact-native-pirate-wallet@0.2.1, the Pirate Chain team's react-native binding from their unified orchard-upgrade SDK (Pirate-Unified-Light-Wallet). The reimplemented piratechain plugin (EdgeApp/edge-currency-accountbased#1055) consumes it through the existingmakePiratechainIonativeIo bridge, so the dependency swap is the only GUI change.The package went up on npm on 2026-08-06, which retires the packaging question this PR was previously parked on: the dependency is now a plain version pin, not a
file:sibling.How the native artifacts arrive
The published wrapper carries only JS and the ObjC/Swift/Kotlin bridge (18 files, 81KB unpacked). The native binaries ship as four
optionalDependenciespinned to the exact wrapper version:react-native-pirate-wallet-androidarm64-v8a(89MB) andarmeabi-v7a(79MB)react-native-pirate-wallet-android-x86_64x86_64(93MB)react-native-pirate-wallet-ios-devicePirateWalletNative.xcframeworkios-arm64slice (192MB)react-native-pirate-wallet-ios-simulatorPirateWalletNative.xcframeworkios-arm64_x86_64-simulatorslice (368MB)The wrapper's
postinstallhard-links the two iOS slices into thePirateWalletNative.xcframeworkits podspec vendors. This repo setsignore-scripts=truein.npmrc, so that hook can never fire andpod installwould vendor a framework that does not exist. The assembly call therefore lives inscripts/prepare.sh, alongside thepatch-package/jetify/ native-header steps that are already there for the same reason, and ahead ofprepare.ios. It no-ops off macOS, and the two iOS packages declareos: ["darwin"], so Linux CI skips 560MB it cannot use.Verified from a clean
git clone+npm ci+npm run prepare: the xcframework assembles with both slices and all three Android ABIs land.Also here
testIDs on the send scene's address-tile actions (Enter / Myself / Scan / Paste). They render as icon buttons whose labels only appear in an aggregated parentaccessibilityText, so maestro could not select them by text and every automated send drive fell back to coordinate taps.Known issue: the iOS binary does not link on current
developBuilding this branch for the iOS simulator fails at link:
__TEXTreaches 184MB against the arm64 ±128MB branch range, and the linker cannot place a branch island. This is not specific to the npm swap: the same 373MB Pirate library linked fine on 2026-08-04, and the failure reproduces with the older vendored copy. The static-library payload is now Pirate 373MB (~187MB arm64),zcashlc111MB,monero-module53MB,zano-module30MB, withzcashlcandpirate_ffi_nativeeach carrying a full Rust std.Tried and refuted, each a real relink:
DEAD_CODE_STRIPPING=YES(displacement unchanged;-dead_stripis already in the link line), moving-l"pirate_ffi_native"last (172.4MB → 169.2MB), and-Wl,-ld_classic(fails identically from inside LMDB). Locally excludingreact-native-zcash,react-native-moneroandreact-native-zanofrom autolinking links the app, which is how the ARRR testing below was done. A real fix needs the Pirate library as a dynamic framework, or a smaller Rust staticlib, and is worth raising with the Pirate team alongside the broadcast issue.Testing
On the iOS simulator, against
edge-currency-accountbased#1055linked in viaupdotand the three other large native libraries locally excluded so the binary links:My Pirate 2andMy Piratescanned from their birthdays toSYNCEDat ~1,800 blocks/sec,localHeight == targetHeight == 4085959, wallet DBs growing 1.5MB → 233MB, sync banner cleared. This needed theset_lightd_endpointfix in Reimplement Pirate Chain plugin over react-native-pirate-wallet edge-currency-accountbased#1055; without it both wallets sat atstage: "Headers",blocksPerSecond: 0indefinitely.Library/Application Support/PirateWallet/accounts/edge-pirate-device/directory, and the send scene derives another wallet's shielded z-address without switching namespaces.Broadcast failed: Status error: status: Cancelled, message: "Timeout expired", against two different lightwalletd nodes. No principal moved. Details in Reimplement Pirate Chain plugin over react-native-pirate-wallet edge-currency-accountbased#1055.