1. React Native vs Flutter vs PWA
1. Flutter
장점
- 기본 위젯이 잘 구성되어 있다.
- css 안써도 된다.
- dart언어가 js 대비 우수하다.
2. React Native
- React Native를 이용한 프로젝트가 생각보다 많았다.
장점
- 낮은 러닝 커브
단점
- 어플을 만들때 필요한 컴포넌트(위젯)을 a-z 하나하나 다 만들어줘야 한다.
3. PWA
- 개발자 입장에서는 라이브러리 설치하고, 간단한 세팅 하면 배포가 가능하다는 점에서 장점이 있다. 하지만 유저입장에서는, 번거로움 그 자체라 생각한다.
단점
Native Interface를 사용할 수 없다.- iOS의 경우 푸쉬 알림이 불가능하며, 사용자가 PWA를 앱 아이콘으로 등록하지 않으면 7일이 넘는 캐시 데이터를 자동으로 삭제
- 높은 진입 장벽 (PWA로 되어 있는 해당 사이트 방문 > 화면 중앙 하단의 공유 버튼 클릭 > 스크롤을 조금 더 내려서 홈 화면에 추가)
장점
- 개발하기 쉽다.
세 개에 대해 각각 분석해보았다. Flutter가 확실히 웹사이트만 봐도 예쁘다는 것이 느껴진다. 또한, dart 언어의 우수함, flutter의 위젯 제공. 메리트가 크다. 그런데, 나는 Javascript만 1년을 써왔다. dart라는 새로운 언어, flutter라는 새로운 생태계를 익히는 러닝 커브가 존재할 것이다.
dart는 찾아보니 javascript와 비슷하다고 한다.
그럼에도, React의 라이브러리를 그대로 사용할 수 있고, 지금까지 React개발해온 프론트엔드 개발자로써, React Native를 우선 사용하는 것이 더 나은 선택이라고 생각한다. 또한, Flutter의 커스텀 하기 어렵다는 단점을 React Native가 보완해줄 수 있을 것이다. 그리고 이미 React로 프로젝트로 개발을 하고 웹뷰 위주로 구현을 할 것이기에 RN이 더 적합하다고 생각한다.
결론
- 현재 프론트엔드 팀 2명 모두
React만 사용해왔고, 한 달에서 두 달이라는 짧은 기간 동안Flutter를 배우고 시작하기에는 러닝 커브가 높다. - React Native를 배워두면 React에도 분명히 도움이 될 것이라 생각한다.
=> React Native로 결정
2. 웹뷰 패키징
- 야놀자 앱 : 모바일 애플리케이션. but 몇몇 화면은 웹뷰를 사용하여 하이브리드로 처리
- 기존 야놀자 앱 : php + javascript(jQuery)를 통해 제작
- 신규 야놀자 앱 : Typescript + Next.js + Mobx
- Typescript : 코드 작성 시 코드 에러 검출
- Next.js : 편리한 SSR + 초기 렌더링 구동 속도 보장
- Mobx : 다수의 파일을 생성하는 일 줄이자
- 웹뷰의 장점
- AOS, IOS 각각 기능을 구현하기 보다 웹 하나만 구현하면 되기에 개발 자원이 크게 줄어든다.
- 배포함에 있어 스토어에서 심사를 받지 않고 곧바로 업데이트가 가능하다.
컨퍼런스 영상
1. 토스 Slash : React Native
- 기존 구조의 문제점
- 느린 배포 속도
- 앱스토어 심사 시간 하루 ~ 1달
- 느린 배포 속도
- 유저 업데이트 시간
- 개발 리소스 부족
- 방안 2가지
- 모두 웹으로 구성
- 항상 최신 기능 제공 가능
- 모두 웹으로 구성
- 네트워크 환경 의존성
- 성능적인 한계
- cross Platform 프레임워크로 구현
-
Flutter가 뜨는 중
-
하지만 높은 학습비용 존재
-
React Native는 Google의 Code Push를 통해 빠른 업데이트 가능
-
React 사용자가 많아 리소스 부족 문제 해결
-
공식 라이브러리 생태계가 Flutter에 비해 빈약
- 부분 적용을 가능하게 하는 요소들
- 기존 프로젝트에 적용 가능
- React Native Bundle : N 진입점
- React Native와 Native간의 통신
- BUndle을 다운로드 받아 사용ㄱㄹ
- 부분적으로 적용했을 때 장점
- 점진적 적용 가능
- 기존 모듈 활용 가능
- 완전히 다시 작성했을 때 ✅
- 시간이 더 오래걸린다
- cross platform의 이점
- React Native 사용후기
- 저렴한 학습 비용
- 역할의 확장
- 더 높은 복잡성 : 푸쉬 알림, 파일 읽고 쓰기 등
- 빠르게 실패와 개선 과정 반복 가능
- 채용이 어려운 초기 스타트업에 유용
2. 토스ㅣSLASH 23 - 달리는 토스 앱에 React Native 엔진 더하기
- 토스의 첫 화면, 두 번째 탭인
헤택 탭, 네 번째 탭인주식 탭은 RN기술을 사용 중 - 로딩 시간 : Web : 3.5s vs RN : 0.Xs
- Web : HTML 다운로드 > JS 다운로드 > JS 실행
- RN : JS 실행(미리 다운로드)
- RN도입과정에서 기술적 도전
- 서비스별 배포 : Shared + Service(서비스 별로 구분하여 배포)
- 빌드 속도 감축 : esbuild
- 8개 언어, 3개 플랫폼 : RN Test Page만들어서 테스트
- 의존성 관리 : Yarn Plug'n 'Play로 속도 감축