핫와이어 네이티브: 웹 내비게이션을 네이티브처럼 만드는 터보 어댑터의 역할

Turbo adapter: Hotwire Native's backdoor entrance | Radan Skorić's website

작성자
발행일
2025년 07월 25일

핵심 요약

  • 1 핫와이어 네이티브는 웹뷰 기반 앱에 자바스크립트를 주입하여 터보의 내비게이션을 가로채고 네이티브 코드와 연동합니다.
  • 2 터보의 기본 `BrowserAdapter`를 `TurboNative` 어댑터로 교체함으로써 웹 내비게이션 처리를 네이티브 앱이 제어하도록 합니다.
  • 3 `visitProposedToLocation` 함수를 통해 웹 내비게이션을 터보가 처리할지, 네이티브 코드가 직접 처리할지 결정하여 네이티브 경험을 제공합니다.

도입

핫와이어 네이티브(Hotwire Native)는 웹 애플리케이션의 내비게이션을 네이티브 앱처럼 느끼게 하는 통합 방식입니다. 이는 주로 디버깅 및 아키텍처 결정에 중요한 역할을 합니다. 본 글은 핫와이어 네이티브가 웹 내비게이션을 어떻게 가로채고 네이티브 앱 경험을 제공하는지 그 메커니즘을 상세히 설명합니다. 핵심은 웹뷰 내에서 실행되는 터보(Turbo)와 네이티브 코드 간의 통신을 가능하게 하는 어댑터의 역할입니다.

핫와이어 네이티브 앱은 본질적으로 모바일 브라우저를 내장한 웹뷰(Webview)를 사용하는 일반 네이티브 앱입니다.

웹뷰의 역할

  • iOS에서는 WebKit UI 프레임워크의 WKWebView를, Android에서는 Webkit Android 라이브러리의 WebView 컴포넌트를 사용합니다.
  • 웹뷰 내의 브라우저는 일반 브라우저처럼 HTTP를 통해 콘텐츠를 가져오고 제출하며 웹 페이지를 렌더링합니다.
  • 핫와이어 네이티브 앱은 별도의 API 없이 웹 앱의 서버 통신을 그대로 활용합니다.

네이티브 경험 제공 방식

  • 핫와이어 네이티브는 웹 앱의 내비게이션을 감지하고 자체 로직을 삽입하여 렌더링을 변경합니다.
  • 새로운 웹 앱 섹션을 열 때 새 화면이 슬라이드되거나 모달로 열리는 등 네이티브 앱과 같은 전환 효과를 제공합니다.

터보(Turbo)와의 통합

  • WebView는 페이지 내비게이션을 감지할 수 있지만, 터보 드라이브(Turbo Drive)는 내비게이션을 가로채어 자체 로직을 실행합니다. 핫와이어 네이티브는 이 터보의 내비게이션에 플러그인됩니다.
  • 터보가 ‘방문(visit)’을 처리할 때 Session 객체를 통해 NavigatorproposeVisit 메서드를 호출합니다.
  • Navigator는 내비게이션을 터보가 처리해야 하는지 확인한 후, Session 객체에 visitProposedToLocation을 호출하고, Session은 다시 adapter 객체에 visitProposedToLocation을 전달합니다.

어댑터의 핵심 역할

  • 터보는 기본적으로 BrowserAdapter 클래스를 사용합니다.
  • 핫와이어 네이티브는 Turbo.registerAdapter를 호출하여 이 기본 어댑터를 TurboNative 클래스로 교체합니다.
  • turbo.js 파일이 웹뷰 인스턴스에 주입되어 TurboNative 객체를 구성하고 새로운 어댑터로 등록됩니다.
  • visitProposedToLocation 함수는 터보가 방문을 처리할 때마다 호출되며, 핫와이어 네이티브 어댑터는 이 함수를 통해 네이티브 코드와 통신하여 터보가 평소대로 동작하게 할지, 아니면 네이티브 코드가 URL 로딩을 직접 처리할지 결정합니다.
  • 이 메커니즘을 통해 핫와이어 네이티브는 터보 드라이브의 로딩을 막고 페이지 로딩을 제어하여 네이티브와 같은 경험을 제공합니다.

결론

핫와이어 네이티브는 웹뷰 기반의 모바일 앱에서 웹 페이지를 렌더링하면서도 네이티브 앱과 같은 사용자 경험을 제공하기 위해 터보(Turbo)의 어댑터 메커니즘을 적극적으로 활용합니다. 특히, `TurboNative` 어댑터를 주입하여 `visitProposedToLocation` 함수를 통해 웹 내비게이션의 제어권을 네이티브 코드와 공유함으로써, 웹 콘텐츠를 네이티브 앱의 흐름에 자연스럽게 통합합니다. 이는 웹 개발의 효율성을 유지하면서도 모바일 앱의 고급스러운 느낌을 구현하는 핫와이어 네이티브의 핵심적인 통합 전략입니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!