# [[JSI (JavaScript Interface)]] ## ๐Ÿ“Œ Brief ์‹ Summary JSI(JavaScript Interface)๋Š” React Native์˜ '์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜(New Architecture)'์˜ ์ค‘์‹ฌ์ด ๋˜๋Š” ๊ฒฝ๋Ÿ‰ ๋ฒ”์šฉ C++ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค [1]. ๊ธฐ์กด์˜ ๋น„๋™๊ธฐ์  ๋ธŒ๋ฆฟ์ง€(Bridge) ๋ฐฉ์‹์ด ์ง€๋…”๋˜ ์ง๋ ฌํ™”(Serialization) ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์™€ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด ๊ฐ„์— ์ง์ ‘์ ์ด๊ณ  ๋™๊ธฐ์ ์ธ ์ฐธ์กฐ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์ด๋ฅผ ํ†ตํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋„ค์ดํ‹ฐ๋ธŒ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ์‹ค์‹œ๊ฐ„ ๊ณ ์„ฑ๋Šฅ ํ†ต์‹ ์„ ์ง€์›ํ•˜๋ฉฐ, React Native์˜ ์„ฑ๋Šฅ ๊ฒฉ์ฐจ๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ ์ˆ˜์ค€์œผ๋กœ ์ขํžˆ๋Š” ํ•ต์‹ฌ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค [1, 2]. ## ๐Ÿ“– Core Content * **๋™๊ธฐ์  ๋„ค์ดํ‹ฐ๋ธŒ ์ ‘๊ทผ ๋ฐ ์ง๋ ฌํ™” ์˜ค๋ฒ„ํ—ค๋“œ ์ œ๊ฑฐ** ๊ธฐ์กด React Native ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋„ค์ดํ‹ฐ๋ธŒ ๋ ˆ์ด์–ด ๊ฐ„์˜ ํ†ต์‹  ์‹œ ๋ฉ”์‹œ์ง€๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ๋ฌถ์–ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ธŒ๋ฆฟ์ง€(Bridge)๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€์—ฐ ํ˜„์ƒ(Latency)์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค [1, 3]. JSI๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ๋™๊ธฐ์ ์œผ๋กœ ํ˜ธ์ถœ(Direct method invocation)ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋ธŒ๋ฆฟ์ง€์˜ ์ง๋ ฌํ™” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค [1, 2]. * **Fabric๊ณผ TurboModules์˜ ๊ทผ๊ฐ„** JSI๋Š” ๋‹จ์ˆœํžˆ ํ†ต์‹  ๋ฐฉ์‹์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๊ทธ์น˜์ง€ ์•Š๊ณ , React Native์˜ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ์š”์†Œ์˜ ๊ธฐ๋ฐ˜(Foundational layer)์ด ๋ฉ๋‹ˆ๋‹ค [2]. JSI๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด UI ๋ Œ๋”๋ง ์‹œ์Šคํ…œ์ธ **Fabric**๊ณผ ์ง€์—ฐ ๋กœ๋”ฉ์„ ์ง€์›ํ•˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ธ **TurboModules**๊ฐ€ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค [1, 2]. * **์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ ์™€ ๊ณ ์„ฑ๋Šฅ ๊ธฐ๋Šฅ ์ง€์›** JSI๋Š” ์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ ๋ฅผ ์ง€์›ํ•˜์—ฌ ์„ฑ๋Šฅ ๊ฒฉ์ฐจ๋ฅผ ํฌ๊ฒŒ ์ขํž™๋‹ˆ๋‹ค [4]. ์ผ๋ก€๋กœ `react-native-fast-tflite`์™€ ๊ฐ™์€ ๊ณ ์„ฑ๋Šฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” JSI์˜ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๋ฐ GPU ๊ฐ€์†์„ ํ™œ์šฉํ•˜์—ฌ ์˜จ๋””๋ฐ”์ด์Šค ๋จธ์‹ ๋Ÿฌ๋‹์˜ ์‹ค์‹œ๊ฐ„ ์ถ”๋ก ์„ ๋งค์šฐ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค [5]. ๋˜ํ•œ ์ปค์Šคํ…€ ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์‹œ ํˆฌ๋ช…ํ•˜๊ณ  ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ ๋ฐ”์ธ๋”ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [6]. * **์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ํ˜ธํ™˜์„ฑ** JSI๋Š” ๋ฒ”์šฉ์ ์œผ๋กœ ์„ค๊ณ„๋˜์–ด, ๊ณ ๋„๋กœ ์ตœ์ ํ™”๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ธ Hermes๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ์•ˆ์ •์ ์œผ๋กœ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. ## โš–๏ธ Trade-offs & Caveats JSI ๋ฐ ์ด๋ฅผ ๋„์ž…ํ•œ '์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜(New Architecture)'์™€ ๊ด€๋ จ๋œ ์ œ์•ฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋Š” ์†Œ์Šค ๋‚ด์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ์ด ๊ฐ„์ ‘์ ์œผ๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. React Native ๋ฒ„์ „ 0.74๋ถ€ํ„ฐ ๋ธŒ๋ฆฟ์ง€๋ฆฌ์Šค ๋ชจ๋“œ(Bridgeless mode)๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜๋ฉด์„œ ์•„ํ‚คํ…์ฒ˜์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋ธŒ๋ฆฟ์ง€์—์„œ JSI ๊ธฐ๋ฐ˜์˜ ๋™๊ธฐ์  ํ†ต์‹ ์œผ๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค [7, 8]. ์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ์„ฑ๋Šฅ๊ณผ ๋ฐ˜์‘์„ฑ ๋ฉด์—์„œ ์••๋„์ ์ธ ์žฅ์ ์„ ์ฃผ์ง€๋งŒ, ์ƒํƒœ๊ณ„ ๋‚ด ๊ธฐ์กด ๋ธŒ๋ฆฟ์ง€ ๊ธฐ๋ฐ˜์˜ ์ˆ˜๋งŽ์€ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Native Modules)๋“ค์ด ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜์™€ JSI์— ์˜จ์ „ํžˆ ๋Œ€์‘ํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 8]. ๋˜ํ•œ, JSI์˜ ๊ธฐ๋ฐ˜์ด C++ ๊ณ„์ธต์ด๋ฏ€๋กœ ๊ณ ๋„ํ™”๋œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ์„ ๊ฐœ๋ฐœํ•  ๊ฒฝ์šฐ Java/Kotlin, Objective-C/Swift์™€ ๋”๋ถˆ์–ด C++์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์š”๊ตฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. ๊ทธ ์™ธ์— JSI ์ž์ฒด์˜ ์•„ํ‚คํ…์ฒ˜์  ๊ฒฐํ•จ์ด๋‚˜ ๊ตฌ์ฒด์ ์ด๊ณ  ์น˜๋ช…์ ์ธ ๋ถ€์ž‘์šฉ(Trade-off)์— ๋Œ€ํ•ด์„œ๋Š” **์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.** ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [๊ด€๊ณ„ ์œ ํ˜• A (์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ )] - [[New Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : JSI๋Š” ๊ธฐ์กด์˜ ๋น„๋™๊ธฐ ๋ธŒ๋ฆฟ์ง€๋ฅผ ๋Œ€์ฒดํ•˜๋Š” React Native '์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜(New Architecture)'์˜ ์‹ฌ์žฅ์ด์ž ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ํ†ต์‹  ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค [1, 9]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ณผ๊ฑฐ React Native๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ์™€ ์†Œํ†ตํ•˜๋˜ ๋ฐฉ์‹์˜ ํ•œ๊ณ„์™€, ํ˜„๋Œ€ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ตฌ์กฐ์  ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋ณ€ํ™” [1, 2]. - [[Fabric]] - ์—ฐ๊ฒฐ ์ด์œ : JSI์˜ ๋™๊ธฐ์  ํ†ต์‹  ๋Šฅ๋ ฅ์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ React Native์˜ ์ฐจ์„ธ๋Œ€ ๋ Œ๋”๋ง ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค [1, 2]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: JSI ์œ„์—์„œ C++๋กœ ์ง์ ‘ ์„€๋„ ํŠธ๋ฆฌ(Shadow Tree)๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ Œ๋”๋ง๊ณผ ๋ ˆ์ด์•„์›ƒ ๊ณ„์‚ฐ์„ ๋™๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์—ฌ UI ์ ํ”„ ํ˜„์ƒ ๋“ฑ์˜ ๋ Œ๋”๋ง ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์›๋ฆฌ [2, 10]. - [[TurboModules]] - ์—ฐ๊ฒฐ ์ด์œ : JSI๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์ฐจ์„ธ๋Œ€ ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์œผ๋กœ, ์•ฑ ์‹œ์ž‘ ์‹œ ์ผ๊ด„ ๋กœ๋“œ๋˜๋˜ ๊ธฐ์กด ๋ฐฉ์‹ ๋Œ€์‹  ํ•„์š”ํ•œ ์‹œ์ ์—๋งŒ ๋ชจ๋“ˆ์„ ๋กœ๋“œ(Lazy-loading)ํ•ฉ๋‹ˆ๋‹ค [2, 11]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: JSI์˜ ๋™๊ธฐ์  ํ˜ธ์ถœ์ด ๋ชจ๋“ˆ ๋กœ๋”ฉ ์„ฑ๋Šฅ(์ดˆ๊ธฐ ๊ตฌ๋™ ์†๋„ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰)์„ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 11]. #### [๊ด€๊ณ„ ์œ ํ˜• B (๊ตฌํ˜„/๋ฐœ์ „ ๋„๊ตฌ)] - [[Codegen]] - ์—ฐ๊ฒฐ ์ด์œ : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์  ํƒ€์ž…๊ณผ ๋„ค์ดํ‹ฐ๋ธŒ์˜ ์ •์  ํƒ€์ž… ๊ฐ„์— JSI ๊ธฐ๋ฐ˜์˜ ์•ˆ์ „ํ•œ ํ†ต์‹ ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ์ž๋™ํ™” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค [12]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋นŒ๋“œ ํƒ€์ž„์— ํƒ€์ž… ์ •์˜(TypeScript ๋“ฑ)๋ฅผ ๋ถ„์„ํ•˜์—ฌ C++ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ์ค„์ด๋Š” ๋ฐฉ์‹ [12]. - [[Hermes]] - ์—ฐ๊ฒฐ ์ด์œ : JSI๊ฐ€ ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” React Native์˜ ํ•ต์‹ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ž…๋‹ˆ๋‹ค [1]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: JSI ํ™˜๊ฒฝ ์œ„์—์„œ ์–ด๋–ป๊ฒŒ ์•ฑ ๊ตฌ๋™ ์†๋„์™€ ๋ Œ๋”๋ง์˜ ๊ธฐ๋ณธ ํผํฌ๋จผ์Šค๊ฐ€ ํ™•๋ณด๋˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 13, 14]. ### Deeper Research Questions - ๊ธฐ์กด์˜ ๋น„๋™๊ธฐ Bridge ๋ฐฉ์‹์—์„œ ๋ฐœ์ƒํ•˜๋˜ ์ง๋ ฌํ™”(Serialization) ์ง€์—ฐ ์‹œ๊ฐ„์€ ์ˆ˜์น˜์ ์œผ๋กœ ์–ด๋А ์ •๋„์˜€์œผ๋ฉฐ, JSI์˜ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ๋Š” ์ด๋ฅผ ์ •๋Ÿ‰์ ์œผ๋กœ ์–ผ๋งˆ๋‚˜ ๊ฐœ์„ ํ•˜๋Š”๊ฐ€? - ๊ธฐ์กด ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒํƒœ๊ณ„๊ฐ€ ๊ตฌํ˜• ๋ธŒ๋ฆฟ์ง€ ์•„ํ‚คํ…์ฒ˜์—์„œ JSI ๋ฐ ๋ธŒ๋ฆฟ์ง€๋ฆฌ์Šค(Bridgeless) ํ™˜๊ฒฝ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ์ฝ”๋“œ ์ˆ˜์ค€์˜ ๋ฆฌํŒฉํ† ๋ง์„ ๊ฑฐ์ณ์•ผ ํ•˜๋Š”๊ฐ€? - JSI๋ฅผ ํ†ตํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์Šค๋ ˆ๋“œ์™€ ๋„ค์ดํ‹ฐ๋ธŒ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™๊ธฐ์ ์œผ๋กœ ํ†ต์‹ ํ•  ๋•Œ, ๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ธ”๋กœํ‚น(Blocking)ํ•˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜์  ์•ˆ์ „ ์žฅ์น˜๋Š” ๋ฌด์—‡์ธ๊ฐ€? - Codegen์ด TypeScript ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ JSI๋ฅผ ์œ„ํ•œ C++ ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜๋Š” ์ƒ์„ธ ์ปดํŒŒ์ผ ํƒ€์ž„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”๊ฐ€? - ์˜จ๋””๋ฐ”์ด์Šค AI ๋ชจ๋ธ(์˜ˆ: TensorFlow Lite) ์™ธ์—, JSI์˜ C++ ๋ฉ”๋ชจ๋ฆฌ ์ง์ ‘ ์ ‘๊ทผ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜๋ฅผ ์ฐฝ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ๋Šฅ์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ์ปค์Šคํ…€ ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ(์นด๋ฉ”๋ผ, ๋ธ”๋ฃจํˆฌ์Šค, ๊ธฐ๊ณ„ ํ•™์Šต ๋“ฑ) ๊ฐœ๋ฐœ ์‹œ JSI์™€ TurboModules๋ฅผ ์ ์šฉํ•˜์—ฌ, C++ ๊ณ„์ธต์˜ ๋น ๋ฅด๊ณ  ์ง€์—ฐ ์—†๋Š” ๋™๊ธฐ์  ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 5, 6]. - **System Design:** ๋ชจ๋ฐ”์ผ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์‹œ, ๊ณผ๊ฑฐ ๋ณต์žกํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋‚˜ ๋ฌด๊ฑฐ์šด ๋ฆฌ์ŠคํŠธ ์ฒ˜๋ฆฌ ๋ฌธ์ œ๋กœ React Native ๋„์ž…์„ ๋ง์„ค์˜€๋˜ ๋„๋ฉ”์ธ์ด๋ผ๋„, JSI์˜ ๋„์ž…์— ๋”ฐ๋ฅธ ๋„ค์ดํ‹ฐ๋ธŒ ์ˆ˜์ค€์˜ ์„ฑ๋Šฅ์„ ๊ทผ๊ฑฐ๋กœ React Native๋ฅผ ์ฃผ์š” ๊ธฐ์ˆ  ์Šคํƒ์œผ๋กœ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 15, 16]. - **Operation / Maintenance:** React Native 0.74 ๋ฒ„์ „ ์ด์ƒ์œผ๋กœ ์•ฑ์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ, JSI ๊ธฐ๋ฐ˜์˜ ๋ธŒ๋ฆฟ์ง€๋ฆฌ์Šค ๋ชจ๋“œ(Bridgeless mode)๋กœ ์ „ํ™˜ํ•จ์— ๋”ฐ๋ผ ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ํ˜ธํ™˜์„ฑ์„ ์ ๊ฒ€ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ์œ ์ง€๋ณด์ˆ˜ ์ ˆ์ฐจ๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [7, 8]. - **Learning Path:** React Native ๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ์กด ๋ธŒ๋ฆฟ์ง€ ๊ธฐ๋ฐ˜์˜ React Native ์ง€์‹์— ๋จธ๋ฌผ์ง€ ์•Š๊ณ , ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด JSI์˜ ๋™์ž‘ ์›๋ฆฌ์™€ ๋”๋ถˆ์–ด C++ ๊ธฐ์ดˆ ๋ฐ Codegen์„ ํ™œ์šฉํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ชจ๋“ˆ ์ž‘์„ฑ๋ฒ•์œผ๋กœ ํ•™์Šต์˜ ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 12]. - **My Project Relevance:** ํ˜„์žฌ ์œ ์ง€๋ณด์ˆ˜ ์ค‘์ธ React Native ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™œ์„ฑํ™”(Opt-in)ํ•˜์—ฌ JSI๋ฅผ ํ†ตํ•œ ์•ฑ์˜ ์‘๋‹ต์„ฑ ํ–ฅ์ƒ ๋ฐ ๋ Œ๋”๋ง ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์ฆ‰๊ฐ์ ์œผ๋กœ ๊พ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 17]. ### Adjacent Topics - [[Impeller Engine]] - ํ™•์žฅ ๋ฐฉํ–ฅ: JSI๊ฐ€ React Native์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๋Š” ์ ‘๊ทผ๋ฒ•์ด๋ผ๋ฉด, ๊ฒฝ์Ÿ ํ”„๋ ˆ์ž„์›Œํฌ์ธ Flutter๊ฐ€ ๋ Œ๋”๋ง ๋ณ‘๋ชฉ(์…ฐ์ด๋” ์ปดํŒŒ์ผ ์ง€์—ฐ)์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กญ๊ฒŒ ๋„์ž…ํ•œ ์ž์ฒด ๋ Œ๋”๋ง ์—”์ง„์ธ Impeller์™€์˜ ์•„ํ‚คํ…์ฒ˜ ํ•ด๊ฒฐ ๋ฐฉ์‹์˜ ์ฐจ์ด๋ฅผ ๋น„๊ต ์—ฐ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [18, 19]. - [[React Native Web / Desktop]] - ํ™•์žฅ ๋ฐฉํ–ฅ: JSI ๋ฐ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ(iOS/Android)์˜ ์„ฑ๋Šฅ์„ ํ˜์‹ ํ•˜๋Š” ๋™์•ˆ, ์ด๊ฒƒ์ด React Native Web์ด๋‚˜ macOS/Windows ๋ฐ์Šคํฌํƒ‘ ์ง€์› ์˜์—ญ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด๋‚˜ ํ™•์žฅ์„ฑ์„ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹ค [20-22]. --- *Last updated: 2026-05-03*