|| 리멤버 iOS의 SwiftUI 도입기 — 허들을 하나씩 넘기며Hurdle Between Remember And SwiftUI
안녕하세요, 리멤버 iOS챕터 허성진입니다.
SwiftUI, 도입하셨나요?
새 프로젝트라면 이미 자연스러운 선택이 되었지만, 오래된 UIKit 앱이라면 여전히 어디서부터 시작하지?라는 막막함이 남아있을 수 있습니다.
리멤버는 명함 관리부터 경력직 채용, 직장인 커뮤니티, 그리고 최근 출시된 커넥트 SNS까지 — 일하는 프로들을 위한 비즈니스 네트워크 앱입니다. 2014년 출시 이후 10년이 넘는 시간 동안 서비스를 이어오고 있고, 그만큼 코드베이스의 대부분은 UIKit을 기반으로 구성되어 있습니다.
Remember App Store Screenshots
최근 AI 코딩 도구와 Figma MCP 같은 디자인-개발 연동 도구들이 등장하면서 SwiftUI를 써야 할 이유가 더욱 명확해졌습니다. 선언적 스타일의 SwiftUI는 이런 도구들과 훨씬 자연스럽게 맞아떨어지기 때문입니다. 지금은 리멤버 앱에서 SwiftUI를 적극적으로 사용하고 있지만, 여기까지 오는 과정은 결코 단순하지 않았습니다.
이 글에서는 리멤버 iOS챕터가 SwiftUI를 도입하며 마주친 허들들과, 그것을 하나씩 넘겨온 과정을 공유합니다. 위젯이라는 작은 영역에서 시작해 전체 화면을 SwiftUI로 구현할 수 있게 되기까지의 과정을 총 5단계로 나눠 이야기합니다.
1단계. 위젯 — 리스크 없는 첫 시작Remember Card Camera Widget
가장 간단하게 SwiftUI를 적용해볼 수 있는 곳은 어디일까요? 앱 본체와 완전히 분리된 위젯 Extension이라고 생각합니다. UIKit 코드베이스와 충돌할 일이 없고, 잘못되더라도 앱 본체에 영향을 주지 않습니다.
iOS 14에서 WidgetKit이 등장하면서 위젯은 SwiftUI만으로 작성해야 했고, 자연스럽게 SwiftUI를 접하는 첫 창구가 되었습니다.
제가 합류했을 때 이미 커뮤니티 베스트글 위젯이 있었는데요, 2020년 당시 iOS챕터에서 SwiftUI를 써보고 싶어서 만들어진 위젯이라고 전해들었습니다.
거기에 어느 날, 고객 VoC에서 출발한 아이디어이기도 했던 명함 촬영 바로가기 위젯을 개인적인 호기심으로 직접 만들어봤습니다.
Remember Card Camera Widget VOC
당시 리더분의 적극적인 지지 덕분에 실제 배포까지 이어졌습니다.
Remember Card Camera Widget Making Messages
이미지 하나를 탭하면 명함 촬영으로 바로 연결되는 단순한 위젯이었습니다.
말 그대로 발만 살짝 담가보는 단계였습니다.
그 작은 경험이 SwiftUI와의 첫 개인적인 만남이 되었습니다.
Remember iOS Widgets
@main
struct RememberWidgetBundle: WidgetBundle {
var body: some Widget {
RememberCardCameraWidget() // 명함 촬영 위젯
RememberCommunityWidget() // 커뮤니티 베스트글 위젯
}
}2단계 . 셀 — UIKit 화면에 SwiftUI 뷰 심기
위젯으로 감을 잡았다면, 다음 질문은 “UIKit기반 위에 SwiftUI를 어떻게 넣을 수 있을까?”였습니다. UIHostingController를 사용하면 된다는 것은 알지만, 실제로 부딪혀보기 전까지는 어디서 어떻게 시작해야 할지 막막했습니다.
2-1. SwiftUI 탐색 — “제 이력서에 ‘SwiftUI 도입’을 작성하고 싶었습니다”
챕터 내에서 SwiftUI 도입에 대한 공감대는 있었습니다. 하지만 저는 SwiftUI를 써본 적이 없었기에 궁금하기도 했고, 직접 써보고 싶다는 마음에 리멤버 iOS 앱의 공지사항 목록 화면을 SwiftUI로 시행착오를 겪으며 만들어봤습니다.
셀을 SwiftUI로 감싸는 시도도 해보고, 전체 화면을 SwiftUI로 만든 다음 VIPER 아키텍처와 연결해보는 시도도 했는데, UIKit과 SwiftUI의 경계를 어