본문으로 건너뛰기

앱 버전 로깅 및 버전별 기능 분기 패턴

getTossAppVersion()은 현재 토스 앱 버전을 '5.206.0' 형태의 문자열로 동기 반환한다. 에러 로그에 버전을 포함하거나, isMinVersionSupported()와 조합해 버전별 기능을 분기할 때 사용한다.

문자열 직접 비교는 피하세요

버전 문자열을 >, <로 직접 비교하면 lexicographic 정렬로 잘못된 결과가 나올 수 있습니다. 버전 분기가 필요하다면 isMinVersionSupported를 사용하세요.

에러 리포트에 앱 버전 포함하기

import { getTossAppVersion, getPlatformOS } from '@apps-in-toss/web-framework';
import { useEffect } from 'react';

const appVersion = getTossAppVersion();
const platform = getPlatformOS();

function App() {
useEffect(() => {
const handler = (event: PromiseRejectionEvent) => {
console.error('[unhandled]', {
appVersion,
platform,
reason: event.reason,
});
};

window.addEventListener('unhandledrejection', handler);
return () => window.removeEventListener('unhandledrejection', handler);
}, []);

return <main>{/* 앱 콘텐츠 */}</main>;
}

appVersionplatform을 모듈 스코프에서 한 번만 읽으면 이벤트 핸들러마다 호출할 필요가 없다.

앱 버전을 로그에 태그로 붙이기

import { getTossAppVersion, env } from '@apps-in-toss/web-framework';

const appVersion = getTossAppVersion();
const deploymentId = env.getDeploymentId();

function createLogContext() {
return { appVersion, deploymentId };
}

// 사용 예
async function trackAction(action: string): Promise<void> {
await fetch('/api/logs', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ action, ...createLogContext() }),
});
}

버전과 배포 ID를 공통 컨텍스트로 묶으면 로그 분석 시 특정 릴리스의 이슈를 빠르게 추적할 수 있다.

관련 API