- iOS: replace
_methodQueueivar with staticdispatch_onceto fix build on RN 0.83+ with New Architecture (#347)
playground-rn: bare React Native 0.83.9 test app with New Architectureplayground-expo: Expo SDK 55.0.24 test app with New Architecture- Maestro E2E flows now use
${APP_ID}env var for cross-app reuse - npm scripts:
test:e2e:expo:ios,test:e2e:expo:android,test:e2e:rn:ios,test:e2e:rn:android
- Export
EncryptionMethodsenum from JS entry point - Playground apps read library version dynamically from
package.json - Removed debug-specific Maestro flows (
connect-metro,debug-zip)
- TurboModule support for React Native New Architecture
- TypeScript specification with Codegen integration
- Playground app with Expo Development Builds
- Jest test suite with TurboModule integration tests
- Maestro E2E test flow for Android Assets (
assets.yaml) - Playground
listFilesRecursiveutility for displaying nested extracted files
- iOS implementation converted from RCTBridgeModule to TurboModule protocol
- Android implementation converted from ReactContextBaseJavaModule to NativeZipArchiveSpec
- JS entry point now uses TurboModuleRegistry with NativeModules fallback
- Minimum React Native version: 0.70.0
- Minimum React version: 18.0.0
- Minimum Android API: 23
- Android
unzipAssetsnow handles compressed assets (fallback fromopenFd()toInputStream.available()) - Android
processZipnull check forf.listFiles()to prevent NPE - iOS
zipFolderWithPasswordencryption default consistency (empty string → standard ZipCrypto) - iOS old-arch fallback with
#ifdef RCT_NEW_ARCH_ENABLEDguards - Android
unzipWithPasswordresolves withdestDirectorystring instead of array - Android missing
returnstatements afterpromise.reject()in multiple methods - Android
updateProgress(1,1)moved outside loop inprocessZip - README broken markdown image link
- Legacy Native Module APIs (RCT_EXPORT_METHOD, @ReactMethod)