실제 기기에서 앱 아이콘을 탭하면 사용자는 몇 초 동안 흰색 플래시,拉긴 로고, 또는 멈춰있는 런치 스크린을 보게 됩니다. 그 순간에 React Native 앱이 일반 프로덕션 수준에서 느려지게 됩니다.
React Native의 좋은 Splash Screen은 브랜드만큼 더 많은 문제를 해결합니다. 네이티브 시작과 첫 번째 의미 있는 React 렌더링 프레임 사이의 간격을 καλύ립니다. 또한 Expo Go라는 개발 클라이언트와 실제 스토어 빌드 사이의 차이를 생각할 것을 강요합니다. 만약 그 타이밍을 틀면 사용자가 바로 문제를 발견하게 됩니다.
목차
- 전문적인 로딩 화면의 중요성
- 완벽한 로딩 화면 자산 준비
- Expo Go 및 개발 클라이언트 워크플로우를 사용한 구현
- Bare React Native 프로젝트 CLI에 대한 설정
- 애니메이션과 성능적인 스플래시 스크린을 위한 고급 기술
- 일반적인 스플래시 스크린 문제를 해결하는 방법
__CAPGO_KEEP_0__
__CAPGO_KEEP_1__
__CAPGO_KEEP_2__

__CAPGO_KEEP_4__
__CAPGO_KEEP_5__
- __CAPGO_KEEP_6__ __CAPGO_KEEP_7__
- __CAPGO_KEEP_8__ __CAPGO_KEEP_9__
- __CAPGO_KEEP_10__ __CAPGO_KEEP_11__
- Force startup decisions: 팀은 '준비'가 무엇을 의미하는지 정의해야 합니다. 런치 스크린을 제거하기 전에.
실용적인 규칙: 실제 화면이 깨끗하게 렌더링 될 수 있는 첫 번째 화면이 나타날 때 스플래시를 숨기세요. 임의의 지연 시간 후에 스플래시를 숨기지 마세요.
이것도 Expo가 관리하는 CLI 및 bare 워크플로우가 분기하는 곳입니다. Expo가 관리하는 프로젝트에서는 스플래시 설정이 주로 선언적이며, 앱 준비가 될 때 hide API를 호출하는 메인 엔지니어링 결정이 주된 엔지니어링 결정입니다. bare React Native CLI 프로젝트에서는 Android 및 iOS에서 더 많은 네이티브 설정을 소유하고 있습니다. 이는 더 많은 제어를 제공하지만 런치 플리커, 테마 불일치, 플랫폼별 회귀와 같은 런치 플리커를 소개하는 것과 같은 더 많은 방법을 제공합니다.
실제 프로젝트에서 이 트레이드 오프는 중요합니다. Expo는 더 빠르게 구성되고 환경 간 일관성을 유지하기 더 쉬우며, bare 프로젝트는 이미 커스텀 네이티브 모듈, 커스텀 런치 동작, 또는 런치 경로에 대한 더 엄격한 제어가 필요한 앱에 적합합니다.
런치를 제품 품질의 일부로 다루는 팀은 일반적인 UX 작업과 함께 런치를 검토합니다. 런치를 독립적인 네이티브 작업으로 다루지 않습니다. 이는 Capgo의 앱 사용자 경험 가이드에서 다루는 동일한 마음가짐입니다. 새로운 앱 또는 마이그레이션을 위해 broader React Native 스택을 평가하고 있다면 React Native 앱을 위한 Nerdify 솔루션 은 생산에 중점을 둔 유용한 개요를 제공합니다.
퍼펙트 스플래시 스크린 애셋을 준비하는 방법
대부분의 스플래시 화면 버그는 디자인 파일에서 시작되며, code이 아닌 기본 자산이 잘못된 경우에도 Android XML 또는 iOS 스토리보드 정리만으로는 해결되지 않습니다.
스플래시 화면을 레이아웃 시스템으로 다루는 safest 방법은 배경 색상과 중앙에 위치한 로고 또는 삽화만 사용하는 것입니다. 이는 Android 장치, iPhone, 태블릿 및 더 넓은 기기 방향과 같은 다양한 기기에서 예측 가능한 규모로 확장됩니다.

코딩하기 전에 준비해야 할 사항
디자인에서 깨끗한 원본 파일부터 시작하세요. 벡터는 전환을 위해 이상적이지만 내보낸 런치 자산이 PNG일 경우에도 export가 일관적이게 유지되도록 마스터 로고 또는 마크를 SVG, AI 또는 다른 편집 가능한 원본 형식으로 유지하세요.
이 체크리스트를 사용하세요.
- 원본 아트워크: SVG, AI 또는 다른 편집 가능한 원본 형식으로 마스터 로고 또는 마크를 유지하여 export가 일관적이게 유지되도록 하세요.
- 배경 색상: 정확한 스플래시 배경 색상을 미리 정의하고 첫 번째 화면 또는 앱 셸 배경 색상과 일치하도록 하세요.
- 안전 여백: 비정상적인 비율에 대한 공격적인 절단이 디자인에 침투하지 않도록 로고 주변에 충분한 빈 공간을 남겨라.
- 플랫폼 변형: 워크플로우가 필요로 하는 이미지 크기를 내보내라. 한 파일을 모든 곳에拉伸하는 대신.
- 다크 모드 검토: 앱이 다크 서피스를 지원한다면, 선택한 배경에 로고가 깨끗하게 읽히는지 확인하라.
Expo의 지침은 이곳에서 유용하다. 그것은 런치 애셋이 이제 빌드 PIPELINE의 일부가 된다는 것을 강조한다. 그것의 문서는 앱 아이콘에 대해 1024×1024 PNG 을 추천한다. 그리고 EAS Build는 npx create-expo-app로 생성된 프로젝트에 대해 필요한 크기를 생성할 수 있다. 이것은 애셋 생성이 현대적인 도구로 옮겨졌다는 것을 보여준다. 반복적인 수동 작업이 아니라.
일반적인 애셋 실수:
예측 가능한 시각적 실패는 다음과 같다.
| 문제 | 가능한 원인 | 보다 나은 접근 방식 |
|---|---|---|
| 흐릿한 로고 | 저해상도 래스터에서 내보낸 것 | 벡터 원천에서 재 내보내기 |
| 잘라진 모서리 | 이미지의 위치가 너무 가까운 경계에 위치 | 안전한 패딩을 늘리기 |
| 확장 | 여러 비율의 많은 비율에 강제로 풀 스크린 이미지를 사용 | 배경 색상에 중앙에 이미지를 사용 |
| __CAPGO_KEEP_0__ | 전환의 일치가 맞지 않습니다. | 첫 번째 화면과 스플래시 배경이 다릅니다. |
런치와 앱 셸 색상이 일치합니다.
스플래시 이미지는 밀집된 텍스트, 작은 세부 정보, 또는 마케팅 복사본을 포함해서는 안 됩니다. 런치 화면은 짧은 시간 동안만 보이고, 강한 네이티브 제약 조건하에 렌더링됩니다. 팀이 빈번한 시각적 업데이트를 배달할 때, 이미지 관리는 런치 화면 이외에도 중요합니다. 동일한 습관이 배달 패키지 및 바이너리 크기에도 적용됩니다. 따라서, 표준화된 자산 수출 시 가이드와 같은 업데이트를 위해 이미지를 최적화하는 방법
을 검토하는 것이 가치가 있습니다.
실제 프로젝트에서 잘 작동하는 export 워크플로우
- 이런 식으로 설정됩니다. 중심에 위치한 구성 요소를 디자인합니다.
- 플레인 배경에. 만약 워크플로우가 별도의 배경 색상을 지원한다면.
- __CAPGO_KEEP_0__ 이름이 일관적이어야 합니다. 플랫폼 간에 __CAPGO_KEEP_0__ 이름이 일관적일수록 자산 교체가 추측의 문제가 되지 않습니다.
- __CAPGO_KEEP_0__에서 작은 SIM과 큰 SIM을 테스트하는 것이 중요합니다. __CAPGO_KEEP_0__에서 스플래시 라이프 사이클을 연결하기 전에.
- __CAPGO_KEEP_0__에서 자산이 변경되면 다시 빌드합니다. __CAPGO_KEEP_0__ 자산이 자주 native 캐시 내에 존재하기 때문입니다.
이 마지막 점은 사람들이 예상하지 못하는 만큼 중요합니다. 스플래시 화면 문제가 대부분의 경우 구성 오류로 보이지만 실제로는 stale native 자산 때문입니다.
Expo Go 및 개발 클라이언트 워크플로우와 함께 Implementing
Expo를 사용하는 경우 시작점은 다음과 같습니다. expo-splash-screenmanaged 워크플로우에 적합하고 대부분의 구성이 선언적이고 스플래시 화면이 떠야 할 때 명시적으로 제어할 수 있습니다.

The key behavior to understand is simple. 첫 번째 의미 있는 UI 프레임이 준비될 때까지 네이티브 스플래시를 보이세요. Expo의 SplashScreen API는 시작 시와 preventAutoHideAsync() 크리티컬 로딩이 완료된 후에 hideAsync() Expo는 iOS와 Android 빌드에서 너무 일찍 숨기면 잠시 동안 빈 화면이 노출될 수 있다고 경고하며, 이는 Expo splash screen API.
__CAPGO_KEEP_0__
네이티브 스플래시를 선언적으로 구성하세요. app.json Expo 프로젝트에서 시각적인 측면은 일반적으로 app.config.js.
또는 app.json 일반적인
{
"expo": {
"plugins": [
[
"expo-splash-screen",
{
"backgroundColor": "#111111",
"image": "./assets/splash-icon.png",
"imageWidth": 200
}
]
]
}
}
정확한 field는 프로젝트 설정에 따라 달라질 수 있지만 패턴은 동일합니다. native launch appearance를 config에서 정의하고, JavaScript에서 visibility를 제어합니다.
여기서 몇 가지 실용적인 선택이 중요합니다:
- 초기 화면과 유사한 배경 색상을 사용하여 전환감을 연속적으로 유지합니다. 이미지를 간단하게 유지하세요. launch surface는 밀집된 아트워크가 아닌 곳입니다.
- 가짜 “브랜드 딜레이”를 피하세요. 앱이 이미 준비되었을 때 사용자들을 로고에 묶지 마세요. 준비 상태에 따라 스플래시를 숨기세요, 시간에 따라 그렇지 마세요.
- 많은 튜토리얼은 잘못된 방향으로 가는 경우가 많습니다. They는 쉽게 데모할 수 있지만 프로덕션에 적합하지 않은 것을 사용합니다. 시작 상태를 사용하세요. 일반적인 루트 레벨 패턴은 다음과 같습니다:
__CAPGO_KEEP_0__
__CAPGO_KEEP_1__ setTimeout__CAPGO_KEEP_2__
__CAPGO_KEEP_3__
import { useCallback, useEffect, useState } from 'react';
import { View } from 'react-native';
import * as SplashScreen from 'expo-splash-screen';
SplashScreen.preventAutoHideAsync();
export default function App() {
const [isReady, setIsReady] = useState(false);
useEffect(() => {
async function prepare() {
try {
// Load fonts
// Restore auth state
// Read persisted settings
} finally {
setIsReady(true);
}
}
prepare();
}, []);
const onLayoutRootView = useCallback(async () => {
if (isReady) {
await SplashScreen.hideAsync();
}
}, [isReady]);
if (!isReady) {
return null;
}
return (
<View style={{ flex: 1 }} onLayout={onLayoutRootView}>
{/* Your real app UI */}
</View>
);
}
이 패턴의 신뢰성을 보장하는 두 가지 세부 사항입니다.
첫 번째, preventAutoHideAsync() 앱이 의미 있는 UI를 렌더링하기 전에 호출됩니다. 두 번째, root view가 레이아웃을 준비할 수 있을 때 hide가 발생하는 것은 native splash과 React tree 사이의 순간적인 플래시를 줄이기 위해 중요합니다.
async 작업이 완료되기 시작할 때 splash를 숨기지 마십시오. 그 작업에 의존하는 UI가 실제로 렌더링할 수 있을 때 숨기십시오.
이 distinction은 startup이 인증 복원, 원격 구성 또는 폰트 로딩과 같은 작업을 포함할 때 가장 중요합니다. 홈 스크린이 커스텀 폰트와 로그인 상태에 의존하는 경우 splash는 그 간격을 커버해야 합니다.
React Native의 더 넓은 랜딩 및 시작 시스템에 대한 유용한_walkthrough는 아래에 있습니다.
Expo Go 및 dev builds에서 기대할 수 있는 것
Expo는 하나의 추가 복잡성을 추가합니다. 독립 실행형 빌드에서 기대하는 splash 동작과 Expo Go에서 관찰하는 동작이 일치하지 않을 수 있습니다.
이 불일치가 많은 팀을 혼란스럽게 합니다. 자산 또는 타이밍 로직을 변경하고 Expo Go에서 테스트하고, 실제 문제는 개발 환경이 프로덕션 바이너리와 같은 동작을 하지 않는다는 것을 알게 됩니다.
이러한 정신 모델을 사용하십시오.
- Expo Go는 반복을 용이하게 하지만 native splash 동작의 최종 권위는 아닙니다. Expo Go는 반복을 용이하게 하지만 native splash 동작의 최종 권위는 아닙니다.
- 개발 클라이언트는 현실과 더 가깝습니다. 이러한 클라이언트에는 생성된 네이티브 프로젝트가 포함되어 있습니다.
- 독립형 빌드는 출시 타이밍, 테마 동작 및 자산 정확성에 대한 최종 확인입니다. 스플래시가 여전히 깜박거리거나 지속되는 경우 일반적으로 bug는 3 가지 중 하나입니다: 너무 일찍 숨기기, render 시간이 너무 길게 숨기기, 또는 테스트 환경이 출시 동작을 반영하지 않는 경우입니다.
bare React Native __CAPGO_KEEP_0__ 프로젝트에 대한 구성 null bare React Native 앱은 로그오를 보여주기 위한 고정된 지연 시간 대신 실제 시작 작업과 일치하는 스플래시 화면을 보여주기 위한 로그인 동작에 대한 직접적인 제어를 제공합니다. 이 제어는 네이티브 책임과 함께 제공됩니다. Android와 iOS를 올바르게 연결하고 자주 다시 빌드하고 실제 장치에서 네이티브 시작 UI와 첫 번째 React 화면 간의 전환을 테스트해야 합니다.
CLI 프로젝트에서 일반적으로 추천하는 것은
현재 React Native 프로젝트에 더 잘 맞는 것과 네이티브 설정이 업그레이드 시 더 쉽게 이해할 수 있는 것입니다. 이전 앱은 여전히
In CLI projects, I usually recommend react-native-bootsplash React Native __CAPGO_KEEP_0__에서 스플래시 화면을 설정하는 프로세스를 minh họa하는 네 가지 단계의 인포그래픽입니다. react-native-splash-screenDevelopment clients are closer to reality

안드로이드 프로젝트에서 설정
안드로이드 스플래시 설정은 여러 장소에 존재: 테마 리소스, 드로어블,. AndroidManifest.xml그것은 작은 실수도 눈에 띄는 플래시를 생성하는 이유입니다. MainActivity일반적인 흐름은 다음과 같습니다:
안드로이드 리소스 폴더를 지원하는 스플래시 자산을 생성하십시오.
- 정확한 배경 색상과 스플래시 드로어블을 가진 런치 테마를 정의하십시오.
- 런처 액티비티에 그것을 적용하십시오.
- 초기 렌더링이 방해되는 작업이 끝나면 스플래시 스크린을 초기화하십시오.
AndroidManifest.xml. - 자바스크립트에서 그것을 숨기십시오.
MainActivity. - 간단한
패턴은 다음과 같습니다: MainActivity.kt 이 패턴은 자주 사용됩니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// initialize splash handling here depending on the library
}
That snippet is intentionally generic because the exact call depends on the library. The native integration point is usually the easy part. The mistakes tend to come from resources and theme transitions.
Here are the Android issues that show up in production:
- Theme mismatch: 앱 런칭 테마와 첫 번째 앱 화면의 배경 색상이 다르면 사용자는 전환 중에 순간적인 화면이 나타납니다.
- Incorrect asset buckets: Android는 기대하는 밀도 폴더에 없는 자산이 있는 경우 자산을拉伸하거나 흐리게합니다.
- Testing with Metro only: Native resource changes는 일반적으로 Metro에서만 테스트할 수 있습니다. Hot reload는 런칭 동작을 검증하지 않습니다.
- Android 12 launch rules: 새로운 Android 버전은 플랫폼 제약을 존중해야 하므로 커스텀 설정이 필요합니다.
- Slow JS after hide: React가 루트 뷰가 그려지기 전에 스플래시를 숨기면 사용자는 매끄러운 전환 대신 빈 프레임을 보게 됩니다.
그 마지막 점은 이미지 자체보다 더 중요합니다. 타이밍 문제는 일반적으로 성능 문제로 인식됩니다.
bare 프로젝트에서 iOS 설정
iOS에서 중력 중심은 LaunchScreen.storyboard plus 작은 네이티브 훅 AppDelegate플랫폼은 런칭 스크린을 정적이고 가벼운 것으로 기대합니다. 첫 번째 화면의 시각적 구조의 스냅샷으로 다루어야 합니다. mini 온보딩 플로우가 아닙니다.
신뢰할 수 있는 설정은 다음과 같습니다:
- Xcode 자산 카탈로그에 자산을 추가하십시오.
- Configure
LaunchScreen.storyboard단순한 제약 조건과 함께. - 레이아웃을 정적으로 유지하십시오. 배경 색상, 로고 및 안전한 간격은 일반적으로 충분합니다.
- 라이브러리의 네이티브 부트스트랩 호출을 추가하십시오.
AppDelegate. - JavaScript에서만 앱이 완전히 렌더링할 준비가 될 때까지 스플래시를 숨기십시오.
iOS 개발을 시작하는 팀은 스토리보드에 대한 오버 엔지니어링을 자주 하게 됩니다. 그게 일반적으로 실패로 돌아갑니다. 복잡한 제약 조건, 중첩된 뷰, 또는 런치 스크린을 애니메이션화하는 시도는 디바이스 크기에 따라 유지 관리가 어려워지고 쉽게 깨질 수 있습니다.
간단한 런치 스크린을 선택하는 것이 더 안전합니다.
bare CLI은 핸드 오프에 대한 더 많은 제어를 제공합니다.
이것이 Expo가 관리하는 것과 bare CLI 사이의 주요 차이점입니다. Expo는 더 빠른 경로를 통해 기본값을 올바르게 설정할 수 있습니다. bare는 native 런치 PIPELINE에 대한 전체 책임을 제공합니다.
이 트레이드 오프는 앱이 단순히 배달을 로드하는 것 이상을 수행할 때 유용합니다. 인증 복원, 암호화된 스토리지 읽기, 커스텀 네이티브 SDK 초기화, 또는 화이트 레이블 브랜딩 규칙과 같은 앱은 추가 제어가 필요합니다. bare 프로젝트는 런치 스크린의 타이밍을 그 작업과 일치시키는 데 도움이 됩니다. 대신, 더 높은 수준의 구성으로 모든 것을 강제하는 대신.
런치 후에 애니메이션 전환을 추가하려는 경우, 네이티브 런치 스크린을 정적으로 유지하고 첫 번째 React 스크린에 동작을 이동하세요. 성능 트레이드 오프는 모바일 스타트업 경로에서 무엇이 중요하다는 것과 유사합니다. 첫 번째 페인트에서 중대한 작업은 비용이 많이 들습니다. Capacitor 앱의 애니메이션 성능에 대한 안내서 다른 스택에서 동일한 원칙을 다루고 React Native로 전환할 때도 이 교훈이 깨끗하게 적용됩니다.
Expo가 관리하는 것과 bare CLI
실제 비교는 이미지 표시와 더 관련이 없습니다. 시작 복잡성은 어디에 위치하는지에 대한 것입니다.
| 결정 지점 | Expo가 관리하는 것 | CLI |
|---|---|---|
| __CAPGO_KEEP_0__ 설정 속도 | __CAPGO_KEEP_0__ 초기 설정 속도 | __CAPGO_KEEP_0__의 더 원시적인 작업 |
| __CAPGO_KEEP_0__의 원시적 커스텀 | __CAPGO_KEEP_0__의 더 제한적인 | __CAPGO_KEEP_0__의 전체 제어 |
| 자산 생성 흐름 | __CAPGO_KEEP_0__의 더 선언적 | __CAPGO_KEEP_0__의 더 수동적인 |
| __CAPGO_KEEP_0__ 디버깅 표면 | JS 구성 및 생성된 원시 레이어 | Android 및 iOS 파일을 직접 관리 |
| 최적화 | 속도와 일관성을 최적화하는 팀 | 자연스러운 UI를 원하는 팀 |
앱이 이미 Expo에서 실행되고 시작 요구 사항이 표준일 경우, 그대로 유지하는 것이 시간을 절약하는 경우가 많습니다. 그러나 시작 경로가 네이티브 초기화 순서에 의존하거나 커스텀 테마나 플랫폼에 특정한 부트 로직에 의존하는 경우, bare CLI가 종종 더 깨끗한 장기적인 선택입니다.
두 가지 워크플로우 모두 정돈된 스플래시 화면을 배포할 수 있습니다. 차이점은 프레임워크가 시작 파이프라인을 관리하는지, 팀이 관리하는지입니다.
Animated Splash Screen을 위한 고급 기술
애니메이션 스플래시 화면은 시작 파이프라인을 존중할 때 멋지게 보입니다. 그러나 시작 파이프라인을 방해할 때는 저렴하게 보입니다.
애니메이션은 시작 파이프라인의 현실을 따르는 것이 중요합니다.
앱이 준비되지 않은 경우 스플래시 화면이 유지되어야 하며, 앱이 준비된 경우 첫 번째 사용 가능한 화면으로의 전환 속도가 빠르야 합니다.
애니메이션은 시작 현실을 따르는 것이 중요합니다.
일반적인 패턴은 네이티브 스플래시 화면을 간단하게 유지하고, 시작 후 첫 번째 React 화면에서 가벼운 브랜드 애니메이션을 실행하는 것입니다. 이로 인해 시작 표면 자체를 애니메이션하는 것보다 더 많은 유연성을 얻을 수 있습니다.
- Native splash screen이 중요한 초기화 작업 중에 보이지 않습니다.
- React는 첫 번째 실제 화면 또는 제어된 전환 화면을 마운트합니다.
- 선택적 애니메이션은 필요 이상으로 상호 작용을 방해하지 않는 한만 재생됩니다.
이미지나 로딩 화면이 화면에 나타나지 않도록 하는 것은 " setTimeout(2000) 빠른 장치에서는 앱이 아무 이유 없이 기다리게 만들고, 느린 장치에서는 로딩 상태를 하나로 바꾸기만 합니다.
시작을 오케스트레이션으로 다루세요.
보다 좋은 정신 모델은 "시작 오케스트레이션"입니다. 스플래시 화면은 앱이 의미 있는 콘텐츠를 표시할 수 있도록 하기 전에 완료해야 하는 정확한 작업을 덮어야 합니다.일반적으로 다음의 혼합이 포함됩니다:
인증 부트스트랩:
- 세션을 복원하거나 로그인 화면으로 라우팅할지 결정합니다. Restoring a session or deciding whether to route to sign-in.
- 기본적인 저장 읽기: 테마, 지역 설정, 온보딩 상태 및 마지막으로 알려진 중요 설정.
- 폰트 준비: 특히 첫 번째 화면이 레이아웃 안정성을 위해 커스텀 타이포그래피에 의존하는 경우.
- remote config이 UI를 제어하는 경우: 첫 번째 화면이 안전하게 렌더링되지 않으면 사용할 수 없습니다.
다른 많은 튜토리얼이 놓친 또 다른 세부 사항이 있습니다. 스플래시 화면의 동작은 환경에 따라 달라집니다. Expo 스플래시 처리에 대한 개발 및 프로덕션의 토론은 Expo Go에서 스탠드 알론 빌드와 동작이 같지 않으며, 자동 시각성 관리가 수동 제어를 시작하면 변경되는 것을 보여줍니다. 그 이유 중 하나는 지연 기반 예제가 낡아지는 것입니다. 실제 시작 시퀀스를 숨기기 보다는 시작 시퀀스와 동기화하는 것입니다. 시동 화면은 사용자가 미완성된 UI를 보지 않도록 방지하는 데 사용되어야 합니다. 혼합 스택에서 동작을 추가하거나 더 광범위한 렌더링 성능을 평가하는 경우,
이 __CAPGO_KEEP_0__ 앱의 애니메이션 성능에 대한 안내서를 참조하세요.
__CAPGO_KEEP_0__ Capacitor __CAPGO_KEEP_0__는 유용한 맥락입니다. 동일한 규칙이 적용되기 때문입니다. 시작 작업을 가볍게 유지하고 불필요한 블록킹을 피하고 애니메이션을 반응성과 경쟁하는 대신 반응성을 지원하세요.
팀이 전체 바이너리 릴리스 외에 시각적 수정을 배포할 때 유용한 실제적인 주의사항입니다: Capgo JavaScript, CSS, 복사본, 설정, 및 자산 업데이트에 대해 Electron 앱과 Capacitor를 처리하지만 React Native의 네이티브 스플래시 변경은 네이티브 빌드 PIPELINE에 속하는 것이며 실제 스플래시 화면은 JavaScript 앱이 실행되기 전에 나타납니다.
일반적인 스플래시 화면 문제 해결
대부분의 스플래시 화면 문제는 반복되는 몇 가지 범주에 속합니다. 해결책은 문제를 분리한 후 더 쉬워집니다. 자산 문제, 타이밍 문제, 네이티브 통합 문제.
최근 React Native 가이드의 커뮤니티 패턴은 동일한 핵심 흐름으로 수렴했습니다: 라이브러리 추가, 네이티브 런치 자산 구성, show 시작 시 호출, 그리고 앱이 준비되면 숨기기. Android 설정은 일반적으로 시작 시 호출을 포함합니다. MainActivity plus XML 또는 drawable 리소스, iOS는 LaunchScreen.storyboard 및 AppDelegate. Expo는 같은 개요에서 사각형 1024×1024 PNG 를 앱 아이콘과 추천하고 EAS Build는 npx create-expo-app,에 요약된 이 React Native splash screen 가이드에 따라 , 프로젝트를 생성한 경우에 필요한 크기의 이미지를 생성할 수 있습니다..
Stretched or blurry splash image
증상: 로고가 부드럽게 보이거나 잘라내거나 이상하게 확대되어 보입니다.
원인: 기본 이미지가 올바르게 내보내기되지 않았거나 레이아웃이 풀 스크린 래스터에 의존하여 잘 적응하지 못합니다.
Fix: 포스터 스타일 아트워크를 중앙에 배치된 로고가 있는 평면 배경으로 교체하고 원래 디자인 소스에서 재수출, 밀도에 따른 자산을 재생성하고 Android drawables 또는 iOS asset catalog에 포함된 파일이 의도한 파일인지 확인하세요.
화면이 흰색으로 나타나기 전에 스플래시가 사라진다
증상: 자연스럽게 사라진 네이티브 스플래시 뒤에 사용자가 빈 프레임을 보게 됩니다.
원인: 앱이 루트 UI가 의미 있는 콘텐츠를 렌더링 할 수 있는지 확인하기 전에 스플래시를 숨기는 것입니다.
Fix: 준비가 되면 스플래시를 숨기지 말고 시간이 지남에 따라 숨기세요. Expo에서는 일반적으로 루트 뷰가 레이아웃을 할 수 있을 때까지 스플래시를 유지하고, bare 프로젝트에서는 동일한 패턴을 사용하고 첫 렌더링 된 화면이 즉시 더 많은 비동기 작업에 의존하지 않도록 확인하세요.
한 개의 플랫폼에서 스플래시 화면이 누락된 경우
증상: Android에서 보이지만 iOS에서 보이지 않거나 그 반대
원인: 일반적으로 스토리보드 참조, 테마 연결 문제, 또는 올바른 대상에 자산이 추가되지 않은 경우입니다.
해결 방법: 플랫폼별 파일을 하나씩 확인하세요. 안드로이드에서는 런치 테마와 리소스 참조를 검사하고, iOS에서는 Xcode에서 앱 대상 설정, 자산 카탈로그 멤버십을 확인하세요. LaunchScreen.storyboard스플래시 구성 추가 후 빌드가 중단됩니다.
증상:
앱이 라이브러리 추가 또는 스플래시 파일 변경 후 컴파일이 중단되었습니다. 원인:
네이티브 프로젝트 파일과 생성된 구성이 플러그인 또는 자산 변경과 같은 경우 동기화가 끊어질 수 있습니다. 해결 방법:
빌드를 정리하고 필요 시 의존성을 재설치한 후 네이티브 프로젝트를 완전히 빌드하세요. Expo에서 생성된 네이티브 레이어에 있는 경우 주의 깊게 재생성하고 플러그인 구성 확인하세요. 바레스 앱인 경우 다시 검토하세요. Build breaks after adding splash configuration MainActivity, AppDelegate리소스 이름, plist 또는 manifest 편집을 위한 작은 불일치에 대해.
가속화된 팀은 스플래시 화면을 출시 엔지니어링의 일부로, 일회성 시각 작업이 아닌으로 다루는 것을 가장 빠르게 처리합니다. 이는 런칭 후에 시작 자산, UI 텍스트 또는 앱 셸 동작이 빠르게 변경해야 하는 경우 더 중요합니다. Capgo Capgo와 Electron 팀에게 JavaScript, CSS, 복사본, 구성, 및 자산 수정을 다음 런칭에 ship할 수 있는 Capacitor를 제공합니다. 또한 rollout 제어 및 롤백 지원이 있으며, 이 문제는 앱层 보다는 네이티브 런칭 화면 자체에 있기 때문에 유용합니다.
스플래시 화면에서 React Native: 2026년 완전 가이드
__CAPGO_KEEP_0__를 사용하는 경우 스플래시 화면에서 React Native: 2026년 완전 가이드 를 사용하여 네이티브 미디어 및 인터페이스 동작을 계획하고, 이를 @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-live-activities와 연결하세요. @capgo/capacitor-live-activities for the native capability in Using @capgo/capacitor-live-activities, @capgo/capacitor-live-activities for the implementation detail in @capgo/capacitor-live-activities, Using @capgo/capacitor-video-player native 기능을 위해 사용하는 @capgo/capacitor-video-player @capgo/capacitor-video-player native 기능 구현에 대한 구체적인 내용을 위해 @capgo/capacitor-video-player를 사용합니다. Using @capgo/capacitor-native-navigation native 기능을 위해 사용하는 @capgo/capacitor-native-navigation.