Expo 공식 튜토리얼 완주 후기 — 웹 개발자 시점 정리

Evan Kang·2026년 2월 27일

Next.js 웹 앱을 모바일로 전환하기 위해 Expo 공식 튜토리얼(StickerSmash)을 완주했습니다.
웹 개발 경험 기준으로 차이점 위주로 정리합니다.

1. 환경

항목값
기존 스택Next.js 14 + TypeScript + Supabase
전환 대상iOS 앱 (Expo + React Native)
튜토리얼Expo 공식 StickerSmash
챕터 수9개
소요 시간약 2일

2. 프로젝트 시작

npx create-expo-app@latest my-app
cd my-app
npm run reset-project
npx expo start

create-next-app과 거의 동일한 경험입니다. TypeScript, Expo Router, 멀티플랫폼 설정이 한 줄로 완료됩니다.

3. 챕터별 요약

챕터핵심 내용사용 라이브러리
1프로젝트 생성, Expo Go 연결, StyleSheet 기초react-native
2파일 기반 라우팅, Stack/Tabs 네비게이션expo-router
3Image 컴포넌트, Pressable 버튼, 컴포넌트 분리expo-image
4기기 갤러리에서 이미지 선택, useState로 상태 관리expo-image-picker
5Modal로 이모지 피커 구현, FlatList 가로 리스트react-native (Modal, FlatList)
6더블탭(크기 변경) + 팬(드래그) 제스처, 스프링 애니메이션react-native-gesture-handler, react-native-reanimated
7View 캡처 → 기기 갤러리 저장, 권한 요청react-native-view-shot, expo-media-library
8Platform.OS로 네이티브/웹 분기 처리dom-to-image (웹 전용)
9StatusBar 테마, 앱 아이콘(1024×1024), 스플래시 스크린expo-status-bar, expo-splash-screen

4. 웹 개발자가 알아야 할 차이점

4-1. 익숙한 것 (러닝커브 낮음)

웹 (Next.js)Expo비고
app/page.tsx → /app/index.tsx → /파일 기반 라우팅 거의 동일
app/layout.tsxapp/_layout.tsx공통 레이아웃 동일 개념
app/not-found.tsxapp/+not-found.tsx404 처리
useState, useEffect, useRef동일React 훅 100% 호환
TypeScript동일타입 시스템 그대로
onClickonPress이름만 다름

4-2. 다른 것 (러닝커브 높음)

항목웹Expo/RN
스타일링CSS 파일, classNameStyleSheet.create() JS 객체
기본 태그<div>, <span>, <img><View>, <Text>, <Image>
리스트array.map()<FlatList> (가상화 내장)
버튼<button><Pressable>
갤러리 접근<input type="file">expo-image-picker + 권한 요청
애니메이션CSS transition/animationReanimated (useSharedValue + withSpring)
제스처mouse/touch 이벤트 직접 처리Gesture Handler (Gesture.Tap(), Gesture.Pan())
플랫폼 분기없음Platform.OS로 네이티브/웹 조건부 처리
파일 저장다운로드 링크MediaLibrary.saveToLibraryAsync() + 권한
패키지 설치npm installnpx expo install (SDK 호환 버전 자동 선택)

4-3. 주의할 점

항목설명
Expo Go 제한네이티브 모듈이 필요한 기능(Google Sign-In 등)은 Expo Go에서 불가. Dev Client 빌드 필요
app/ 디렉토리 규칙라우트/레이아웃 파일만 허용. 커스텀 컴포넌트는 components/에 분리
collapsable={false}View 캡처 시 Android에서 최적화로 View가 합쳐지는 것 방지용
GestureHandlerRootView제스처 사용 시 최상위에 반드시 감싸야 동작
스플래시 스크린 테스트Expo Go에서 불가. 프리뷰/프로덕션 빌드 필요

5. 다음 단계

순서작업
1모바일 Google 로그인 검증 (Supabase + @react-native-google-signin/google-signin)
2기존 웹 코드 재사용 범위 판단 (순수 로직 vs UI 레이어)
3EAS Build로 실기기 배포 테스트

참고

0개의 댓글