React Native 앱을 개발하다 보면, 앱이 초기에 무겁고 느리다는 느낌을 받는 경우가 많다.
특히 컴포넌트가 많고, 기능이 방대한 경우엔 초기 렌더링이 느려질 수밖에 없다.
이런 문제를 해결하기 위해 등장한 전략 중 하나가 바로
👉 코드 분할(Code Splitting) & Lazy Loading 전략이다.
앱에서 사용하지 않는 코드까지 처음부터 모두 불러오지 말고,
사용자에게 필요한 시점에만 필요한 코드만 로딩하는 것.
React Native에서도 기본적으로 React.lazy
, Suspense
, dynamic import()
등의 방식으로 구현 가능하며,
경우에 따라 라이브러리나 화면 전환 방식과 함께 사용하면 효과적이다.
import React, { Suspense } from 'react';
const SettingsScreen = React.lazy(() => import('./screens/SettingsScreen'));
export default function App() {
return (
<Suspense fallback={<Text>Loading...</Text>}>
<SettingsScreen />
</Suspense>
);
}
전략 | 설명 |
---|---|
React.lazy + Suspense | 가장 기본적인 코드 분할 방법 |
Dynamic Import | 조건에 따라 컴포넌트 불러오기 |
Navigation Stack 분리 | 탭이나 스택 구조 별로 화면을 분리하여 lazy load |
기능 단위 분할 | 예: 설정, 알림, 채팅 등 기능 단위로 모듈화 후 분기 |
📁 screens/
┣ 📁 home/
┃ ┗ HomeScreen.tsx
┣ 📁 profile/
┃ ┗ ProfileScreen.tsx
┣ 📁 settings/
┃ ┗ SettingsScreen.tsx ← 필요 시점에 로딩
각 폴더를 기능 단위로 쪼개고 필요할 때만 불러오는 구조로 설계!
앱을 만들다 보면 개발 속도에만 집중하고
성능 최적화는 나중에 하자는 생각이 들 수 있는데,
초기 구조부터 나눠두면 리팩토링 없이 성능이 좋아질 수 있음!
특히 Navigation 구조와 함께 라우팅 단위로 분할하는 구조는
성능에도 좋고 유지보수에도 도움이 되는 듯하다.
🧩 "불필요한 코드를 미리 로딩하지 마라 — 사용자 경험은 기다림에서 무너진다."