나름 세가지를 다 써봤으니까 한 번 정리해보고자 글을 남김
플러터
장점
- (RN과 동일) 하나로 안드 iOS 둘 다 빌드 가능
- 다트라는 생소한 언어를 사용함에도 불구하고 배우기 쉽고 빠름 (개인적인 의견입니다.)
- hot reload, hot restart 지원이 꽤 편함 네이티브는 수정 사항 생기면 빌딩하는 것도 오래 걸리는데 반해 플러터는 부담은 없음
- 예전에 비해 커뮤니티가 많이 생기고 서드파티 라이브러리 모아놓는 사이트도 있어서 은근 편리함 그리고 점점 늘어나는 추세
- 안드 iOS 두 가지의 인터페이스를 모두 제공함 Alert 같은 경우도 기본적인 material design과 cupertino design 모두 지원
- 구글의 폭발적인 지원이 있어서 쉽게 망하진 않을 듯??
단점
- (RN과 동일) 자원을 많이 잡아먹음. RN보다는 덜함
- pubspec.yaml에 리소스(사진이나 폰트 같은 거) 추가하는 방식이 좀 귀찮았음 하고 나서 pub get 해주고도 로딩이 느릴 때가 있음
- 잊을만하면 떠오르는 hot reload 버그.. 웬 모르는 오류 떠서 스택오버플로우 열심히 뒤졌더니 나오는 결론이 핫 리로드 버그였을 때의 허무함을 간헐적으로 느껴야 함
- 서드파티 라이브러리가 많이 늘어나긴 했는데 그래도 아직 부족하게 느껴질 때가 있음
- (RN과 동일) 그리고 안정성이 떨어지는 서드파티 라이브러리가 많음
- 안드 iOS 두 가지의 인터페이스를 모두 제공한다고 했는데 자칫 굉장히 중구난방의 디자인을 지닌 앱이 나올 수도 있음 (경험담) --> 자체 커스텀 지옥에 빠짐..
- FutureBuilder의 존재에 대한 의문점.. 처음엔 간단하게 Future를 다룰 수 있어서 편했지만 TextField와 함께 사용하면 극악의 상성을 자랑함 API 무한 호출 지옥에 빠짐
리액트 네이티브
(다뤄본 지가 좀 되서 현재와는 상황이 달라졌을 수 있음을 미리 알립니다)
장점
- (Flutter와 동일) 하나로 안드 iOS 둘 다 빌드 가능
- react.js 기반이라 웹 프론트엔드 경험이 있다면 적응하기 쉬울 듯
- hot reload 지원
- 플러터와 비교해서 역사(?)가 있는 플랫폼이라 커뮤니티가 플러터에 비해 활발하고 자료도 좀 많은 편
- expo (초기 설정이 간단하고 각 플랫폼 IDE를 설치하지 않고 시뮬레이터를 사용할 수 있는 클라이언트) 지원
- 그리고 RN 최대의 장점이라고 하는데 .. OTA(Over The Air) 지원함 (CodePush 사용 시) 앱 심사 과정 없이 바로 앱을 업데이트 할 수 있는 기능으로 알고 있음
근데 RN 앱은 스토어에 올린 적이 없어서 이건 못 써봄ㅋㅋ..😇
단점
- 자원을 엄청 많이 잡아먹음. 매우 느림
- 서드파티 라이브러리 의존성이 높은데, 그 라이브러리들 각각의 안정성이 매우 떨어짐 (내가 썼던 라이브러리 기준) stable 이라며!!!
그 때 당시 나름 많이 사용하던 react-navigation 패키지가 우리가 사용하는 RN 버전과 맞지 않아 앱 실행이 안돼서(...) 다운그레이드하며 사용했던 기억이 뇌리에 선명하게 박혀있음
- 그래서 패키지 의존도가 높아질 수록 RN 버전과의 호환성을 신경 써야함... A 라이브러리는 o.o.o 버전에서만 동작하는데 B 라이브러리는 x.x.x 버전에서만 동작하는 경우가 많았음
- expo는 편리해서 공식 문서에서도 추천하긴 하지만 한계가 분명히 존재함. eject 순간이 반드시 옴. 그리고 eject 과정에서 지옥이 시ㅈ...
- 애니메이션 등의 복잡한 동작 구현이 힘듦
++ 여담으로 RN은 서드파티 라이브러리 관련 단점이 저에게는 매우!!!!!! 크게 다가왔기 때문에 그렇게 선호하는 플랫폼은 아닙니다...
네이티브(iOS)
장점
- 각 OS에 최적화 되어 있는 언어라 개발자의 능력만 따라준다면 높은 성능을 보임 (대충 제일 빠르고 자원을 덜 잡아먹을 수 있다)
- 역시 모바일 OS에서 제공하는 블루투스, 위치기반 서비스, 앱 결제, 애플로그인 등등의 지원이 잘 되어있는 편
단점
-
'Review' 카테고리의 다른 글
네이버 부스트캠프 7기 합격 그리고 준비 (0) | 2022.07.17 |
---|