> For the complete documentation index, see [llms.txt](https://developers-apps-in-toss.toss.im/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers-apps-in-toss.toss.im/checklist/app-nongame.md).

# 비게임 출시 가이드

미니앱에 공통으로 적용되는 기준과 기능별 출시 가이드예요. 출시하기 전에 반드시 내용을 확인하고 가이드를 지켜 주세요.

아래의 체크리스트를 지키지 않았거나 다크패턴이 확인되면 검수가 승인되지 않고, 출시 후에 확인된 경우에도 서비스 노출이 제한되거나 중단될 수 있어요.

{% hint style="info" %}
**참고해 주세요**

아래 출시 가이드의 항목은 지속적으로 최신화되고 있어요.
{% endhint %}

### 접속 및 앱 내 기능

* [ ] 미니앱이 정상적으로 열려요.
* [ ] ‘앱 내 기능’ 으로 소개한 모든 서비스 기능을 미니앱에서도 동일하게 사용할 수 있어요.
* [ ] ‘앱 내 기능’ 에 등록한 스킴이 정상적으로 연결돼요.
* [ ] 앱 스킴으로 진입한 뒤, 뒤로가기 버튼이 정상적으로 작동해요.&#x20;

### 네비게이션 바

* [ ] 앱인토스 네비게이션 바를 사용하고 있어요.
* [ ] 뒤로가기 버튼을 노출하는 경우, 모든 화면에서 정상적으로 동작해요.
* [ ] 앱 이름과 로고를 내비게이션 바에 노출하는 경우, 앱 정보에 등록한 브랜드 로고와 미니앱 이름(국문)을 사용해요.
* [ ] 홈 버튼을 노출하는 경우, 정상적으로 동작해요. (선택 사항)
* [ ] 미니앱 기능 버튼은 최대 1개만 노출돼요. (선택 사항)
* [ ] 토스 네비게이션 바의 뒤로가기 버튼과 미니앱에서 자체 구현한 뒤로가기 버튼이 동시에 보이지 않아요.
* [ ] 더보기 버튼(⋯)에서 토스 공통 기능(신고, 공유 등)을 정상적으로 제공해요.&#x20;
* [ ] 닫기 버튼과 뒤로가기 버튼이 노출되고, 동작이 명확해요.
* [ ] 최초 화면에서 뒤로가기를 누르면 미니앱이 종료돼요.

### 사용자 식별키 발급

* [ ] 사용자 식별자 값을 확인하여 저장하고, 미니앱이 정상적으로 시작돼요.&#x20;
* [ ] 유저의 미니앱 사용 기록이 유지돼요.&#x20;
* [ ] 미니앱을 종료했다가 다시 접속해도 필요한 데이터가 유지돼요.&#x20;

### 보안 및 안정성

* [ ] 외부에서 전달받은 코드를 실행하는 기능은 사용할 수 없어요. (예: `eval` 등)
* [ ] 브라우저 히스토리 조작이나 웹뷰 임베드 등 어떤 방식으로든, 자사 사이트(토스 도메인 외부)로 이동하거나 그 콘텐츠를 렌더링할 수 없어요. 최종적으로 노출되는 콘텐츠는 반드시 토스 도메인 내에서 렌더링되어야 해요. (예: `window.location.replace`, 자사 도메인을 불러오는 WebView/iframe 중첩 등)
* [ ] 서버 사이드 렌더링(SSR)은 사용할 수 없어요. 클라이언트 사이드 렌더링(CSR) 또는 정적 사이트 생성(SSG) 방식만 사용할 수 있어요.
* [ ] WebSocket을 사용하는 경우, 암호화된 `wss://` 연결만 사용해요. (예: Firebase Firestore, Supabase Realtime 등)
* [ ] API 통신은 암호화된 HTTPS 연결만 사용해요.
* [ ] 사용자 로그인 정보, 결제(토스페이, 인앱 결제) 내역 등 민감 정보는 DB에 암호화해서 저장해야 해요.
* [ ] 개인정보를 클라이언트에서 자체 서버로 전송할 때도 암호화할 것을 권장해요.

### 서비스 이용 동작

* [ ] 안드로이드 시스템 백버튼을 누르면 뒤로가기 또는 미니앱이 종료돼요.
* [ ] 지도처럼 꼭 필요한 경우를 제외하고, 제스처 기반 확대·축소 기능은 비활성화돼요.
* [ ] 미니앱 테마는 라이트 모드로 구현돼 있어요.
* [ ] 모든 UI 컴포넌트가 의도한 대로 동작해요.
* [ ] 스크롤, 터치, 화면 전환 등 인터랙션 반응이 2초 이상 지연되지 않아요.
* [ ] 미니앱을 종료했다가 다시 들어와도 필요한 데이터가 유지돼요.
* [ ] 서비스 이용에 꼭 필요한 외부 링크가 정상적으로 열려요.
* [ ] 공유 기능에서 `intoss-private://` 링크를 사용하지 않고 `intoss://` 스킴을 사용해요.
* [ ] 미니앱 문구에 비속어, 은어, 과도한 유행어가 포함되지 않아요.&#x20;
* [ ] 불법성, 선정성 등 위법한 콘텐츠가 포함돼 있지 않아요.
* [ ] 위치, 알림 등 기기 권한은 사용자 동의를 먼저 받아요.
* [ ] 사용자가 권한을 허용하지 않아도 나머지 기능은 계속 정상적으로 작동해요.
* [ ] 비정상적으로 네트워크 사용량이 급증하지 않아요.
* [ ] 비정상적으로 메모리 사용량이 급증하지 않아요.

### UX

* [ ] 미니앱에 진입하자마자 바텀시트(토스 로그인, 알림 동의문 등)가 자동으로 나타나지 않아요.
* [ ] 특정 화면 전환 시 바텀시트로 사용자의 행동을 강제로 유도하지 않아요.&#x20;
* [ ] 모든 화면에서 사용자가 미니앱을 나갈 수 있는 방법이 명확해요.&#x20;
* [ ] CTA 버튼을 보면 다음에 어떤 행동이 일어날지 예측할 수 있어요.
* [ ] 링크나 컴포넌트로 자사 서비스 이동이나 자사 앱 설치를 유도하지 않아요.&#x20;
* [ ] 인앱 광고는 인트로/로딩/컷신/팝업 모달 등 일시적인 화면에 노출되지 않아요.&#x20;
* [ ] 인앱 광고를 클릭하도록 오인시키거나 강제로 유도하지 않아요.

### 토스 로그인

* [ ] 토스 로그인을 사용하는 경우, 어떤 서비스인지 알 수 있도록 인트로 페이지에서 서비스 설명을 제공해요.&#x20;
* [ ] 설정한 토스 로그인 약관 화면 URL이 정상적으로 노출돼요.&#x20;
* [ ] 토스 앱에서 로그인 연결을 끊은 뒤 미니앱에 다시 접속하면, 다시 로그인을 요청하는 약관 화면이 노출돼요.
* [ ] 토스 앱에서 로그인 연결을 끊으면 사용자 데이터가 미니앱에 남아 있지 않아요.&#x20;
* [ ] 토스 로그인이 아닌 자사 로그인이나 기타 로그인 방식은 제공하지 않아요.

### 인앱 결제

* [ ] 인앱 결제를 진행할 때, 미니앱에서 재생 중인 음악은 일시 정지돼요.
* [ ] 인앱 결제 주문 금액과 구글 또는 애플 결제창에 표시되는 금액이 일치해요.&#x20;
* [ ] 인앱 결제가 정상적으로 진행돼요. 구글 결제 테스트 환경에서도 확인해요.
* [ ] 인앱 결제가 완료된 뒤 미니앱으로 돌아오면 결제 결과가 정상적으로 반영돼요.
* [ ] 인앱 결제창에서 취소를 선택하면 주문 화면으로 돌아가요.
* [ ] 잔액 부족 등으로 결제에 실패했을 때, 사용자가 실패 사유를 인지할 수 있어요.
* [ ] 인앱 결제 취소가 정상적으로 처리돼요.
* [ ] 인앱 결제 상품에 대한 결제 내역을 사용자가 확인할 수 있어요.
* [ ] 토스 앱에 로그인된 기기를 변경해도, 기존에 결제한 인앱 결제 데이터(이용권 등)가 유지돼요.&#x20;

### 토스페이

* [ ] 토스페이 간편 결제를 진행할 때, 미니앱에서 재생 중인 음악은 일시 정지돼요.
* [ ] 주문 금액과 토스페이 결제창에 표시되는 금액이 일치해요.
* [ ] 토스페이 결제에 실패하면 오류 메시지가 노출되고, 사용자가 실패 사유를 인지할 수 있어요.&#x20;
* [ ] 토스페이 결제 직전에 취소를 선택하면 이전 화면으로 돌아가요.
* [ ] 토스페이 외의 다른 결제 수단은 제공하지 않아요.
* [ ] 토스페이 결제창에서 취소를 선택하면 주문 화면으로 이동해요.

### 인앱 광고

* [ ] 인앱 광고가 재생될 때, 미니앱에서 재생 중인 음악은 일시 정지돼요.
* [ ] 토스 애즈 SSP 정책을 준수해요. ([#](https://developers-apps-in-toss.toss.im/documentation/common/monetization/iaa/interstitial-rewarded-ad#policy))
* [ ] 테스트 광고가 아닌 실제 인앱 광고가 정상적으로 노출되고, 중간에 종료되거나 튕기는 현상이 없어요.
* [ ] 사용자가 예상하기 어려운 순간에 인앱 광고를 노출하지 않아요.&#x20;
* [ ] 인앱 광고가 정상적으로 노출되고, 중간에 종료되거나 튕기는 현상이 없어요.
* [ ] 인앱 광고는 사전에 로딩돼 있어요. 광고 재생 시점에 실시간으로 로딩하지 않아요.&#x20;
* [ ] 인앱 광고가 종료되면 미니앱 화면으로 정상적으로 돌아와요.&#x20;
* [ ] 인앱 광고 종료 후 미니앱 음악이 다시 재생돼요.
* [ ] 리워드 광고를 끝까지 시청하면 보상이 정상적으로 지급돼요.&#x20;
* [ ] 배너 광고가 적절한 위치에 노출돼요. (상단/중앙/하단)&#x20;
* [ ] 배너 광고가 스크롤 가능한 화면에만 노출돼요.&#x20;

### 공유 리워드

* [ ] 설정한 공유 리워드 화면이 정상적으로 노출돼요.&#x20;
* [ ] 공유 리워드 화면을 닫으면 미니앱 화면으로 정상적으로 돌아와요.
* [ ] 친구 초대가 완료되면 보상이 정상적으로 지급돼요.&#x20;


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers-apps-in-toss.toss.im/checklist/app-nongame.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
