거의 알고리즘 일기장
react native 약 1년간 사용해본 얕은 후기 본문
react native를 작년 12월쯤 expo로 이용해본것을 시작으로 사용한지 약 1년쯤 지났다.
최근들어 rn에 대한 회의감이 들기 시작했다. 그래서 한번 rn 약 1년 사용기를 정말 얇게 남겨보고자 한다.
주의!: 필자의 불평불만이 가득함 ㅎㅎ
---
2023 5월의 생각
react native cli (bare) 를 이용할경우에는 아직 이 생각이 변함없지만,
최근 expo의 feature들을 보니 엄청나게 많은것들이 추가되었고 expo를 이용할 경우 대부분의 단점이 상쇄됨으로
expo를 쓴다는 가정하에는 괜찮은 기술이라고 생각이 바뀌었음
사용기
작년 말에,
내가 사용하는 react를 사용해서 ios, android 앱을 만들수 있다는 사실에 react native에 대한 흥미가 생겼다.
그래서 expo라는 rn을 쉽게 시작할수 있는 키트를 이용해서 작은 프로젝트 하나 해보고 배포해보았다.
https://play.google.com/store/apps/details?id=com.kunwookwon.TodaysPictureDiary
이 앱을 만들어보고 난 후, 하나의 코드베이스로 ios, android 앱을 배포할수 있다는것에 큰 메리트를 느꼈다.
그래서 이 스택으로 일을 해보고 싶어져 rn으로 일할수 있는 직장을 찾기 시작했고 다행히 그러한 직장을 가지게 되었다.
전기차 관련된 앱을 맡아서 일을 하게 되었고 새로운 것들을 많이 경험해볼수 있었다!
code push,
flipper를 이용한 디버깅,
firebase app distribution,
circle ci를 이용한 자동배포,
reanimated2를 이용한 애니메이션 구현,
rn bridge 짜보기,
npm에 rn 모듈 배포해보기,
gql
등등
즐거운 경험이었고 저 중에는 rn이기 때문에 가능한 엄청난 장점의 기능도 있다.
하지만, rn에는 단점들이 있고 그 단점들이 앱의 규모가 커져갈수록 rn의 장점을 상쇄시킬정도로 거슬려진다는 느낌이 들기 시작했다.
react native의 단점
사용하면서 가장 나를 짜증나게 하는건 디버깅이었다.
react native는 bridge를 이용해서 native thread와 js thread 간의 통신으로 동작한다.
하나의 이벤트에도 거치는것들이 많다. 이러다 보니 에러의 발생 경우가 native에 비해서 훨씬 많을 수 밖에 없다.
에러의 발생 원인도 많고 잦은데 정말 이해할수 없는 에러가 간혹 나오곤한다.
(뭐랄까.. rn은 젓가락으로 연결되어있는거 같다. 겁나 잘부서진다)
물론 로그를 잘읽고 stack overflow에 질문해보면 대부분이 해결가능하다.
하지만, 언제나 빠르게 해결가능한것도 아니고 stackoverflow에 바로 찾을수 없는 이슈의 경우 github issue를 하루종일 뒤져가는 내 모습을 보다 보면 현타도 오고, 디버깅시간이 차지하는 비중이 점점 많아질수록 개발의욕은 꺾일수밖에 없다.
그 외에도
native에 대한 지식은 필수인 점,
조금조금씩 다른 android와 ios의 스타일링,
native module을 사용시 제대로된 bridge library가 없는 경우 내가 해야하는 귀찮은 점,
아직도 1.0.0 버전이 아니라 언제든 바뀔수 있다는 점,
등의 문제도 있다.
하지만...
단점만 신나서 줄기차게 적어놓았지만.. rn은 분명 메리트가 있는 스택이다.
그리고 이 문제들은 당연히 native 윗단에 react native라는 하나의 레이어가 더 생김으로써 발생하는 어쩔수 없는 것들이다.
그러니 이 이야기들은 그저 허접한 주니어의 개인의 의견으로 들어주길 바란다 ㅎ