Stremio Web은 동영상 카탈로그를 보여주는 React 앱처럼 보이지만, 저장소의 설계는 화면보다 안쪽에 있습니다. 이 프로젝트는 Stremio의 웹 UI를 제공하면서도 상태 계산과 화면 렌더링을 한 실행 흐름에 모두 넣지 않습니다. React는 UI를 그리고, Rust로 작성된 stremio-core는 WebAssembly로 컴파일되어 Web Worker에서 실행됩니다.
이 코어는 Stremio API와 애드온에 연결되고, 라이브러리와 Continue Watching 동기화 같은 상태를 다룹니다. UI가 코어와 통신하며 결과를 화면에 반영하는 방식입니다. 재생도 별도 계층인 stremio-video가 맡아 브라우저 환경에 맞는 플레이어 구현을 고릅니다. 한쪽에는 React UI, 다른 쪽에는 Worker 안의 엔진, 그리고 재생을 담당하는 추상화가 놓입니다.
이 분리는 브라우저 앱에서 꽤 실용적인 선택입니다. 애드온 기반 카탈로그, 자막, Chromecast, 키보드 중심 재생, 50개 이상의 언어, PWA 설치를 하나의 거대한 프런트엔드 코드로 얽히게 하지 않고 역할별로 나눌 수 있기 때문입니다. 화면이 상태 계산 때문에 직접 무거워지는 상황도 줄일 여지가 있습니다.
다만 Web Worker가 만능 격리막은 아닙니다. 애드온과 API가 느리거나 응답하지 않을 때의 사용자 경험은 여전히 UI가 책임져야 합니다. 브라우저별 재생 차이, 캐스팅 환경, 로컬 자막 처리도 남습니다. 계산 엔진을 화면과 분리했다고 해서 외부 의존성의 불확실성까지 사라지는 것은 아닙니다.
그래서 이 저장소에서 참고할 지점은 단순히 “웹으로도 스트리밍할 수 있다”는 사실이 아닙니다. 브라우저라는 한정된 공간 안에 UI, 상태 엔진, 외부 연결, 재생 계층을 나누고 각자의 경계를 정한 방식입니다. Node.js 22와 pnpm 11을 준비해 개발 서버를 띄우는 일은 쉽지만, 실제 설계의 무게는 그 다음에 있습니다. 어디서 계산하고, 어떤 메시지를 주고받고, 어느 계층이 실패를 감당할지 정하는 문제입니다.