// Auto-generated from spec
abstractclassNativeCalculatorSpec(ctx:ReactApplicationContext):ReactContextBaseJavaModule(ctx),TurboModule{@ReactMethod(isBlockingSynchronousMethod=true)abstractfunadd(a:Double,b:Double):Double}// User implementation
classCalculatorModule(ctx:ReactApplicationContext):NativeCalculatorSpec(ctx){overridefungetName()="Calculator"overridefunadd(a:Double,b:Double)=a+b}
// Install host function on JS runtime
runtime.global().setProperty(runtime,"nativeCompute",jsi::Function::createFromHostFunction(runtime,jsi::PropNameID::forAscii(runtime,"nativeCompute"),1,[](jsi::Runtime&rt,constjsi::Value&,constjsi::Value*args,size_t){doublex=args[0].asNumber();returnjsi::Value(heavyCompute(x));// sync, no bridge
}));
Enable New Arch (RN 0.77)
# iOSRCT_NEW_ARCH_ENABLED=1 bundle exec pod install
# Android (gradle.properties)newArchEnabled=truehermesEnabled=true
매 결정 기준
상황
Approach
New RN project (2026)
New Arch + Hermes default
Legacy app w/ many native modules
gradual interop migration
Heavy synchronous native call
TurboModule (JSI)
Custom view (canvas, video)
Fabric component
Sharing C++ core (cross-platform)
JSI host objects
기본값: New Arch enabled — 매 2026 default, legacy bridge는 deprecated.