Tauri 정적 앱의 서버 capability 경계
Tauri의 output: export 빌드는 Next.js 서버 route와 redirect를 포함하지 않는다. 웹과 같은 코드를 공유한다는 사실이 같은 실행 능력을 보장하지 않는다.
4회 조회약 2분 읽기
목차
Tauri의 output: export 빌드는 Next.js 서버 route와 redirect를 포함하지 않는다. 웹과 같은 코드를 공유한다는 사실이 같은 실행 능력을 보장하지 않는다.
실행 환경별 책임
Route Handler·인증·배치처럼 서버 수명이 필요한 기능을 실행합니다.
빌드된 화면과 허용된 원격 API만 사용합니다.
정적 화면 위에 명시적으로 허용된 파일·SQLite·OS capability를 더합니다.
미지원은 장애로 재시도하지 않고 가능한 실행 경로를 안내합니다.
실패를 404로 표현하지 않는다
서버 소유인 /api/batch/init를 정적 앱에서 호출하면 사용자는 원인을 알 수 없는 오류를 본다. 런타임에서 Tauri를 판정하고 배치 초기화를 호출하지 않으며, unsupported: server-owned-tauri-static 같은 명시적 상태를 반환한다.
화면은 이 상태를 “이 기능은 웹 서버에서 실행됩니다”와 웹 사용 경로로 연결할 수 있다. 로그에는 기능명과 플랫폼만 남기고 토큰이나 원격 endpoint를 넣지 않는다.
플랫폼별 판정
| 기능 종류 | 웹 SSR | 정적 웹 | Tauri | 실패 UX |
|---|---|---|---|---|
| 서버 Route Handler | 가능 | 불가 | 불가 | 웹 서버 경로 안내 |
| 공개 원격 API | 가능 | 가능 | allowlist 시 가능 | 네트워크·권한 분리 |
| 로컬 파일·SQLite | 불가 | 불가 | capability 허용 시 가능 | 설정/권한 안내 |
| background scheduler | 서버 소유 | 호스트별 | 앱 lifecycle 종속 | 마지막 실행 시각 |
type CapabilityResult<T> =
| { status: "available"; value: T }
| { status: "unsupported"; reason: "server-owned-tauri-static" }
| { status: "failed"; retryable: boolean };
unsupported는 장애가 아니므로 무한 재시도나 오류 알림을 만들지 않습니다. failed와 구분해야 사용자가 설치를 고치려 하지 않고 실제 장애 지표도 오염되지 않습니다.
기능 추가 체크리스트
- 정적 export에서 필요한 네트워크·IPC capability를 목록화한다.
- 서버 전용 기능에는 로딩·unsupported·재시도 상태를 설계한다.
window접근은 함수 내부에서만 실행해 SSR을 안전하게 유지한다.- 웹과 Tauri의 지원 범위를 테스트로 고정한다.