Fetch 응답을 WebAssembly.compileStreaming이 거부

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

샌드박스 WebView에서 fetch 응답을 WebAssembly.compileStreaming이 거부하여 Flutter Web 미니앱이 첫 화면에서 멈춥니다

앱: 뚜시푸시 (appName: ttush-push), @apps-in-toss/web-framework 3.5.0
기기: iPhone, iOS 18.7, TossApp 5.278.2
발생 시점: 2026-09-29 저녁(KST)에 확인했습니다.

[증상]
콘솔의 테스트 푸시로 샌드박스 번들을 열면, 앱이 Flutter 초기화 화면(“Initializing”)에서 더 진행되지 않습니다.
같은 날 오전에 같은 기기와 같은 TossApp 버전에서 첫 화면까지 정상적으로 떴던 번들(20260929-9)도, 지금 다시 열면 같은 증상으로 멈춥니다. 20260929-10, -11, -14도 같은 증상입니다.
번들 파일은 바뀌지 않았으므로, 그 사이에 WebView 쪽 동작이 달라진 것으로 보입니다.

[오류]
웹 디버그 툴즈의 Log 탭에 다음 오류가 두 번 기록됩니다.
Uncaught (in promise) TypeError: first argument must be an Response or Promise for Response

[진단 결과]
번들의 가장 앞에 진단 스크립트를 넣어 확인했습니다.

  1. window.fetch가 Proxy입니다. 문자열로 변환하면 "function ProxyObject() { [native code] }"가 나옵니다. 이 상태는 번들의 어떤 스크립트보다도 먼저 적용되어 있었습니다.
  2. window.Response가 bind된 함수(“bound Response”)입니다.
  3. fetch(“canvaskit/canvaskit.wasm”)가 돌려준 객체는 instanceof Response가 true이고 status 200, content-type application/wasm입니다. 그런데 WebAssembly.compileStreaming에 넘기면 위 TypeError로 거부됩니다.
  4. 같은 응답을 arrayBuffer()로 읽어 WebAssembly.compile에 넘기면 정상적으로 컴파일됩니다.
  5. 웹 디버그 툴즈를 켜기 전에도 같은 증상이 있었습니다.

Flutter Web은 CanvasKit을 WebAssembly.compileStreaming(fetch(…))으로 불러오기 때문에, 이 단계에서 실패하면 앱이 시작되지 않습니다. 따라서 Flutter Web(CanvasKit 렌더러)으로 만든 다른 미니앱도 같은 영향을 받을 수 있다고 추정합니다. 다만 다른 앱에서는 확인하지 않았습니다.

[현재 대응]
WebAssembly.compileStreaming과 instantiateStreaming을 arrayBuffer()를 거쳐 컴파일하는 방식으로 바꾸는 스크립트를 번들에 넣어 우회했습니다. 이 번들(20260929-18)은 정상 동작합니다.

[문의]

  1. 샌드박스 WebView에서 fetch와 Response를 감싸는 동작이 최근에 추가되거나 바뀌었는지 알려 주세요.
  2. 이 동작이 검토 환경과 실제 출시 환경에도 똑같이 적용되는지 알려 주세요.
  3. 네이티브 Response를 돌려주도록 수정할 계획이 있는지, 아니면 미니앱 쪽에서 스트리밍 컴파일을 쓰지 말라는 것이 권장 사항인지 알려 주세요.

appName (선택)

ttush-push

이미지 첨부

안녕하세요 :slight_smile:
뭔가 이전 배포의 영향인 것 같은데, 확인해보겠습니다!

혹시 지금은 잘 되실까요 ?!

안녕하세요, 확인해 주셔서 감사합니다!

저희 쪽에서는 Wasm을 arrayBuffer로 받아 WebAssembly.compile로 컴파일하도록 우회해 두어서, 현재 배포한 번들은 정상으로 열립니다.
원래 증상(호스트가 주입한 fetch의 Response를 WebAssembly.compileStreaming이 거부해 CanvasKit이 로드되지 않던 문제)이 해결됐는지는, 우회 전 번들로 다시 확인해 보고 결과 알려 드릴게요.

2026년 10월 1일 (목) 오후 8:18, Dylan <notifications@appsintoss.discoursemail.com>님이 작성: