2026๋ React Native ์๋ก์ด ์ํคํ ์ฒ: Hermes V1, ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋์ ๋ฉด์ ์ง๋ฌธ
React Native ์๋ก์ด ์ํคํ ์ฒ ์ฌ์ธต ๋ถ์. Hermes V1 ์์ง, ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋, TurboModules, Fabric ๋ ๋๋ฌ์ ๊ธฐ์ ์ ์ธ๋ถ์ฌํญ, ์ฑ๋ฅ ๋ฒค์น๋งํฌ, ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋, ๊ธฐ์ ๋ฉด์ Q&A๋ฅผ ํฌํจํฉ๋๋ค.

React Native์ ์๋ก์ด ์ํคํ ์ฒ๋ 2026๋ ์ ์์ ํ ์ฑ์๊ธฐ์ ๋๋ฌํ์ต๋๋ค. React Native 0.84์์ Hermes V1์ด ๊ธฐ๋ณธ ์์ง์ผ๋ก ์ฑํ๋์๊ณ , 0.85์์๋ ๋ ๊ฑฐ์ ๋ธ๋ฆฟ์ง์ ๋ชจ๋ ํ์ ์ด ์ ๊ฑฐ๋์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ํคํ ์ฒ ํ๋๊ทธ๋ ํธํ์ฑ ๋ ์ด์ด๋ฅผ ์ ๊ฒฝ ์ธ ํ์ ์์ด ๋ค์ดํฐ๋ธ์ ๊ทผ์ ํ ์ฑ๋ฅ์ ์ป์ ์ ์๊ฒ ๋์์ต๋๋ค.
์๋ก์ด ์ํคํ ์ฒ(Fabric + TurboModules + ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋ + Hermes V1)๋ ๋ ์ด์ ์ ํ ์ฌํญ์ด ์๋๋๋ค. React Native 0.84 ์ดํ์ ๋ชจ๋ ํ๋ก์ ํธ์์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค์์ ๋ ๊ฑฐ์ ๋ธ๋ฆฟ์ง ์ฝ๋๋ฅผ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
React Native ์ํคํ ์ฒ ์คํ์ ๋ณํ
๊ธฐ์กด React Native ์ํคํ ์ฒ๋ JavaScript์ ๋ค์ดํฐ๋ธ ์ฝ๋ ์ฌ์ด์ ๋ฉ์์ง ์ ๋ฌ์ ์ํด ๋จ์ผ ์ค๋ ๋ ๋น๋๊ธฐ JSON ๋ธ๋ฆฟ์ง์ ์์กดํ์ต๋๋ค. ํฐ์น ์ด๋ฒคํธ, ๋ ์ด์์ ๊ณ์ฐ, ๋ชจ๋ ํธ์ถ ๋ฑ ๋ชจ๋ ์ํธ์์ฉ์ด ์ด ๋ณ๋ชฉ์ ํต๊ณผํด์ผ ํ์ต๋๋ค. ์๋ก์ด ์ํคํ ์ฒ๋ ์ด ํ์ดํ๋ผ์ธ์ ๊ฐ ๋ ์ด์ด๋ฅผ ์ง์ ์ ์ด๊ณ ๋๊ธฐ์ ์ธ ๋์์ผ๋ก ๊ต์ฒดํฉ๋๋ค.
| ๋ ์ด์ด | ๊ธฐ์กด ์ํคํ ์ฒ | ์๋ก์ด ์ํคํ ์ฒ | |--------|-------------|----------------| | JS ์์ง | JavaScriptCore | Hermes V1 (๋ฐ์ดํธ์ฝ๋ + JIT) | | ๋ ๋๋ฌ | Paper (๋น๋๊ธฐ ๋ธ๋ฆฟ์ง) | Fabric (๋๊ธฐ, ๊ณต์ C++) | | ๋ค์ดํฐ๋ธ ๋ชจ๋ | ๋ธ๋ฆฟ์ง ๋ชจ๋ (JSON ์ง๋ ฌํ) | TurboModules (JSI, ์ง์ ํธ์ถ) | | ํต์ | ๋น๋๊ธฐ JSON ๋ธ๋ฆฟ์ง | JSI (JavaScript Interface) | | ์ด๊ธฐํ | ๋ธ๋ฆฟ์ง ์ด๊ธฐํ + ๋ชจ๋ ๋ฑ๋ก | ๋ธ๋ฆฟ์ง๋ฆฌ์ค (์ง์ฐ, ์จ๋๋งจ๋) |
JSI(JavaScript Interface)๊ฐ ์ด ๋ชจ๋ ๊ฒ์ ๊ธฐ๋ฐ์ ๋๋ค. ๋ชจ๋ ํธ์ถ์ JSON์ผ๋ก ์ง๋ ฌํํ์ฌ ํ์ ์ ๋ฌํ๋ ๋์ , JSI๋ C++ ํธ์คํธ ๊ฐ์ฒด๋ฅผ JavaScript์ ์ง์ ๋ ธ์ถํฉ๋๋ค. ์ด์ ์๋ JSON ์ธ์ฝ๋ฉ, ๋ธ๋ฆฟ์ง ํ์, JSON ๋์ฝ๋ฉ์ด ํ์ํ๋ TurboModule ํธ์ถ์ด ์ด์ ๋ ์ง์ ์ ์ธ ํจ์ ํธ์ถ๋ก ์๋ฃ๋ฉ๋๋ค.
Hermes V1: ๊ธฐ๋ณธ JavaScript ์์ง
Hermes V1์ 2026๋ 2์์ ์ถ์๋ React Native 0.84์์ ๊ธฐ๋ณธ ์์ง์ด ๋์์ต๋๋ค. ์ด๊ฒ์ ์ด์ Hermes ๋ฒ์ ์ ์ ์ง์ ์ ๋ฐ์ดํธ๊ฐ ์๋๋ผ ์ปดํ์ผ๋ฌ์ VM์ ์์ ํ ์ฌ์์ฑ์ ๋๋ค.
๊ฐ์ ์ฌํญ์ ๋ค ๊ฐ์ง ์์ญ์ ๊ฑธ์ณ ์์ต๋๋ค. ์๋ก์ด ๋ฐ์ดํธ์ฝ๋ ํ์์ ๊ฐ์ถ ์ฌ์์ฑ๋ ์ปดํ์ผ๋ฌ, ๊ฐ์ ๋ JIT ์ปดํ์ผ๋ฌ, Hades ๋์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ, ๊ทธ๋ฆฌ๊ณ React 19์์ ์ฌ์ฉ๋๋ ์ต์ JavaScript ํจํด์ ๋ํ ํฅ์๋ ์ง์์ ๋๋ค.
// Comparing startup and runtime metrics
// Hermes V1 bytecode is pre-compiled at build time
// No parse-compile step at runtime = faster cold starts
// Cold start comparison (production build, Pixel 8):
// Hermes V1: ~850ms TTI
// JSC: ~1200ms TTI (29% slower)
// Memory footprint (complex app, 50+ screens):
// Hermes V1: ~45MB baseline
// JSC: ~72MB baseline (38% more)
// GC pause comparison (FlatList, 500+ complex cells):
// Hermes V1 (Hades): <12ms max pause
// Old Hermes: ~45ms occasional pauses
// Result: zero dropped frames in scroll benchmarks๋์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ธ Hades๋ ํน๋ณํ ์ฃผ๋ชฉ์ ๋ฐ์ ๋งํฉ๋๋ค. ์ด์ Hermes ๋ฒ์ ์ stop-the-world ๋ฐฉ์์ GC๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์คํธ ์คํฌ๋กค ์ค์ ๊ฐํ์ ์ผ๋ก ๋์ ๋ณด์ด๋ ๋๊น์ ์ ๋ฐํ์ต๋๋ค. Hades๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ๋์์ ์ปฌ๋ ์ ์ ์คํํ์ฌ GC ์ผ์ ์ ์ง๋ฅผ 12ms ๋ฏธ๋ง์ผ๋ก ์ ์งํฉ๋๋ค. ๋ณต์กํ ์ ์ ๊ฐ์ง ๊ธด ๋ฆฌ์คํธ๋ฅผ ๋ ๋๋งํ๋ ์ฑ์์ JavaScript ์ธก ํ๋ ์ ๋๋กญ์ ๋ง์ง๋ง ์์ธ์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค.
Hermes V1์ React Native 0.84์์ WebAssembly ์ง์๋ ๋์ ํ์ต๋๋ค. Rust, C, C++๋ก ์์ฑ๋ ์ฑ๋ฅ ํฌ๋ฆฌํฐ์ปฌ ์ฝ๋๋ฅผ WASM์ผ๋ก ์ปดํ์ผํ์ฌ ์ฑ ๋ด์์ ์คํํ ์ ์์ผ๋ฉฐ, ํ๋ซํผ๋ณ ๋ฐ์ธ๋ฉ์ ์์ฑํ์ง ์๊ณ ๋ ๋๋ฐ์ด์ค ์์ AI ์ถ๋ก , ๊ณ ๋ฐ๋ ์์น ์ฐ์ฐ, ๊ธฐ์กด ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
Fabric ๋ ๋๋ฌ: ๋๊ธฐ ๋ ์ด์์๊ณผ ๋ ๋๋ง
Fabric์ iOS์ Android์์ ๊ณต์ ํ๋ C++ ์ฝ์ด๋ฅผ ๊ฐ์ง ๋ ๋๋ฌ๋ก Paper๋ฅผ ๋์ฒดํฉ๋๋ค. ํต์ฌ์ ์ธ ์ฐจ์ด์ ์ ๋ ์ด์์ ๊ณ์ฐ์ด ๋ธ๋ฆฟ์ง๋ฅผ ํตํด ๋น๋๊ธฐ์ ์ผ๋ก ์ํ๋๋ ๊ฒ์ด ์๋๋ผ JavaScript ์ค๋ ๋์์ ๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ค๋ ๊ฒ์ ๋๋ค.
์ด ๋๊ธฐ ๋ชจ๋ธ์ Paper์์๋ ๋ถ๊ฐ๋ฅํ๋ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
-
๋์ ๋ ๋๋ง ์ง์: Fabric์ React 19์ ๋์ ๊ธฐ๋ฅ๊ณผ ํตํฉ๋ฉ๋๋ค. Fabric์ด ๋ ๋๋ง์ ์ค๋จํ๊ณ ์ฌ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ Transitions, Suspense ๊ฒฝ๊ณ,
useTransition์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํฉ๋๋ค. -
์ง์ C++ ๋ ์ด์์: Yoga(๋ ์ด์์ ์์ง)๊ฐ JavaScript ๋ฐํ์๊ณผ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ์คํ๋ฉ๋๋ค. ํ๋ ์ค๋ฐ์ค ๊ณ์ฐ์ ๋ํ ์ง๋ ฌํ ์ค๋ฒํค๋๊ฐ ์์ต๋๋ค.
// Concurrent features work correctly with Fabric
import React, { useState, useTransition } from 'react'
import { View, Text, FlatList, TextInput, StyleSheet } from 'react-native'
type Item = { id: string; name: string; category: string }
function SearchableList({ items }: { items: Item[] }) {
const [query, setQuery] = useState('')
const [filtered, setFiltered] = useState(items)
const [isPending, startTransition] = useTransition()
const handleSearch = (text: string) => {
setQuery(text) // Urgent: update input immediately
startTransition(() => {
// Non-urgent: filter can be deferred
const result = items.filter(item =>
item.name.toLowerCase().includes(text.toLowerCase())
)
setFiltered(result)
})
}
return (
<View style={styles.container}>
<TextInput
value={query}
onChangeText={handleSearch}
placeholder="Search items..."
style={styles.input}
/>
{isPending && <Text style={styles.pending}>Filtering...</Text>}
<FlatList
data={filtered}
keyExtractor={item => item.id}
renderItem={({ item }) => (
<View style={styles.row}>
<Text>{item.name}</Text>
</View>
)}
/>
</View>
)
}
const styles = StyleSheet.create({
container: { flex: 1, padding: 16 },
input: { borderWidth: 1, borderColor: '#ccc', padding: 12, marginBottom: 8 },
pending: { color: '#888', marginBottom: 4 },
row: { padding: 12, borderBottomWidth: 1, borderBottomColor: '#eee' },
})์ด ์์ ์ useTransition ํ
์ Fabric์ด ์ค์ํ ์ด์ ๋ฅผ ๋ณด์ฌ์ค๋๋ค. Paper์์๋ ๋ ๋๋ฌ๊ฐ ์งํ ์ค์ธ ๋ ๋๋ง์ ์ค๋จํ ์ ์์๊ธฐ ๋๋ฌธ์ startTransition์ด ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. Fabric์ React 19 ๋์ ๋ชจ๋์์ ํตํฉ์ผ๋ก ์ง์ฐ ์
๋ฐ์ดํธ๊ฐ ์ค๊ณ๋ ๋๋ก ์๋ํ๋ฉฐ, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์์ฒ ๊ฐ์ ํญ๋ชฉ์ ํํฐ๋งํ๋ฉด์๋ ํ
์คํธ ์
๋ ฅ์ ์๋ต์ฑ์ด ์ ์ง๋ฉ๋๋ค.
TurboModules์ JSI: ์ง๋ ฌํ ์ค๋ฒํค๋ ์ ๊ฑฐ
TurboModules๋ ๊ธฐ์กด์ NativeModules ์์คํ ์ ๋์ฒดํฉ๋๋ค. ์ฑ๋ฅ ์ฐจ์ด๋ JSON ์ง๋ ฌํ์ ์์ ํ ์ ๊ฑฐ์์ ๋น๋กฏ๋ฉ๋๋ค. ๋ธ๋ฆฟ์ง ๋ชจ๋ ํธ์ถ์ ๋ค์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋์ต๋๋ค: JS ๊ฐ์ฒด โ JSON.stringify โ ๋ธ๋ฆฟ์ง ํ โ JSON.parse โ ๋ค์ดํฐ๋ธ ํธ์ถ โ JSON.stringify โ ๋ธ๋ฆฟ์ง ํ โ JSON.parse โ JS ์ฝ๋ฐฑ. TurboModule ํธ์ถ์ JSI๋ฅผ ํตํ ์ง์ ์ ์ธ C++ ํจ์ ํธ์ถ์ ๋๋ค.
// TurboModule spec using the Codegen
import type { TurboModule } from 'react-native'
import { TurboModuleRegistry } from 'react-native'
export interface Spec extends TurboModule {
// Synchronous: returns immediately, no bridge round-trip
getDeviceModel(): string
getOSVersion(): string
getBatteryLevel(): number
// Asynchronous: for operations that genuinely need async
getStorageUsage(): Promise<{ used: number; total: number }>
}
export default TurboModuleRegistry.getEnforcing<Spec>('DeviceInfo')// Native Android implementation of the TurboModule
package com.app.modules
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.bridge.WritableNativeMap
import com.facebook.react.module.annotations.ReactModule
@ReactModule(name = "DeviceInfo")
class DeviceInfoModule(reactContext: ReactApplicationContext) :
NativeDeviceInfoSpec(reactContext) {
// Synchronous via JSI - no bridge, no JSON, no queue
override fun getDeviceModel(): String {
return android.os.Build.MODEL
}
override fun getOSVersion(): String {
return "Android ${android.os.Build.VERSION.RELEASE}"
}
override fun getBatteryLevel(): Double {
val manager = reactApplicationContext
.getSystemService(android.content.Context.BATTERY_SERVICE)
as android.os.BatteryManager
return manager.getIntProperty(
android.os.BatteryManager.BATTERY_PROPERTY_CAPACITY
).toDouble()
}
override fun getStorageUsage(
promise: com.facebook.react.bridge.Promise
) {
val stat = android.os.StatFs(
android.os.Environment.getDataDirectory().path
)
val map = WritableNativeMap().apply {
putDouble("used", (stat.totalBytes - stat.availableBytes).toDouble())
putDouble("total", stat.totalBytes.toDouble())
}
promise.resolve(map)
}
override fun getName(): String = "DeviceInfo"
}ํต์ฌ ์ฌํญ์ getDeviceModel(), getOSVersion(), getBatteryLevel()์ด ๋๊ธฐ์ ์ด๋ผ๋ ์ ์
๋๋ค. JavaScript ์ค๋ ๋๊ฐ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์ง์ ํธ์ถํ๊ณ ๋์ผํ ํฑ์์ ๋ฐํ ๊ฐ์ ๋ฐ์ต๋๋ค. Promise๋ ์ฝ๋ฐฑ๋ ๋ธ๋ฆฟ์ง ์๋ณต๋ ์์ต๋๋ค. ์ด๊ฒ์ JSI์ ์ํด์๋ง ๊ฐ๋ฅํฉ๋๋ค.
๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋: ๋ฌด์์ด ์ ๊ฑฐ๋์๊ณ ์ ์ค์ํ๊ฐ
๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋๋ React Native 0.73์์ ๋์ ๋์ด 0.74์์ ๊ธฐ๋ณธ๊ฐ์ด ๋์์ต๋๋ค. Fabric๊ณผ TurboModules๊ฐ ์ฑํ๋ ํ์๋ ๊ธฐ์กด ๋ธ๋ฆฟ์ง๋ ๊ธ๋ก๋ฒ ์ด๋ฒคํธ ์ด๋ฏธํฐ, ํ์ด๋จธ, ์๋ฌ ํธ๋ค๋ง์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์์ ์ ์ด๊ธฐํ๋์์ต๋๋ค. ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋๋ ์ด๋ฌํ ๋๋จธ์ง ์์คํ ์ JSI ๊ธฐ๋ฐ ๊ตฌํ์ผ๋ก ์ด์ ํฉ๋๋ค.
์ค์ง์ ์ธ ์ํฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ ๋น ๋ฅธ ์์: ๋ธ๋ฆฟ์ง ์ด๊ธฐํ ์ค๋ฒํค๋๊ฐ ์์ต๋๋ค. ๋ฐํ์์ ์ง์ฐ ๋ก๋ฉ์ ํตํด ์ฑ์ด ์ค์ ๋ก ์ฌ์ฉํ๋ ๊ฒ๋ง ๋ถํธ์คํธ๋ฉํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ฐ์: ์์ ์ ๋ธ๋ฆฟ์ง ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ํ ๋น๋์ง ์์ต๋๋ค.
- ๊น๋ํ ์๋ฌ ํธ๋ค๋ง: ์๋ฌ ๋ฐ์ด๋๋ฆฌ์ ๊ธ๋ก๋ฒ ์๋ฌ ํธ๋ค๋ฌ๊ฐ ๋ธ๋ฆฟ์ง ํด๋ฐฑ ์์ด ์๋ก์ด ์ํคํ ์ฒ๋ฅผ ํตํด ์๋ํฉ๋๋ค.
React Native 0.82์์ ๊ธฐ์กด ๋ธ๋ฆฟ์ง๊ฐ ์๊ตฌ์ ์ผ๋ก ๋นํ์ฑํ๋์์ต๋๋ค. 2026๋ 4์์ ์ถ์๋ React Native 0.85์์๋ ๋ธ๋ฆฟ์ง ๊ด๋ จ ๋ชจ๋ ์ฝ๋๊ฐ ์ฝ๋๋ฒ ์ด์ค์์ ์ ๊ฑฐ๋์์ต๋๋ค. ํด๋ฐฑ ๊ฒฝ๋ก๋ ์กด์ฌํ์ง ์์ต๋๋ค.
ํ๋ก๋์ ๋ง์ด๊ทธ๋ ์ด์ : ์ค์ ์ฑ๋ฅ ๋ฒค์น๋งํฌ
๊ธฐ์กด ์ํคํ ์ฒ์์ ์๋ก์ด ์ํคํ ์ฒ๋ก์ ํ๋ก๋์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฃผ์ ๋ฉํธ๋ฆญ์์ ์ผ๊ด๋ ๊ฐ์ ์ ๋ณด์ฌ์ค๋๋ค.
| ๋ฉํธ๋ฆญ | ๊ธฐ์กด ์ํคํ ์ฒ | ์๋ก์ด ์ํคํ ์ฒ | ๊ฐ์ | |--------|-------------|----------------|------| | ์ฝ๋ ์คํํธ (TTI) | 1.4์ด | 0.8์ด | 43% ํฅ์ | | ํ๋ฉด ์ ํ | 180ms | 110ms | 39% ํฅ์ | | ๋ฉ๋ชจ๋ฆฌ ๊ธฐ์ค์ | 89MB | 66MB | 26% ๊ฐ์ | | JSโ๋ค์ดํฐ๋ธ ํธ์ถ | ~5ms (๋น๋๊ธฐ) | ~0.1ms (๋๊ธฐ) | 40๋ฐฐ ํฅ์ | | GC ์ต๋ ์ผ์ ์ ์ง | 45ms | 12ms | 73% ๋จ์ถ | | FlatList ์คํฌ๋กค (1000๊ฐ ํญ๋ชฉ) | ๊ฐํ์ ๋๊น | ๋ถ๋๋ฌ์ด 60fps | ํ๋ ์ ๋๋กญ ์์ |
์ฌ์ฉ์ ๋๋ฉด ํ์ง์ ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์น๋ ๊ฐ์ ์ GC ์ผ์ ์ ์ง์ ๋จ์ถ์ ๋๋ค. Hades๋ ์ปฌ๋ ์ ์ผ์ ์ ์ง๋ฅผ 1ํ๋ ์ ์์ฐ(60fps์์ 16.6ms) ๋ฏธ๋ง์ผ๋ก ์ ์งํ์ฌ, ๋ณต์กํ React Native ์ฑ์์ ๊ฐ์ฅ ํํ ๋์ ๋ณด์ด๋ ๋๊น์ ์์ธ์ ์ ๊ฑฐํฉ๋๋ค.
2026๋ ์ํ๊ณ ํธํ์ฑ
์ํ๊ณ๋ ์๋ก์ด ์ํคํ ์ฒ์ ์์ ํ ์๋ ดํ์ต๋๋ค. Expo SDK 55 ์ดํ ๋ฒ์ ์ ์๋ก์ด ์ํคํ ์ฒ์์๋ง ์คํ๋๋ฉฐ, ๋นํ์ฑํ ์ต์ ์ด ์์ต๋๋ค. ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธํ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- React Navigation 7.2 ์ด์: ๋ค์ดํฐ๋ธ ์คํ ์คํฌ๋ฆฐ์ ํฌํจํ ์์ ํ Fabric ์ง์
- Reanimated 3.5 ์ด์: React Native 0.85์ ๊ณต์ ์ ๋๋ฉ์ด์ ๋ฐฑ์๋
- Gesture Handler 2.16 ์ด์: JSI ๊ธฐ๋ฐ ์ง์ ์ ์ค์ฒ ์ธ์
- Vision Camera 4.0 ์ด์: JSI๋ฅผ ํตํ ํ๋ ์ ์ฒ๋ฆฌ
- Detox: ์๋ก์ด ์ํคํ ์ฒ ํธํ E2E ํ ์คํธ
Expo๋ฅผ ์ฌ์ฉํ๋ ํ์ ๊ฒฝ์ฐ, npx create-expo-app์ ์๋ก์ด ์ํคํ
์ฒ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ํ์ฑํ๋ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค. ๋ณ๋์ ์ค์ ์ด ํ์ํ์ง ์์ต๋๋ค.
React Native 0.75 ์ดํ ๋ฒ์ ์ ์ฑ์ ๋ง์ด๊ทธ๋ ์ด์
์ด ํ์์
๋๋ค. ๊ธฐ์กด ๋ธ๋ฆฟ์ง๋ 0.82 ์ด์์์ ์๊ตฌ์ ์ผ๋ก ์ ๊ฑฐ๋์์ต๋๋ค. TurboModule spec ์์ด NativeModules๋ฅผ ์ง์ ์ฌ์ฉํ๋ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์
๋ฐ์ดํธ๊ฐ ํ์ํฉ๋๋ค.
๊ธฐ์ ๋ฉด์ ์ง๋ฌธ: React Native ์๋ก์ด ์ํคํ ์ฒ
๋ค์ ์ง๋ฌธ๋ค์ 2026๋ ์๋์ด React Native ๋ฉด์ ์์ ์์ฃผ ์ถ์ ๋ฉ๋๋ค. ๊ฐ ๋ต๋ณ์ ์คํํ/์๋์ด ๋ ๋ฒจ์์ ๊ธฐ๋๋๋ ๊น์ด๋ฅผ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
Q1: ๊ธฐ์กด ๋ธ๋ฆฟ์ง์ JSI์ ์ฐจ์ด๋ฅผ ์ค๋ช ํ์ญ์์ค. JSI๊ฐ ๋๊ธฐ์ ๋ค์ดํฐ๋ธ ํธ์ถ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ธ๋ฆฟ์ง๋ JS์์ ๋ค์ดํฐ๋ธ๋ก์ ๋ชจ๋ ๋ฉ์์ง๋ฅผ JSON์ผ๋ก ์ง๋ ฌํํ๊ณ ๋น๋๊ธฐ ํ์ ๋ฃ์ ํ ๋ค์ดํฐ๋ธ ์ธก์์ ์ญ์ง๋ ฌํํ์ต๋๋ค. JSI(JavaScript Interface)๋ C++ ํธ์คํธ ๊ฐ์ฒด๋ฅผ JavaScript VM์ ์ง์ ๋ ธ์ถํฉ๋๋ค. JSI๋ฅผ ํตํด ๋ฑ๋ก๋ ๋ค์ดํฐ๋ธ ํจ์๋ ์ง๋ ฌํ๋ ํ์ ์์ด ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ์คํํ๋ ์ผ๋ฐ JavaScript ํจ์๋ก ๋ํ๋ฉ๋๋ค. JSI๋ ์ค๊ฐ ๋ฉ์์ง ํ ์์ด ๋์ผํ ์ค๋ ๋ ์ปจํ ์คํธ์์ ์๋ํ๋ฏ๋ก ๋๊ธฐ ํธ์ถ์ด ๊ฐ๋ฅํฉ๋๋ค.
Q2: Fabric ๋ ๋๋ฌ๋ Paper๊ฐ ํด๊ฒฐํ ์ ์์๋ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๊น?
Paper๋ ๋ธ๋ฆฟ์ง๋ฅผ ํตํด ๋น๋๊ธฐ์ ์ผ๋ก ๋ ๋๋งํ์ฌ React ๋์ ๊ธฐ๋ฅ์ ์ง์ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ์ต๋๋ค. Paper๋ ์งํ ์ค์ธ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์ค๋จํ ์ ์์๊ธฐ ๋๋ฌธ์ startTransition ํธ์ถ์ด ํจ๊ณผ๊ฐ ์์์ต๋๋ค. Fabric์ ๊ณต์ C++ ์ฝ๋๋ก ๋ ๋๋ง์ ๊ตฌํํ๊ณ React 19์ ๋ฆฌ์ปจ์ค๋ฌ์ ์ง์ ํตํฉํ์ฌ ๋์ ๋ ๋๋ง, Suspense, Transitions๋ฅผ ์ง์ํฉ๋๋ค. Yoga๋ฅผ ํตํ ๋ ์ด์์ ๊ณ์ฐ๋ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์์ ๋๊ธฐ์ ์ผ๋ก ์ํ๋์ด ํฌ๋ก์ค ๋ธ๋ฆฟ์ง ๋ ์ด์์์ ์ง์ฐ ์๊ฐ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
Q3: ์๋ก์ด ์ํคํ ์ฒ์ Hermes๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ค๋ฅธ ์์ง์ ์ฌ์ฉํ ์ ์์ต๋๊น?
์๋ก์ด ์ํคํ ์ฒ๋ JSI์ ์์กดํ๋ฉฐ, JSI๋ JavaScript ์์ง์ด C++ ํธ์คํธ ๊ฐ์ฒด ๋ฑ๋ก์ ์ง์ํ ๊ฒ์ ์๊ตฌํฉ๋๋ค. Hermes๋ ์ฒ์๋ถํฐ JSI ํตํฉ์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์์ต๋๋ค. JavaScriptCore๋ ์ด๋ก ์ ์ผ๋ก JSI๋ฅผ ์ง์ํ ์ ์์ง๋ง, ๊ณต์ ๊ตฌํ๊ณผ ํ ์คํธ๋ Hermes๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ด ์์ต๋๋ค. Hermes V1์ ๋ฐ์ดํธ์ฝ๋ ์ฌ์ ์ปดํ์ผ(๋ฐํ์ ํ์ฑ ์ ๊ฑฐ), Hades ๋์ GC(12ms ๋ฏธ๋ง ์ผ์ ์ ์ง), WebAssembly ์ง์์ ์ถ๊ฐ๋ก ์ ๊ณตํ๋ฉฐ, ์ด๋ React Native์ JSC ํตํฉ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Q4: TurboModules๋ ๊ฐ๋ฐ์ ๊ด์ ์์ ๊ธฐ์กด NativeModules API์ ์ด๋ป๊ฒ ๋ค๋ฆ ๋๊น?
TurboModules๋ ๋น๋ ์ ํ์
์์ ํ ๋ค์ดํฐ๋ธ ๋ฐ์ธ๋ฉ์ ์์ฑํ๋ Codegen spec(TurboModule์ ํ์ฅํ๋ TypeScript ์ธํฐํ์ด์ค)์ด ํ์ํฉ๋๋ค. ๊ธฐ์กด NativeModules๋ ํ์
๊ฒ์ฌ ์๋ ๋ฐํ์ ๋ฆฌํ๋ ์
์ ์ฌ์ฉํ์ต๋๋ค. TurboModules๋ ๋๊ธฐ์ ๋ฐํ ๊ฐ(Promise๋ฟ๋ง ์๋๋ผ), ์ง์ฐ ์ด๊ธฐํ(๋ชจ๋์ ์ฒ์ ์ ๊ทผ ์์๋ง ๋ก๋), JSON ์ง๋ ฌํ ์๋ ์ง์ JSI ํธ์ถ์ ์ง์ํฉ๋๋ค. ๊ฐ๋ฐ์๋ TypeScript spec์ ์์ฑํ๊ณ , Codegen์ ์คํํ๋ฉฐ, ์์ฑ๋ ๋ค์ดํฐ๋ธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
Q5: ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋๋ฅผ ์ค๋ช ํ๊ณ , Fabric๊ณผ TurboModules๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋น๊ตํ์ฌ ๋ฌด์์ด ์ ๊ฑฐ๋๋์ง ์ค๋ช ํ์ญ์์ค.
Fabric๊ณผ TurboModules๋ฅผ ์ฑํํ ํ์๋ ๊ธฐ์กด ๋ธ๋ฆฟ์ง๋ ๊ธ๋ก๋ฒ ์ด๋ฒคํธ ์ด๋ฏธํฐ, ํ์ด๋จธ, ์๋ฌ ํธ๋ค๋ง, ๊ธฐํ ๋ฐํ์ ์ธํ๋ผ์คํธ๋ญ์ฒ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์์ ์ ์ด๊ธฐํ๋์์ต๋๋ค. ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋๋ ์ด๋ฌํ ๋๋จธ์ง ๋ธ๋ฆฟ์ง ์์กด ์์คํ ์ JSI ๊ธฐ๋ฐ ๊ตฌํ์ผ๋ก ๋์ฒดํฉ๋๋ค. ๋ธ๋ฆฟ์ง ์ด๊ธฐํ ์ค๋ฒํค๋๋ฅผ ์ ๊ฑฐํ๊ณ ๊ธฐ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๋ฉฐ ์ ์ฒด ๋ฐํ์์ด JSI๋ฅผ ํตํด ์๋ํ๋๋ก ๋ณด์ฅํฉ๋๋ค. React Native 0.85 ์ดํ, ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋๊ฐ ์ ์ผํ ์๋ ๋ชจ๋์ ๋๋ค.
์ด๋ฌํ ์ง๋ฌธ์ ์๋ํ๋ ์ฝ๋ ์์ ์ ํจ๊ป ์ฐ์ตํ๋ฉด ๊ฐ๋ ์ ์ดํด์ ์ค์ฉ์ ๊ธฐ์ต๋ ฅ ๋ชจ๋ ๊ฐํ๋ฉ๋๋ค.
React Native ๋ฉด์ ์ค๋น๊ฐ ๋์ จ๋์?
์ธํฐ๋ํฐ๋ธ ์๋ฎฌ๋ ์ดํฐ, flashcards, ๊ธฐ์ ํ ์คํธ๋ก ์ฐ์ตํ์ธ์.
๊ฒฐ๋ก
- Hermes V1์ React Native 0.84 ์ด์์์ ์ฝ๋ ์คํํธ 29% ํฅ์, ๋ฉ๋ชจ๋ฆฌ 38% ๊ฐ์, 12ms ๋ฏธ๋ง์ GC ์ผ์ ์ ์ง๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํฉ๋๋ค
- Fabric์ Paper๊ฐ ๊ฒฐ์ฝ ์ง์ํ ์ ์์๋ React 19 ๋์ ๊ธฐ๋ฅ(Transitions, Suspense)์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค
- TurboModules๋ JSON ์ง๋ ฌํ๋ฅผ ์ ๊ฑฐํ์ฌ ์ง์ JSI ํธ์ถ์ ํตํด JSโ๋ค์ดํฐ๋ธ ํธ์ถ์ 40๋ฐฐ ํฅ์์ํต๋๋ค
- ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋๋ ๋ง์ง๋ง ๋ธ๋ฆฟ์ง ์์กด์ฑ์ ์ ๊ฑฐํ๋ฉฐ, React Native 0.85์๋ ๋ธ๋ฆฟ์ง ์ฝ๋๊ฐ ์ ํ ๋จ์ ์์ง ์์ต๋๋ค
- ์ํ๊ณ๋ ์์ ํ ํธํ๋ฉ๋๋ค. Expo SDK 55 ์ด์, React Navigation 7.2 ์ด์, Reanimated 3.5 ์ด์ ๋ฐ ๋ชจ๋ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ก์ด ์ํคํ ์ฒ๋ง์ ์ง์ํฉ๋๋ค
- ๋ฉด์ ์ค๋น๋ JSI ๋ฉ์ปค๋์ฆ, Fabric๊ณผ Paper์ ํธ๋ ์ด๋์คํ, TurboModule Codegen ์ํฌํ๋ก์ฐ, ๋ธ๋ฆฟ์ง๋ฆฌ์ค ๋ชจ๋ ๋ฐํ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ง์คํด์ผ ํฉ๋๋ค
ํ๊ทธ
๊ณต์
๊ด๋ จ ๊ธฐ์ฌ

React Native์ TypeScript 2026: ํ์ ์์ ํ ์ํคํ ์ฒ์ ๋ฉด์ ์ง๋ฌธ
2026๋ React Native์์ TypeScript๋ฅผ ํ์ฉํ ํ์ ์์ ์ํคํ ์ฒ๋ฅผ ๋ค๋ฃน๋๋ค. Codegen, TurboModules, Strict TypeScript API, ํ์ ์์ ๋ด๋น๊ฒ์ด์ , ๋ฉด์ ์ง๋ฌธ์ ์ฝ๋ ์์ ์ ํจ๊ป ์ค๋ช ํฉ๋๋ค.

React Native 0.84์ Hermes V1: ์ฑ๋ฅ ์ต์ ํ, ํ๋ฆฌ์ปดํ์ผ ๋ฐ์ดํธ์ฝ๋, ๊ธฐ์ ๋ฉด์ ๊ฐ์ด๋
Hermes V1์ด React Native 0.84์ ๊ธฐ๋ณธ JavaScript ์์ง์ผ๋ก ์ฑํ๋์ด ๋ฐ์ดํธ์ฝ๋ ํ๋ฆฌ์ปดํ์ผ, Hades ๊ฐ๋น์ง ์ปฌ๋ ํฐ, ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ํตํด ํ๊ธฐ์ ์ธ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ์ ๋ฉด์ ์์ ์์ฃผ ์ถ์ ๋๋ Hermes ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์์ธํ ๋ค๋ฃน๋๋ค.

React Native 0.86 ์๋ฒฝ ๊ฐ์ด๋ 2026: Android 15 ์ฃ์งํฌ์ฃ์ง ์ง์๊ณผ DevTools ํ์ฉ๋ฒ
React Native 0.86์ Android 15 ์ฃ์งํฌ์ฃ์ง ์ง์, DevTools ๊ฐ์ ์ฌํญ, ๋ฉด์ ๋๋น ์ง๋ฌธ์ ์์ธํ ๋ค๋ฃน๋๋ค. ์ค์ฉ์ ์ธ ์ฝ๋ ์์ ์ ์ต์ ๋ฒ ์คํธ ํ๋ํฐ์ค๋ฅผ ์๊ฐํฉ๋๋ค.