Search
🖇️

React Native (RN) vs Flutter Cross Platform 전쟁

생성일
2021/07/15 14:05
태그
Life
Flutter
속성
속성 1
속성 2
2021/07/16 13:14

React Native vs Flutter

Cross platform 에 관심이 있고, 하나를 배우려고 할 때 React Native를 선택할지, Flutter를 선택할지 결정하는 것은 어렵습니다. 물론 저도 그랬습니다.
이 포스팅은 정말 개인적인 견해입니다. 어떤 특정 플랫폼을 비하하려는 목적은 아니니 이해해 주세요
우선 결론부터 이야기하면 저는 Flutter 입니다.
React 웹 개발 경험이 있기 때문에 처음 Cross platform 세상에 들어올 때 React Native 를 처음 선택했습니다. 그때는 Flutter 는 사실 고려 대상도 아니었습니다. Flutter 는 3년 전 이름만 들어본 구식(?)느낌이었고 React 경험이 있으니 React Native 를 더 잘 할 수 있을 거란 헛된 희망이 있었습니다
React Native로 첫 번째 앱을 출시하고 나서,,,,, 곧바로 Flutter 로 돌아섰습니다. 이후 Flutter 로도 앱을 출시하고 나서 역시 Flutter라는 확신을 얻었습니다. 그 판단의 경험을 공유합니다.

Why Flutter?

1. 유지보수 / 지속 가능성

React Native(이하 RN)은 Facebook에서 만들어졌지만 2021년 1월 19일. 더 이상 공식적으로 지원하지 않는다 선언했습니다. 제가 마지막으로 RN을 했을 때의 버전이 0.66 이었나..? 메이저 버전이 1에 도달하지 못했고, 마이너 버전이 올라갈 때마다 마이그레이션에 골머리를 썩어야 했습니다. RN 으로 현재 서비스를 잘 운영중이고 본업으로 삼고 있다면 괜찮겠지만,,, 가끔 들여다 보는 프로젝트라면 다음에 프로젝트로 다시 돌아왔을 땐 회생 불가 상태가 되어있을 겁니다....껄껄.... 저도 출시 이후에... 다시 볼 자신이 없네요.
Flutter는 상황이 다릅니다. 2021년 초, 구글은 Flutter 2.0 을 자신있게 내놨죠. mobile 뿐 아니라 데스크톱, 웹앱까지 들고 왔네요.. 그리고 가장 놀랐던 점. Flutter의 dependenct는 pub 라는 걸 이용하는데, pub 사이트를 가보면 정말 많은 라이브러리들이 있고,, 그 라이브러리들의 메인테이너가 구글입니다. 그리고 가장 최근 업데이트 날짜..?! 한 달 미만입니다. 그만큼 구글에서 공식적인 라이브러리를 빠른 주기로 안정적으로 지원하고 있다는 겁니다.

2. 개발환경 설정

2-1. IDE
RN의 경우 Visual Studio를 통해 개발을 많이 하더라구요. 저도 그랬습니다. Visual Studio 자체는 정말 좋은 개발툴이지만 iOS 시뮬레이터, Android 시뮬레이터에서 돌리기 위해서는 결국 XCode, Android studio를 이용해야만 했습니다. 정말 Visual Studio 는 텍스트 에디팅을 쉽게 하는 용도였습니다.
Flutter의 경우 Android Studio + Plugin 조합을 사용합니다. 갓 Intelij. 본업이 iOS 개발이다 보니 XCode를 사용하는데... ㅎㅎ XCode는 AppStore 에서 평점 1점대를 자랑하죠 어마어마한 CPU 사용량, syntax highlighting 조차 제대로 못하는 몽총이....
다시 돌아와서 Flutter는 Android Studio 위에서 개발합니다. 더 이상 무슨 할말이 있을까요.
2.2 SDK
RN의 경우 npm에서 react-native를 받아서 시작합니다. 이게 node 버전도 타고. 앱 실행까지 온갖 오류를 때려 맞습니다. 아래 항목 3.디버깅/트러블 슈팅에서 자세히 다루겠습니다.
Flutter의 경우 Dart SDK를 설치해야 합니다. 어떻게 설치하냐구요? Android Studio에서 Dart Plugin설치할 때 체크박스 하나만 더 눌러주면 됩니다. 개발자가 고민할게 없어요.

3. 디버깅 / 트러블슈팅

RN vs Flutter를 다루는 글을 정말 많습니다. 최근의 글들은 저와 마찬가지로 Flutter를 선택합니다. 사실 Flutter 를 좋아하기보다 RN을 혐오하는편이 많더라구요....
RN에서의 디버깅은 ..... Flipper 라는게 있는가본데.. iOS의 pod 이랑 꼬여서 빌드조차 안되고 결국 디버깅툴을 지워야 빌드가 되는 정말.... 재밌는 상황이 많았습니다.
RN에서 무엇인가 오류가 났다? 오류를 명확하게 알려주지 않습니다. 결국 해결책도 찾기 힘듭니다. RN 버전에 따라서 오류도 달라지다보니 Google 에 검색하면 결과는 많은데 나에게 해당되는 결과는 없습니다.
Flutter
Network, UI structure, log, performance .. 끝.

4. Firebase 호환성

Firebase는 구글꺼, Flutter 구글꺼. 네.
pub 에서 제공하는 Firebase 공식 라이브러리 업데이트 날짜를 볼까요? FYI) 글을 쓰는 날짜는 2021.07.16 입니다.
firebase_core 마지막 업데이트 2021.07.15 (하루 전)
firebase_firestore 마지막 업데이트 2021.07.15 (하루 전)
firebase_crashlytics 마지막 업데이트 2021.07.15 (하루 전)
...
그 외 firebase 의 모든 기능 마지막 업데이트 날짜가 하루 전입니다.. 대단하쥬..

5. 배포

RN의 경우 배포방식은 Visual Studio 에서 개발 후, iOS에서는 XCode 를 켜고 기타 셋팅 및 배포, Android 는 Android Studio 에서 셋팅 후 배포.. 개발만 Visual Studio 에서 하고 각 배포 과정은 native가 하는 과정 그대로입니다. 물론...! RN 에서 배포 명령어를 제공하긴 하나. 제대로 돌아가질 않습니다.
Flutter 도 RN과 크게 다르진 않습니다만 오류를 만날일이 없습니다.. 깔끔. 그 어려운 iOS Certificate, Provisioning을 알 필요도 없이 잘 해줍니다.
Flutter iOS배포 방법은 위 포스팅에서 자세히 다룹니다.
Flutter Android 배포 방법은 위 포스팅에서 자세히 다룹니다.

RN vs Flutter 에 대한 논쟁은 향후 몇년간 계속되지 않을까 합니다. RN도 아직 건재하니까요.
그래도 저는 Flutter 를 할거에요