Skip to content

feat: complete New Architecture (Turbo Modules) support for Android & IOS, closes #85#86

Open
J4cKr0y wants to merge 1 commit intoa7medev:mainfrom
J4cKr0y:feat/new-arch-support-android
Open

feat: complete New Architecture (Turbo Modules) support for Android & IOS, closes #85#86
J4cKr0y wants to merge 1 commit intoa7medev:mainfrom
J4cKr0y:feat/new-arch-support-android

Conversation

@J4cKr0y
Copy link
Copy Markdown

@J4cKr0y J4cKr0y commented Apr 23, 2026

Feat(android, ios): migrate to New Architecture (TurboModules) with backward compatibility

Migrate @react-native-ml-kit/text-recognition to the React Native New Architecture (JSI/TurboModules) while preserving full support for the old Bridge-based architecture.

Android:

  • TextRecognitionModule now extends NativeTextRecognitionSpec (Codegen) instead of ReactContextBaseJavaModule business logic unchanged
  • TextRecognitionPackage split into two sourcesets: src/newarch/ ? extends TurboReactPackage (New Arch) src/oldarch/ ? implements ReactPackage (Old Arch)
  • build.gradle updated with isNewArchitectureEnabled() guard and Codegen configuration

iOS:

  • Add RNTextRecognition.h/.mm implementing the MLKit text recognition logic in Objective-C++
  • getTurboModule() wired behind #ifdef RCT_NEW_ARCH_ENABLED no impact on old arch builds
  • text-recognition.podspec updated with conditional New Arch dependencies (React-Codegen, RCT-Folly, ReactCommon/turbomodule/core)

JS:

  • Add NativeTextRecognition.ts as the Codegen spec (source of truth)
  • Add src/index.ts with dual-arch routing via global.__turboModuleProxy

Tests:

  • TextRecognitionModuleTest.java (JUnit 4 + Mockito + Robolectric)
  • RNTextRecognitionTests.swift (XCTest)
  • textRecognition.test.ts (Jest) covering result structure, script parameter, error propagation, and dual-arch routing

Tooling:

  • Replace deprecated babel-preset-react-native with metro-react-native-babel-preset
  • Add babel.config.js, tsconfig.json, jest.setup.js
  • Add TESTING.md with setup instructions for all three platforms

BREAKING CHANGE: none. Old arch users are unafected.

…ackward compatibility

Migrate @react-native-ml-kit/text-recognition to the React Native New
Architecture (JSI/TurboModules) while preserving full support for the
old Bridge-based architecture.

Android:
- TextRecognitionModule now extends NativeTextRecognitionSpec (Codegen)
  instead of ReactContextBaseJavaModule � business logic unchanged
- TextRecognitionPackage split into two sourcesets:
    src/newarch/ ? extends TurboReactPackage (New Arch)
    src/oldarch/ ? implements ReactPackage (Old Arch)
- build.gradle updated with isNewArchitectureEnabled() guard and
  Codegen configuration

iOS:
- Add RNTextRecognition.h/.mm implementing the MLKit text recognition
  logic in Objective-C++
- getTurboModule() wired behind #ifdef RCT_NEW_ARCH_ENABLED � no impact
  on old arch builds
- text-recognition.podspec updated with conditional New Arch dependencies
  (React-Codegen, RCT-Folly, ReactCommon/turbomodule/core)

JS:
- Add NativeTextRecognition.ts as the Codegen spec (source of truth)
- Add src/index.ts with dual-arch routing via global.__turboModuleProxy

Tests:
- TextRecognitionModuleTest.java (JUnit 4 + Mockito + Robolectric)
- RNTextRecognitionTests.swift (XCTest)
- textRecognition.test.ts (Jest) covering result structure, script
  parameter, error propagation, and dual-arch routing

Tooling:
- Replace deprecated babel-preset-react-native with
  metro-react-native-babel-preset
- Add babel.config.js, tsconfig.json, jest.setup.js
- Add TESTING.md with setup instructions for all three platforms

BREAKING CHANGE: none � old arch users are unaffected
@J4cKr0y J4cKr0y mentioned this pull request Apr 23, 2026
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant