Next.js 모바일 웹을 일주일 만에 앱으로 전환한 POC 과정: 모노레포 구조와 React Native(Expo) 선택 이유
Next.js 모바일 웹을 일주일 만에 앱으로 바꾼 방법 ①
B2B 웹 서비스의 VOC에서 헤더 알림을 놓쳐 계약이 불발됐다는 문제가 확인되면서, 기존 Next.js 모바일 웹을 기반으로 앱을 만드는 시도가 시작됐다. 저자는 AI에게 모바일 웹 기준으로 앱 화면을 조립하게 해 일주일 만에 POC 수준 이상의 앱을 만들었고 현재 QA 중이라고 밝혔다. 저자는 Shopify가 React Native에서 Swift·Kotlin 네이티브로 회귀한다는 엔지니어링 블로그 글을 읽었지만, 자신은 사실상 1인 프론트엔드이며 이미 돌아가는 Next.js 웹과 제품 언어를 최대한 공유해야 했기에 Expo 기반 React Native를 택했다고 설명한다. 공유 대상은 UI뿐 아니라 가입 스키마, 에러 카피, API 훅, 폼 검증 등 의미 단위의 코드까지 포함한다. 이를 위해 pnpm workspace로 apps(web, admin, mobile)와 packages를 나누는 모노레포를 먼저 구성했다. UI는 웹·어드민용 @chulgang/ui(shadcn/ui 계열, Radix와 Tailwind)와 모바일용 @chulgang/ui-native(React Native Reusables 계열, rn-primitives와 NativeWind)로 구현체를 분리하고, 색·타이포·간격 토큰은 @chulgang/tokens에서 공유하며 import 경로 이름은 맞추는 방식을 취했다. 기사는 웹에서만 자연스러운 DOM 이벤트, 포커스 트랩, Radix 포털, asChild 같은 패턴 때문에 하나의 컴포넌트 패키지로 웹과 앱을 모두 커버하는 것은 공유보다 예외 분기가 먼저 쌓일 것이라 판단해 구현체를 분리했다고 밝힌다. 이 글은 시리즈 ①편으로, 워크플로우와 나머지 이슈는 후속 편에서 다룬다고 되어 있다.
@chulgang/ui와 @chulgang/ui-native를 나누고 @chulgang/tokens로 토큰만 공유하는 구조는, 웹 전용 DOM 패턴이 RN으로 넘어가며 생기는 예외 분기를 피하면서도 훅·zod 스키마 같은 의미 코드를 웹과 앱이 함께 쓰게 하는 실무 선택지를 보여준다.
원문 출처
요즘IT (Yozm IT)