Native
기초 개념에서 내부 동작과 재현 가능한 실험으로 깊이를 늘려갑니다.
React Native 플랫폼
1편부터 31편까지 순서대로 이어지는 학습 경로입니다.
- 1. foundation
React Native의 렌더 대상: 컴포넌트는 어떻게 실제 앱 UI가 되는가
사용자 컴포넌트, React Native 호스트 컴포넌트와 Android·iOS 호스트 뷰를 구분하고, 보이는 구조와 실제 네이티브 UI 계층이 다를 때의 디버깅 기준을 세운다.
- 2. foundation
JavaScript와 네이티브 실행 경계: 앱의 일은 어디에서 처리되는가
JavaScript 런타임, JavaScript 스레드, UI 스레드와 네이티브 모듈의 역할을 분리하고, 오래 걸리는 작업의 실제 실행 위치를 근거로 응답 지연을 진단한다.
- 3. foundation
React Native New Architecture: 무엇이 하나가 아니라 네 영역인가
새 렌더러·네이티브 모듈, JavaScript 작업 순서와 과거 비동기 통신 경계 제거의 책임을 나누고, 현재 0.86 앱의 호환성 문제를 조사한다.
- 4. foundation
React Native JSI: 직접 연결은 무엇을 해결하고 무엇을 남기는가
JavaScript Interface가 JavaScript 런타임과 C++ 기능을 연결하는 역할을 이해하고, 직접 호출을 자동 성능·백그라운드 실행 보장으로 오해하지 않는 판단 기준을 세운다.
- 5. foundation
React Native Fabric: React 계산은 어떻게 실제 화면이 되는가
React가 계산한 UI를 실제 Android·iOS 화면에 반영하는 세 책임을 구분하고, 측정 시점 때문에 안내 상자가 잠깐 잘못된 위치에 나타나는 문제를 교정한다.
- 6. foundation
React Native TurboModules: 플랫폼 기능은 어떻게 JavaScript API가 되는가
타입 명세, 생성된 연결 인터페이스와 플랫폼 구현이 하나의 네이티브 기능 계약을 이루는 과정을 이해하고, 지원하지 않는 플랫폼에서 모듈 조회가 앱 시작을 막는 문제를 교정한다.
- 7. foundation
React Native Codegen: 타입 계약을 왜 플랫폼 코드로 생성하는가
JavaScript 명세에서 C++·Android·iOS 연결 인터페이스를 다시 만들고, 숫자 타입 변경을 반영하지 않은 플랫폼 구현을 실행 전에 발견하는 검증 흐름을 세운다.
- 8. foundation
React 컴포넌트와 앱 생명주기: 화면이 남은 채 앱이 뒤로 갈 수 있는가
컴포넌트 제거와 앱의 전경·배경 전환을 다른 사건으로 추적하고, 컴포넌트 제거 때의 정리에만 의존해 배경 전환을 놓치는 카메라 세션을 앱 상태 구독으로 교정한다.
- 9. foundation
운영체제의 프로세스 종료: 메모리 초안은 왜 복원되지 않는가
앱이 화면 뒤에 있는 동안 프로세스가 종료될 수 있다는 전제에서, React state와 실행 중 상태를 다시 만들고 사용자 초안만 영속 저장소에서 복원하는 기준을 익힌다.
- 10. foundation
저장 데이터 마이그레이션: 이전 앱의 JSON을 새 앱은 어떻게 읽는가
이전 앱이 저장한 영속 데이터에 형식 버전을 붙이고, 현재 코드의 타입으로 단정하기 전에 읽기·검사·단계 변환·재검사·저장을 수행하는 경계를 익힌다.
- 11. foundation
React Native 업그레이드: package.json 다음에 무엇을 맞추는가
React Native 버전을 올릴 때 JavaScript 패키지, 생성 프로젝트 차이, Android·iOS 빌드 도구와 네이티브 모듈을 한 호환 단위로 정렬하고 같은 증거로 검증하는 순서를 익힌다.
- 12. foundation
React Native WebView의 실행 경계: 같은 화면인데 왜 state를 공유하지 않는가
React Native 화면 안의 WebView가 별도 웹 문서와 JavaScript 전역 환경을 가지는 이유를 관찰하고, 초기 입력도 명시적으로 넘겨야 한다는 판단 기준을 익힌다.
- 13. foundation
WebView에서 React Native로 보내는 메시지: 웹의 값을 어디에서 받는가
WebView 페이지의 송신 함수와 React Native의 onMessage를 한 쌍으로 연결하고, 문자열 수신과 입력 신뢰를 분리한다.
- 14. foundation
React Native에서 WebView로 보내는 메시지: 앱 명령은 언제 어디에서 받는가
WebView ref의 postMessage를 페이지 수신 함수와 연결하고, 준비 시점과 iOS·Android의 서로 다른 message 사건 대상을 명시적으로 처리한다.
- 15. foundation
WebView 요청 식별값: 역순으로 온 응답을 어느 요청에 연결하는가
동시에 기다리는 WebView 요청마다 식별값을 부여하고, 응답 순서가 뒤바뀌어도 원래 요청의 화면 항목을 정확히 갱신한다.
- 16. foundation
WebView 메시지 입력 검증: 식별값이 맞아도 왜 바로 state에 넣으면 안 되는가
WebView 응답의 요청 식별값과 TypeScript 선언만 믿어 합계가 깨지는 실패를 재현하고, 실제 문자열을 스키마로 검증한 뒤에만 앱 state에 반영한다.
- 17. foundation
React Native와 WebView의 인증 정보 소유권: token과 session을 왜 나누는가
네이티브 API용 소지자 토큰을 WebView에 주입해 페이지 script가 읽는 실패를 재현하고, 앱 token·서버 교환·WebView session cookie의 소유권을 분리한다.
- 18. foundation
Keychain과 Keystore: 장기 인증 정보는 왜 일반 저장소와 분리하는가
refresh token을 암호화되지 않은 일반 저장소에 남긴 실패를 재현하고, iOS Keychain과 Android Keystore 기반 저장의 서로 다른 보호 구조와 검증 경계를 익힌다.
- 19. foundation
WebView session 복구: cookie가 없어졌을 때 앱 인증을 어떻게 잇는가
WebView의 session 없음 메시지 두 개가 복구 요청 두 개로 번지는 실패를 재현하고, 진행 중 작업 공유와 재시도 한도로 한 번만 복구하며 네이티브 token을 페이지에 복사하지 않는 경계를 익힌다.
- 20. foundation
React Native background 작업: 화면이 없어도 일을 어떻게 이어 가는가
업로드를 메모리와 타이머에만 둬 Reload 뒤 잃는 실패를 재현하고, 끝나지 않은 작업을 앱 재시작 뒤에도 읽을 목록·재실행 안전성·Android와 iOS의 서로 다른 예약 책임을 구분한다.
- 21. foundation
React Native 센서 데이터 집계: 재시작과 중복 전달에도 값을 어떻게 유지하는가
Android 걸음 센서의 누적값을 매번 더해 과대 집계하는 실패를 재현하고, 마지막 기준값과 집계값을 함께 저장해 같은 측정값의 재전달·앱 재시작·기기 재부팅을 구분한다.
- 22. foundation
React Native 외부 SDK 생명주기: 요청·표시·닫힘을 어떻게 구분하는가
전면 화면 SDK의 로드 완료와 화면 종료를 같은 성공으로 합치는 실패를 재현하고, 요청 식별값과 SDK 객체를 함께 추적해 늦은 응답·표시·표시 실패·닫힘을 정확한 시도에 연결한다.
- 23. foundation
React Native 외부 SDK 회귀 분리: 앱 코드와 SDK 변경을 어떻게 나누는가
앱 코드와 외부 SDK가 함께 바뀐 배포에서 같은 실패 기준을 고정하고, 이전·새 앱 코드와 이전·새 SDK 동작을 교차해 어느 축과 상호작용이 회귀를 만드는지 좁힌다.
- 24. foundation
React Native Crash와 ANR: 앱 종료와 무응답을 어떤 증거로 나누는가
같은 “앱이 멈췄다” 신고를 화면 증상만으로 분류하는 실패를 재현하고, Android 종료 이유·ANR 기록, iOS crash·hang 진단과 React Native 실행 흐름을 서로 다른 증거로 보존한다.
- 25. foundation
React Native JavaScript stack 복원: 어느 source map을 써야 하는가
배포 stack을 현재 main의 map으로 복원해 그럴듯하지만 틀린 파일을 얻는 실패를 재현하고, 실행된 bundle과 함께 만든 platform별 최종 source map을 고른 뒤 원본 파일·줄·함수로 되돌린다.
- 26. foundation
React Native Android stack 복원: R8 mapping과 native symbols를 어떻게 고르는가
읽기 어려운 Java·Kotlin 호출과 C·C++ 기계 코드 주소를 먼저 구분하고, 공개 build와 함께 만든 각각의 대응표로 원래 함수·파일·줄을 복원한다.
- 27. foundation
React Native iOS stack 복원: crash 주소와 dSYM을 어떻게 연결하는가
iOS crash 보고서의 바이너리 이름·프로세서 구조·시작 주소·UUID를 읽고, 같은 build의 디버그 심볼 묶음으로 함수와 원본 파일·줄을 복원한다.
- 28. foundation
React Native 모바일 오류 관측성: 실패 신호를 어떻게 나눠 연결하는가
예상된 제품 결과, 처리한 기술 오류, 처리되지 않은 JavaScript 오류와 플랫폼 crash·무응답 진단을 심각도 하나로 합치는 실패를 재현하고, 개별 신호·사용자 사건 분류·영향·원본·시도 문맥을 나눠 기록한다.
- 29. foundation
React Native 성능 측정: JavaScript·UI·네이티브 병목을 어떻게 나누는가
느린 상호작용의 전체 시간만 보고 JavaScript를 원인으로 지목하는 실패를 재현하고, JavaScript 작업·React Render·UI 그리기·다른 네이티브 함수 실행의 증거를 같은 시도에 연결해 병목 후보를 좁힌다.
- 30. foundation
React Native 테스트 계층: 어떤 실패를 어디에서 막는가
JavaScript 테스트 하나로 네이티브 연결과 실제 기기 기능까지 증명하려는 실패를 재현하고, 막으려는 위험에 따라 가장 작은 충분한 테스트 범위와 실행 기기를 고르는 법을 익힌다.
- 31. foundation
React Native 점진 배포: 내부 테스트에서 전체 사용자까지 어떻게 넓히는가
내부 테스트 통과를 전체 사용자 안전으로 확대하는 실패를 재현하고, 각 플랫폼에서 검증한 build의 실제 채택·기기 집단별 신호·관찰 시간을 근거로 스토어 배포를 확대·대기·중단하는 법을 익힌다.
다른 문서
- foundation
앱 버전과 호환성 계약: 어떤 JavaScript가 어느 설치 앱에서 실행되는가
사용자용 앱 버전, 특정 바이너리의 빌드 식별자, JavaScript와 네이티브 계층을 묶는 런타임 버전을 분리해 호환되지 않는 업데이트 실행을 막는다.
- foundation
원자적 업데이트와 오류 복구: 일부만 받은 버전을 실행하지 않는 법
여러 파일을 별도로 준비하되 완전한 이전 버전이나 완전한 새 버전만 실행하고, 첫 실행 실패와 영속 데이터 변경까지 고려해 복구 경계를 설계한다.
- foundation
OTA 업데이트: 게시된 코드가 설치 앱에서 실행되기까지
앱 전체를 다시 설치하지 않고 JavaScript와 자산을 전달하는 범위, 게시·다운로드·실행의 차이, 시작 정책과 신뢰 검증을 하나의 흐름으로 이해한다.
- foundation
점진 배포와 카나리 배포: 어떤 신호를 보고 범위를 넓힐 것인가
새 변경을 소수 대상에 열고 같은 시간의 기준 집단과 비교하며, 미리 정한 표본·관찰 시간·중단 기준을 통과할 때만 노출을 넓힌다.
- foundation
롤백과 복구: 멈추기, 되돌리기, 회복 완료는 어떻게 다른가
신규 노출 중단, 검증한 산출물 재승격, 클라이언트의 재채택과 영속 자료 복구를 분리하고 실제 사용자 회복까지 확인한다.