Cross-compiled apps are built using the same base web technology as hybrid apps. They are augmented by the use of frameworks and libraries that “transform” your app into native code for each device at compile time. However, cross-compiled apps do not use WebViews for rendering the UI like some hybrid apps. Instead, most cross-compiled apps leverage native UI controls. These interfaces are developed generically and use cross-compiling service provided libraries to abstract the development from the native language UI components. When handled appropriately, a majority of the code is shared between iOS and Android app efforts.
Since these cross-compiled apps are also running natively on the device, they enjoy full access to native APIs. As a result, cross-compiled apps are successful for both consumer applications and enterprise-class operational apps such as those used in logistics and shipping industries. Cross-compiled apps provide access to device APIs and therefore provide a fuller and richer app experience that is often more performant than progressive web or hybrid apps.
Flutter (a recent entrant into the cross-compiled app development landscape) is gaining increasing attention and steam. Like PWAs, Flutter’s cross-compiled app approach also enjoys the support and development investment of Google. These apps are built using a new language, Dart, which is also supported by Google. Flutter apps run inside a Flutter shell natively.
React Native, owned by Facebook, is also undergoing yet another reinvestment cycle and rework. Early promises suggest it will achieve performance at near-native levels. These investments are sending a loud and clear message: the future is heading towards cross-compiled app development.
Discoverability: App store; search engines; direct links to the app stores
Cross-compiled apps are found, distributed, and installed from app marketplace stores
App updates: App store
Since React Native applications are simply native applications, they get updated via the app marketplace for each platform.
Supported devices: Dependent on approach
Each cross-compiling framework comes with certain reach, and will need to be evaluated on a case-by-case basis.
Network dependency: Some functionality without connectivity
Since these apps run natively on the phone, the amount of network dependency varies by
action. A cross-compiled application could run entirely offline.
Certification: Certification is required
Cross-compiled apps go through the same approval process as native apps, and often have roughly the same turnaround time.
Codebase: Reuse possible
Because they are cross-compiled, the codebase is largely shared between platforms. There are aspects of native code that need to be written for each platform the app ships.
Performance: Very strong, close to native performance
Because these apps are running inside a local environment on the device itself, performance cannot exceed native app performance. That said, this is the highest performance approach for non-native app development.
Time to market: Not the fastest, not the slowest
Cross-compiled apps are quicker than building for two platforms. However, they take longer to build than one native app for one platform.