게시일: 2026년 1월 21일
Chrome 144부터 웹 앱 매니페스트가 있는 설치 가능한 웹 앱의 업데이트 프로세스가 간소화되어 더 결정적이고 예측 가능하며 효율적으로 변경되었습니다. 이 게시물에서는 현재 접근 방식과 이를 개선하기 위해 적용한 변경사항을 설명합니다.
이전 접근 방식 (Chrome 144 이전)
Chrome 144 이전에는 웹 애플리케이션에 업데이트를 사전 예방적으로 트리거하는 특정 이벤트가 없었습니다. 대신 개발자가 앱 매니페스트 또는 연결된 아이콘을 수정할 때 업데이트가 발생할 수 있습니다. 업데이트 프로세스는 사용자 에이전트가 매니페스트 링크를 사용하여 매니페스트를 가져올 때 시작되며, 이는 일반적으로 사용자가 사이트를 방문하거나 앱을 실행할 때 발생합니다 (해당 매니페스트가 연결됨). 업데이트가 필요한지 확인하기 위해 시스템은 현재 매니페스트와 아이콘을 이전에 기록된 상태와 비교합니다. 이 절차는 비트맵 비교를 실행하기 위해 항상 네트워크에서 아이콘을 다운로드해야 했으므로 리소스 집약적이었습니다.
아이콘 다운로드로 인한 서버 부담을 완화하기 위해 Chrome은 이러한 검사를 앱당 하루에 한 번으로 제한하는 스로틀을 구현했지만 총 대역폭 소비는 높은 상태로 유지되었습니다. 또한 검사를 하루에 한 번으로 제한하면 개발 및 테스트 중에 불일치가 발생하며 개발자가 업데이트를 받지 못한 사용자에게 안정적인 솔루션을 제공하는 데도 방해가 됩니다.
이 접근 방식으로 인해 개발자는 앱 이름이나 아이콘 업데이트와 같은 보안에 민감한 변경사항을 구현할 때 복잡한 문제를 해결해야 했습니다. 이러한 변경사항은 앱 ID 변경사항이라고도 합니다. 웹 앱에는 업데이트를 검토할 Google Play와 같은 중앙 기관이 없으므로 이러한 수정사항은 사용자에게 명확하게 표시되어 확인을 받아야 합니다. 하지만 사용자에게 이러한 변경사항을 요청하는 가장 적절한 시기를 결정하는 것은 여전히 어려운 문제였습니다.
이전 버전의 업데이트 대화상자에서도 아이콘이 사용자에게 시각적으로 동일하게 표시되는데도 변경되었다고 주장하여 혼란을 야기하는 경우가 많았습니다. 이 문제는 미미한 차이를 자주 표시하는 직접 픽셀 비교에 의존하는 데서 비롯되었습니다. 일부 변형은 의도적인 개발자 조정으로 인해 발생했지만, 대부분은 CDN이 이미지를 동적으로 다시 인코딩하여 발생했습니다. 확인 대화상자가 너무 자주 트리거되어 결국 Chrome 91에서 아이콘 업데이트가 사용 중지되었습니다.
Android용 Chrome에서 이 문제를 해결하기 위해 몇 년 전에 시각적 차이 임계값이 도입되었습니다. 이렇게 하면 아이콘 변경사항이 중요한 경우에만 사용자 확인이 요청됩니다. 이 개선사항으로 인해 데스크톱의 Chrome에서는 기능이 사용 중지된 상태로 유지되지만 Android에서는 아이콘 업데이트가 복원되었습니다.
웹 앱 업데이트 변경사항의 제약 조건 및 목표
새 업데이트 프로세스 개발은 다음 목표를 기반으로 진행되었습니다.
- 사용자 기대치 유지: 앱의 ID는 기본적으로 출처와 연결되어 있으므로 명시적인 사용자 승인 없이 이름과 아이콘을 변경해서는 안 됩니다.
- 기능 일관성 보장: 모든 사용자에 대해 일관된 기능을 보장하려면 애플리케이션을 최대한 최신 상태로 유지해야 합니다.
- 예측 가능한 UX 및 대화상자 제공: 개발자는 사용자가 앱 이름이나 아이콘 업데이트에 관한 인터페이스 메시지를 언제 보게 될지 쉽게 예측할 수 있어야 합니다.
- 네트워크 사용 최적화: 업데이트 메커니즘은 불필요한 데이터 트래픽을 최소화해야 합니다.
Chrome 144에서 무엇이 변경되었나요?
이름 및 아이콘 업데이트는 이제 선택사항입니다.
이전에는 사용자에게 앱을 제거하거나 아이콘 및 이름 변경을 즉시 수락하도록 요구하는 방해적인 대화상자가 표시되었습니다. 이 기능은 펼쳐진 점 3개 메뉴에서 액세스할 수 있는 사용자 친화적인 추천으로 대체되었습니다. 이제 사용자는 선택 시 원하는 경우 이러한 ID 변경사항을 완전히 무시할 수 있습니다.
대부분의 매니페스트 업데이트는 즉시 적용되지만 보안에 민감한 구성원으로 간주되는 앱 아이콘과 이름은 별도로 저장됩니다. 이를 통해 사용자는 원하는 시간에 이러한 특정 변경사항을 검토하고 적용할 수 있습니다.

앱 업데이트 검토를 클릭하면 수정된 대화상자가 표시됩니다. 제목은 업데이트되는 요소에 따라 변경됩니다.

아이콘 필드가 변경되지 않으면 아이콘이 다운로드되지 않음
이제 매니페스트의 icons 필드가 마지막으로 적용된 버전과 동일하게 유지되면 아이콘이 변경되지 않은 것으로 간주됩니다. 이 새로운 논리에 따라 Chrome은 시각적 비교를 위해 아이콘을 다운로드하지 않으며 아이콘 URL을 Cache-Control:immutable로 효과적으로 처리합니다.
이제 아이콘 업데이트를 트리거하려면 개발자가 메타데이터 또는 아이콘 URL을 수정해야 합니다.
업데이트 제한 삭제
Chrome은 더 이상 설치된 애플리케이션의 매니페스트를 발견할 때마다 아이콘을 다운로드하지 않으므로 업데이트 확인을 하루에 한 번으로 제한했던 이전 제한이 삭제되었습니다. 이제 개발자는 보안에 민감하지 않은 모든 구성원에 대해 업데이트가 즉시 발생한다고 가정할 수 있습니다.
플랫폼 간 사소한 아이콘 변형 처리
사용자 환경을 개선하기 위해 Chrome에서는 이제 픽셀별 비교에서 10% 미만의 차이를 보이는 아이콘 업데이트를 자동으로 적용합니다. 이렇게 하면 CDN 재인코딩으로 인해 발생하는 것과 같은 사소한 변형이 사용자에게 혼란스러운 업데이트 대화상자를 트리거하지 않습니다.
잠재적인 악용을 방지하기 위해 이 허용량은 하루에 한 번으로 제한됩니다. 이 기간 내에 추가 변경사항이 발생하면 아이콘은 표준 업데이트로 처리되고 사용자에게 변경사항을 확인하라는 메시지가 표시됩니다.
아이콘 및 이름 업데이트 예시
{
"name": "Example App",
"short_name": "App",
"id": "https://www.example-app.com/",
"start_url": "https://www.example-app.com/index.html",
"scope": "https://www.example-app.com/",
"icons": [
{
"src": "https://www.example-app.com/img/app.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
}
],
... other attributes omitted ...
}
아이콘 URL을 변경하면 사용자가 아이콘을 변경하는 업데이트 대화상자를 볼 수 있습니다.
{
"name": "Example App",
"short_name": "App",
"id": "https://www.example-app.com/",
"start_url": "https://www.example-app.com/index.html",
"scope": "https://www.example-app.com/",
"icons": [
{
"src": "https://www.example-app.com/img/app-NEW-URL.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
}
],
... other attributes omitted ...
}