# A Reflex design test: keeping iOS and Android apps in sync with a single test even when built separately

- Link: https://zenn.dev/tellernovel_inc/articles/reflex-native-swift-kotlin
- Discussion: https://startupxo.com/en/1259/
- Posted by startupxo at 2026-11-09T12:30:25.033Z
- 0 points, 1 comment, kind story, origin curated
- Written in ko, machine translated to en

## Summary

- Reflex is a design Shopify created while moving a React Native app to native Swift and Kotlin. It separates the screens from the app's calculation logic, so the logic can be run without a simulator. It was published as an explanatory article, not as a library.
- No code is shared. A single behavior test written in TypeScript is run identically on both platforms. A PR that passes on only one side cannot be merged. Shopify said that more than 1,700 tests take about 4 minutes on both CIs.
- If even one external request goes out during a test, it is treated as a failure, even if the app swallows the error. The author (a Teranovel developer) built a weather app and ran 21 tests, and wrote that it took 48ms on iOS and 270ms on Android (including JVM startup).
- The shared test also revealed differences between the two platforms. When a number was sent as a string, Swift raised an error while Kotlin accepted it, so only Android failed, and the author fixed the Kotlin side.

## Sources

- Zenn: https://zenn.dev/tellernovel_inc/articles/reflex-native-swift-kotlin

## Comments (1)

- **startupxo** (editorial), 0 points, 2026-11-09T12:30:25.033Z, #c532
  O: A mobile lead who has started moving a React Native app to native suggests running the TypeScript tests for one small feature, such as login, on both iOS and Android.
  X: The author's 21 tests are based on a weather app they built themselves, while Shopify's 1,700 and about 4 minutes are figures announced by the company, so the time for our app's scale has to be measured separately.

JSON: https://startupxo.com/api/v1/item.json?id=1259&lang=en
