Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
React Native under the hood
Search
HyunWoo Lee
August 14, 2024
Programming
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React Native under the hood
HYPER-APP 2024에서 진행한 React Native under the hood의 Speaker Deck입니다.
HyunWoo Lee
August 14, 2024
More Decks by HyunWoo Lee
See All by HyunWoo Lee
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
280
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
250
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
160
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
200
Navigating Dependency Injection with Metro
l2hyunwoo
1
520
How Android Uses Data Structures Behind The Scenes
l2hyunwoo
1
850
Understanding Kotlin Multiplatform (Busan)
l2hyunwoo
0
130
Understanding Kotlin Multiplatform
l2hyunwoo
0
420
파급효과: From AI to Android Development
l2hyunwoo
0
430
Other Decks in Programming
See All in Programming
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
350
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
570
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
880
Modernizing iOS Apps
seyfoyun
0
150
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
160
Distance field of Julia set
kinakomoti321
0
130
SODA - FACT BOOK(JP)
sodainc
1
40k
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
320
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.2k
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
340
Featured
See All Featured
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
550
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
WCS-LA-2024
lcolladotor
0
970
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
240
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Designing Powerful Visuals for Engaging Learning
tmiket
1
640
Testing 201, or: Great Expectations
jmmastey
46
8.4k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.5k
RailsConf 2023
tenderlove
30
1.6k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
Transcript
이현우, Viva Republica (Toss) React Native Under The Hood
HyunWoo Lee • Android(React Native) Developer, Toss • Organizer, Kotlin
User Groups • Organizer, GDG Songdo Github: https://github.com/l 2 hyunwoo LinkedIn: https://www.linkedin.com/in/hyunwoo-lee- 0412 / Medium: https://medium.com/@l 2 hyunwoo Velog: https://velog.io/@l 2 hyunwoo
From code to application 목차 Motivation React Native에 대한 간략한
소개
Motivation 이번 세션을 준비한 동기 누가 들으면 좋을까요?
Motivation
Motivation
Motivation 그래서 어떻게 돌아가죠?
Introduction to React Native Learn Once, Write Anywhere
React Native
React Native • 플랫폼별로 android/ios 폴더가 존재 • 플랫폼 빌드를
위한 여러가지 파일들이 포함되어 있음 • 이외의 Javascript 관련파일 구성 사항들은 React 프로젝트와 거의 동일
Fron code to application JavaScript에서 하나의 모바일 앱으로
// A.tsx <View> <Text>Hello A!</Text> </View> // B.tsx <View> <Text>Hello
B!</Text> </View>
JavaScript의 언어특성 • JavaScript는 모듈화된 자바스크립트 파일들을 읽어내지 못함 •
여러 파일들을 하나의 파일로 만들어주는 도구가 필요함 // A.tsx <View> <Text>Hello A!</Text> </View> // B.tsx <View> <Text>Hello B!</Text> </View>
Bundler 여러 모듈/파일을 하나의 파일로 묶는다
None
React Native - Metro • 번들링 • 유틸성 코드 주입(Polyfill)
• console.log를 네이티브에서 기록하기 위한 기능 • 리액트 네이티브 초기화(InitializeCore)
React Native - Metro • 번들링 • 유틸성 코드 주입(Polyfill)
• console.log를 네이티브에서 기록하기 위한 기능 • 리액트 네이티브 초기화(InitializeCore)
코드 변환 - Babel 메트로에 의해 번들링된 코드를 React Native
실행환경에 맞게 변환하는 과정 Babel이라는 라이브러리 활용 중
Runtime 코드가 실행되는 환경
None
None
None
First Choice - JSC(JavaScript Core) • Apple에서 제공하는 JavaScript Runtime
• JSC를 활용해서 리액트 네이티브를 돌아가게 만들 수 있었지만 • C 기반 API • 브릿지가 가져가야하는 너무 많은 책임들 • JSC와 리액트 네이티브의 강결합 • 이와 같은 문제점들이 대두됨
엔진을 추상화해볼까? - JSI
JSI의 Data Flow (Native to JS) • Android/iOS에서는 C++로 명령을
보내면서 JSI(shared memory layer 에서) 호출 • 메모리 업데이트 되면 JS에 반영이 되어서 표시됨
JSI의 Data Flow (JS to Native Module) 1 . 네이티브
모듈을 호출하면 JS엔진에 자바스크립트 값을 전달한다.
JSI의 Data Flow (JS to Native Module) 2 . HostFunction로
이 값이 전달되고. 함수는 이를 C++ dynamic으로 변환 한다.
JSI의 Data Flow (JS to Native Module) 3 . 이
값은 네이티브 모듈 인프라로 전달 된다. 4 . 플랫폼에서는 이를 플랫폼 타입으로 변환하고 메서드 호출하는 것을 확인
JSI를 활용한 Rendering 전략
And Next React Native is evolving right now.
New Architecture - Three Pillars • Turbo Module • Fabric
• Codegen
New Architecture - Three Pillars • Turbo Module • 특정
모듈을 지연 초기화시켜 앱 시작 속도 개선 • Fabric • 새로운 UI 렌더링 아키텍처. • 유저 인터랙션(스크롤, 제스처)을 메인스레드/네이티브 스레드에서 동기적으로 처리 • Codegen • 플랫폼 코드의 타입을 JS에서도 활용할 수 있게 정적 타이핑 지원 • TypeScript 활용시 이득
None
None