expo-web-browser
라는 모듈을 제공합니다. 이 글에서는 WebBrowser를 사용하는 방법과, 비슷한 기능을 제공하는 WebView와의 차이점도 함께 알아보겠습니다.expo-web-browser
는 Expo에서 제공하는 라이브러리로, 외부 웹 페이지를 expo-web-browser
패키지를 설치해야 합니다.npx expo install expo-web-browser
import * as WebBrowser from 'expo-web-browser';
import { Button } from 'react-native';
export default function App() {
const openLink = async () => {
await WebBrowser.openBrowserAsync('https://example.com');
};
return <Button title="링크 열기" onPress={openLink} />;
}
https://example.com
주소가 구분 | WebBrowser | WebView |
---|---|---|
UI | 시스템 기본 브라우저 UI (Safari / Chrome) | 앱 내부의 브라우저 구성요소 |
보안성 | 높은 편 (시스템 브라우저 기능 활용) | 앱에서 직접 렌더링, 보안 설정 필요 |
사용 목적 | 외부 링크 열기 | 웹 앱을 앱 내부에 통합하기 |
사용자 경험 | 브라우저 느낌 (주소창 있음) | 앱에 완전히 통합된 느낌 (주소창 없음) |
복잡도 | 매우 간단 | 설정 및 관리 필요 |
openBrowserAsync
는 Promise를 반환하므로, 사용 후에는 닫힘 이벤트 등을 처리할 수도 있습니다.
예를 들어, 브라우저가 닫힌 뒤 어떤 동작을 하게 만들 수 있습니다.const result = await WebBrowser.openBrowserAsync('https://example.com');
if (result.type === 'dismiss') {
console.log('브라우저가 닫혔습니다.');
}
WebBrowser
는 외부 링크를 앱 안에서 간편하게 보여줄 수 있는 매우 유용한 기능입니다. WebView
보다 설정이 훨씬 간단하고 보안성도 높기 때문에, 단순한 링크 열기에는 WebBrowser를 사용하는 것이 좋습니다.openAuthSessionAsync
함수를 사용하면 OAuth 로그인에 특화된 방식도 구현 가능합니다.