요즘 RN으로 앱 만들어보려고 이것저것 알아보는 중인데, 처음엔 진짜 단순하게 생각했다.
React 할 줄 아는데 앱도 비슷하지 않을까?
근데 알아볼수록 느낀 건 React Native는 React 느낌의 모바일 개발이지, 웹 React를 그대로 가져온 건 아니었다.
그리고 이걸 먼저 이해해야 멘탈이 덜 흔들릴 것 같았다.
React Native는 왜 이름이 React Native일까?
처음엔 그냥 React로 Native 앱 만든다 정도로 이해했는데, 조금 다르다...
핵심은 1. React는 그대로 사용 2. 대신 렌더링 대상이 브라우저가 아니라 모바일
웹은 React → 브라우저 DOM 인데,
RN은 React → iOS / Android 네이티브 UI로 간다.
그러니까 RN은 웹사이트를 앱에 넣는 게 아니라, 실제로 네이티브 UI를 그리는 방식이었다.
그래서 div가 없음
이거 보고 제일 충격받았다. <div> 못 쓴다...!!
대신 <View> / <Text> 이런 거 사용한다... RN에는 DOM 자체가 없기 때문이다 ㅠ
생각해보면 당연한 게, 앱에는 브라우저가 없으니까 HTML도 없는 거였다.
CSS도 내가 알던 CSS가 아니었음
이 부분이 제일 신기했다.
처음엔 "Tailwind 쓰면 거의 웹처럼 하겠네?" 라고 생각했는데 아니었다.
RN은 브라우저 CSS 엔진이 아니라서
- grid 없음
- hover 없음
- pseudo element 없음
- fixed 느낌도 다름
즉 CSS처럼 보이는데 사실은 네이티브 View 속성 조작에 가까운 느낌이라고 한다.
여기서 약간 "아… 이건 웹이 아니구나" 감각이 왔다.
내가 제일 걱정되는 부분
사실 React 자체는 별로 안 무서울 것 같다.
- hooks
- 상태관리
- TS
- API
- 컴포넌트 구조
이런 건 거의 비슷해보였는데, 문제는 모바일 플랫폼 자체였다.
특히 많이 보이고 들리는건 (회사에서 다른 팀에서도 겪고 있는 문제라 자주 들린다ㅎ)
- keyboard 지옥
- Android/iOS 차이
- safe area
- 네이티브 권한
- 빌드 환경
- 앱스토어 배포
특히 "Android 왜 이래?" 이걸 많이 겪는다고 해서 벌써 무섭다.
사실 몇 년전 졸업프로젝트 때 안드 에뮬레이터가 너무 느려 화가 났던 경험도 있어서 더더욱 두려워졌다....
근데 또 재밌어보이긴 함
웹보다 오히려 단순한 부분도 있다는 점도 흥미 포인트
Next.js처럼
- SSR
- hydration
- SEO
- 서버 컴포넌트
이런 게 없어서 상태 흐름은 더 단순하다고 합니다. 오....
대신 "운영체제 위에서 동작하는 앱" 이라는 감각이 강한 느낌...?
아직 시작도 안 했지만 느낀 점
지금까지 알아본 걸 정리하면 RN은 React를 배우는 느낌보다, 모바일 개발 감각에 적응하는 느낌에 가까워 보인다.
그리고 웹 개발자가 생각보다 많이 착각하는 게 "React니까 거의 비슷하겠지" 인 것 같다.
딱 알맞은 예시는 아니지만 java랑 javascript 관계가 뭐야? => 인도와 인도네시아 급
나도 지금 딱 그 단계라서, 일단은 마음의 준비부터 하고 차차 도전해보려고 한다.
AI 활용해서 개발을 하긴 할거지만, 의문 점이나 배운 점 등을 꾸준히 작성해야겠다.