Understanding Web Share Target: Practical Limits and Real-World Pitfalls
웹 앱(PWA) 또는 Chromium‑기반 브라우저에서 “다른 앱 → 내 웹앱으로 공유”를 구현할 때, 염두할 것들
Hun Jang Nov 30, 2025
이건 개발자 입장에서 좀 알아두면 유용할 Web Share Target API (및 연관된 공유 API) 관련 요약 + 현실의 주의점들이다.
✅ Web Share / Web Share Target 기본
- Web Share API (
navigator.share()/navigator.canShare()) 는 텍스트, URL, 파일 등을 사용자가 선택한 공유 대상으로 보낼 수 있게 해준다. (MDN Web Docs)
- Web Share Target API 는 “내 웹앱을 공유 대상(share target)으로 등록”하게 해준다. 즉, 사용자가 기기 내 다른 앱에서 공유 메뉴를 열었을 때 내 PWA/web 앱이 나타나도록 할 수 있다. (MDN Web Docs)
- Manifest 파일에
share_target항목을 추가해야 하며, 공유된 데이터가GET방식 (주로 텍스트/URL) 일지,POST + multipart/form-data(파일 포함) 일지를 선택 가능하다. (MDN Web Docs)
- POST + multipart 방식으로 구현하면, 예: Android의 카메라/파일 앱 → 내 PWA 로 이미지나 비디오 파일을 공유받을 수 있다. (Modern Web Development with Chrome)
이 덕분에, 웹 앱도 네이티브 앱처럼 “공유 인텐트(intent) 받아 처리 → UI/비즈니스 로직 처리” 흐름을 갖출 수 있다.
⚠️ 실제 구현/배포 시의 복잡한 현실
그럼에도 불구하고, 다음과 같은 주의점과 제약이 있다.
- 제대로 동작하려면, 앱이 HTTPS + 서비스워커 + installable PWA 형태여야 한다. 단순 웹사이트만으론 share target으로 나오지 않을 수 있다. (chodounsky.com)
- 공유 대상 등록 후에도, 실제 공유 메뉴에 뜨지 않는 경우가 있다 — manifest 설정 오류나 브라우저/기기 특성 탓. 예: 한 개발자는 manifest를 설정했지만 공유 트레이에 나타나지 않았다는 보고를 남김. (Stack Overflow)
- 파일 공유 (POST + multipart) 는 특히 예민하다. 일부 브라우저나 플랫폼에서는 제한된 파일 타입만 허용하거나 특정 MIME 타입에서 실패하는 경우 있음. 예를 들어, JSON 파일(
application/json)은 “Permission denied”를 일으키는 브라우저가 있었다는 보고가 있다. (Stack Overflow)
- 더 복잡한 경우: Trusted Web Activity (TWA) 형태로 배포된 앱에서는 파일 공유가 제대로 동작하지 않는 버그가 과거에 보고되었다. 특히 Samsung Internet 브라우저가 기본인 기기에서 — 공유 메뉴엔 뜨지만, 실제로 공유된 파일이 수신되지 않는 경우가 있었다. (Samsung Developer Forums)
- > 요약: 단순히 “웹앱을 패키지화해서 Play 스토어에 올리면 모든 것이 해결된다”는 보장은 없다.
- 그리고 “얼마만큼 큰 파일까지 공유를 허용하는가”는 표준 스펙에 굳이 명시된 것은 아니다. 브라우저나 OS 구현, 메모리/스토리지 제약, 또는 OS의 공유 시트 제한 등에 따라 다르므로, 대용량 파일은 실패할 수 있다. (실제로 “Share too large” 오류가 보고되는 경우 있음 — 이건 브라우저 구현에 따라 다르다.)
🎯 그래서 “웹 앱 → 네이티브급 공유 경험”을 구현하려면
- 먼저, 개발 중인 앱을 PWA로 만들고 제대로 installable 하도록 설정해야 한다. HTTPS, 서비스워커, manifest, 아이콘, start_url 등 꼼꼼히 챙겨야 한다.
share_targetmanifest 설정을 정확하게 구성한다 — GET과 POST + multipart 중 어떤 걸 쓸지, 파일 공유 필요 여부, accept할 MIME 타입 등.
- 기능 사용 전에 브라우저 호환 여부를 feature detection으로 체크한다. (예:
if ('share_target' in manifest)또는 런타임에navigator.share/navigator.canShare체크) — 다수의 브라우저/기기 조합을 염두에 둬야 한다.
- 배포 방식에 따라 동작이 달라질 수 있으므로, 단순 PWA, WebAPK, TWA 등 여러 방식으로 실제 테스트를 해보는 것이 안전하다. 특히 Samsung Internet 기반 기기에서는 과거 이슈가 있었다는 점을 기억할 것.
- 파일 공유 기능을 넣을 때는 “허용되는 파일 타입, MIME, 파일 크기”를 실제로 테스트해서, 실패 시 대비한 UX나 에러 핸들링을 준비하는 것이 좋다.
웹 기반 서비스 + 모바일 공유 경험을 구현하려는 니즈가 있을 경우, Web Share Target은 여전히 강력한 무기다. 다만 “모든 환경에서 자동으로 동작한다”는 생각은 버리고, 설치 방식·브라우저·파일 타입·용량 등 가능한 모든 변수를 염두에 두는 것이 중요하다.