Expo vs Turbo Modules

Expo Modules Versus Turbo Native Modules

Side by side:

Turbo Native Modules and Expo 6,418 Modules compared
Turbo Native Module Expo Module
Contract TypeScript spec, Codegen Kotlin/Swift DSL, TS declaration by hand
Files for one Android module Spec, module, package, MainApplication edit Module class, config JSON
Registration Manual, or a library's autolinking Autolinked from modules/ or node_modules
Survives expo prebuild Only with a config plugin (Config Plugins) Yes
C++ cross-platform modules Yes (C++ Turbo Modules) No

Choose an Expo Module for app-specific native code in an Expo project: less boilerplate, one DSL for Kotlin and Swift, nothing to redo after prebuild. Choose a Turbo Native Module when you publish a library for projects that do not use Expo, when you want Codegen's compile-time checking of the JavaScript contract, or when the logic should be written once in C++ and shared by both platforms. Both call through JSI, so performance does not decide it.