> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 딥 링크와 앱 구성

URL 스킴, 화면 라우트 맵, 번들 구성 계약.

## 하나의 env 값이 스킴을 만듭니다

EXPO_PUBLIC_APP_SCHEME은 apps/mobile/app.config.ts에 입력되며, 로그인 흐름이 사용하는 것과 같은 모바일 인증 구성을 통해 딥 링크 스킴과 프로덕션 허용 오리진을 도출합니다. 값은 검증되며 소문자 스킴 문자만 허용되고, http, https, file, javascript, data, exp, exps 같은 예약된 스킴은 거부됩니다. 기본 제공값은 supastack입니다.

두 식별자는 app.json에 com.supastack.app으로 제공됩니다(ios.bundleIdentifier와 android.package). 첫 스토어 업로드 전에 스킴과 함께 이름을 바꾸세요.

```
# apps/mobile/.env.local
EXPO_PUBLIC_APP_SCHEME=supastack
```


## 앱이 받아들이는 링크 형태

딥 링크는 커스텀 스킴 전용입니다. <scheme>://auth/callback은 로그인 핸드오프를 완료하고, <scheme>://invite/<token>은 초대 화면을 열어 토큰을 초대 수락 라우트에 POST합니다. 유니버설 링크는 구성되어 있지 않습니다 — app.json에 associatedDomains가 선언되어 있지 않으므로 모든 링크는 스킴을 통해 해석됩니다.

apps/mobile/app 아래의 expo-router 맵에서 index는 로그인 화면이고, onboarding과 new-organization은 첫 실행 설정을 처리하며, paywall은 구매를 표시하고, feedback은 로그아웃 상태에서도 작동하는 독립 화면입니다. (app) 그룹 안에서 탭은 home, chat, notifications, settings이고, content, commerce, assistant는 홈 빠른 작업에서 도달하는 숨겨진 화면이며, settings는 자체 화면 하위 스택을 가집니다.


## 번들이란 양쪽이 일치해야 한다는 뜻입니다

공개 Expo 값은 배포되는 바이너리에 구워지고, 서버는 요청마다 MOBILE_ALLOWED_ORIGINS에 대해 모바일 콜백을 검증합니다. 이 쌍은 일치해야 합니다. 스킴이나 오리진 변경은 새 앱 빌드와 서버 배포를 의미하며, 둘 중 하나만 바꿀 수는 없습니다.


## OTA 채널 없음

킷에는 expo-updates 종속성도 업데이트 구성도 없습니다 — JavaScript 변경은 새 스토어 빌드를 통해서만 사용자에게 도달합니다. API를 가장 오래된 지원 빌드와 호환되게 유지하거나 새 기능을 서버 주도 상태 뒤에 두세요.


## 검증 및 문제 해결

콜드 스타트 링크, 앱이 백그라운드에서 실행 중일 때 도착하는 링크, 로그아웃 상태에서 받은 링크를 테스트하세요. 링크가 앱 대신 스토어 목록이나 브라우저를 열면 설치된 빌드의 스킴이 EXPO_PUBLIC_APP_SCHEME과 일치하지 않는 것입니다.


## 다음

[네이티브 UI와 테마](https://supastack.dev/ko/docs/mobile/ui.md)
