기존의 네이티브 앱들은, os에 의존하여 화면을 렌더링 했습니다. os에게 text input을 만들어 달라고 요청하면 os의 text-input이나 button등을 만들어주는 형식입니다.
하지만, flutter는 os에 의존하지 않습니다. 그렇기 때문에 크로스플랫폼 개발이 수월하게 가능합니다. flutter를 실행하면 코드는 flutter의 렌더링 엔진에 의해서 ui를 구성합니다.
이는 즉 flutter로 개발을 하면, ios 혹은 aos의 디자인과 아주 유사하게 ui를 구성할 수 있지만, 결국 flutter의 렌더링 엔진에 의해서 그려지기 때문에 실제 swift나 java로 만든 native앱과 조금 다를 가능성이 있습니다. (특히 ios는 조금 위화감을 느낄 수 있음)
이는 완벽하게 같지 않다는 점이 단점이 될 수 있지만, 자유롭게 ui를 커스텀할수 있다는 점에서 장점이 될 수 있습니다.
플러터는 처음에는 ios, aos만 만들 수 있는 프레임 워크 였는데, 지금은 점점 늘어나고 있습니다. ios, aos, web, window, mac, linux를 만들 수 있고, 앞으로 게임도 출시할 계획입니다.
https://flutter.dev/showcase/google-pay
여기 구글은 Google Pay 어플을 flutter로 마이그레이션 했다는 문서가 있습니다. ios와 aos를 모두 개발할 때 따로따로 개발하면 2배의 노력이 들지만, flutter를 사용하면 1.2배의 노력이 들었다고 말합니다. 결과적으로 flutter로 마이그레이션 하면서 170만줄의 코드를 110만줄의 코드로 줄일 수 있었습니다.
많은 어플리케이션이 flutter로 제작됐습니다.
기술이 좋아도, 많은 유저가 사용하지 않으면, 사라질 가능성이 있습니다. 하지만, 알리바바, 바이트댄스, 틱톡, 이베이 등 많은 기업에서 flutter를 채용하고 있어 갑작스럽게 flutter 시장이 사장될 가능성은 없다고 생각합니다.
언어와의 호환성이 아주 좋습니다. dart라는 언어 자체가 flutter를 위해서 만들어진 언어 이기 때문에, 한몸처럼 움직입니다. 기존의 프레임워크들은 모두 언어에 맞춰 프레임워크가 변화하지만, flutter는 프레임워크에 맞게 dart라는 언어를 조작할 수 있다는 점이 아주 큰 강점입니다.
react를 예를 들자면, react는 javascript로 작성하는 프레임워크 입니다. react는 처음에는 class를 활용한 oop로 설계되었지만, javascript에서 oop가 힘들다는 점에서 function형태로 변경되었습니다. 이렇듯 보통의 경우에는 언어가 프레임워크에 맞게 변형되는 경우는 없습니다.
react-native 앱 운영체제 상에서 위젯을 사용해서 렌더링 합니다. 하지만, flutter는 flutter엔진에 의해서 렌더링합니다.
react-native로 버튼을 생성하면, ios에서 보여지는 버튼과 aos에서 보여지는 버튼의 ui가 다릅니다. 하지만, flutter는 같은 버튼이 보여지게 됩니다.
그렇기 때문에 flutter의 가장 큰 강점은 커스텀입니다. 다채로운 ui를 제공하고 싶다면 flutter를 선택하는 것이 더 쉽습니다.
하지만, 기존에 사용하던 어플들이 대부분 native로 제작되었기 때문에, flutter의 ui보다는 native ui가 익숙할 수 있습니다. 이러한 간단하고 유저에게 익숙한 ui를 제공할 때는 react-native가 유리합니다.
많은 디자인 요구사항이 반영된 앱이라면 Flutter가 좋다고 생각합니다
react-native의 강점중 OTA(over the air) update가 있습니다. aos 어플리케이션 이라고 가정하면, 어플을 update하고 다시 google playstore에 등록을 한후, 유저들이 어플리케이션을 업데이트 해야합니다. 하지만 OTA update를 사용하면 wifi만 연결되어 있다면, google playstore를 거치지 않고 바로 업데이트가 가능하다는 장점이 있습니다. 또한, 업데이트까지 최대 5일이 걸리는 과정을 거치지 않기에 빠른 업데이트와 테스트가 가능합니다.
업데이트가 자주 필요한 상황에서는 react-native가 좋을 수 있습니다