프런트엔드 개발의 가장 큰 디펜던시인 크롬 브라우저의 주요 이슈를 Chrome Platform Status의 Roadmap과 한 달간 blink-dev 활동 요약을 기준으로 정리하여 공유한다.
💡M은 Milestone을 의미하며, M102은 102버전을 의미한다.
💡 웹 플랫폼 관련 이슈 위주로 다루며, 서비스에 영향이 크다고 판단되는 부분은 목차에 📌 를 표시한다.
💡 표준화에 대한 웹 개발자의 의견은 Chrome Platform Status 사이트에 쓰인 내용을 그대로 인용했다.
M102
inert 속성M103
AbortSignal.timeout() 정적 메서드popstate 이벤트 발생 허용"deflate-raw" 압축 포맷role 속성에 대한 ARIA 속성 반영Element.isVisible 메서드prerenderingEarly Hintform 요소의 rel 속성M104 (dev)
object-view-boxDev Trial
:has() 의사 클래스overflow-clip-margin 프로퍼티에 visual-box 값 지원그 외 프로토타이핑
:modal 의사 클래스inert 속성inert 속성을 사용하면 웹 작성자가 DOM 트리의 일부를 비활성으로 표시할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
AbortSignal.timeout() 정적 메서드주어진 시간(밀리초) 후에 자동으로 중단되는 새로운 AbortSignal 객체를 반환한다. 이 메서드로 개발자는 신호 수락 비동기 API(예를 들어 fetch())에 대한 시간 초과를 쉽게 구현할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
popstate 이벤트 발생 허용이전의 크롬 브라우저에서는 hashchange를 비동기로 실행하고 load 이벤트까지 popstate를 지연했다. 이는 문서를 로드하는데 걸리는 시간에 따라 이벤트의 순서가 [hashchange, popstate] 또는 [popstate, hashchange]가 될 수 있음을 의미한다. 변경 후의 크롬 브라우저는 파이어폭스 브라우저와 동일하게 URL 변경 즉시 popstate가 발생한다. 즉 순서가 항상 [popstate, hashchange]가 된다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
"deflate-raw" 압축 포맷새로운 압축 포맷인 "deflate-raw"를 추가한다. 이를 통해 웹 개발자가 헤더나 푸터 없이 원시 압축 스트림에 액세스할 수 있다. 예를 들어 zip 파일을 읽고 쓰는데 필요하다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
role 속성에 대한 ARIA 속성 반영웹 개발자가 "role" ARIA 속성을 직접 쿼리하고 수정할 수 있도록 자바스크립트 API를 제공한다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
Element.isVisible 메서드Element.isVisible()는 요소가 보이면 true를 반환하고 그렇지 않으면 false를 반환한다. display: none, visibility, content-visibility, opacity를 포함해 요소를 보이지 않게 만드는 다양한 요소를 확인한다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
포커스 그룹 기능은 포커스가 가능한 엘리먼트들 사이에서 키보드 화살표 키를 이용해 키보드 포커스 탐색을 용이하게 하는 기능이다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
로컬 폰트로 작업하려는 웹 앱은 사용자가 먼저 서버에 업로드해야 한다. 경우에 따라 이 문제를 해결하기 위해 폰트 접근 같은 추가 기능을 제공하고 로컬 폰트를 WebFont로 제공하는 별도의 로컬 프로그램을 설치하도록 사용자에게 요청한다.
폰트 접근 API를 사용하면 웹 앱이 이런 방법을 쓰지 않고도 로컬 폰트 및 일부 메타 데이터 목록에 접근할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
prerenderingprerendering은 웹 페이지가 필요로 하기 전에 로드하므로 해당 페이지에 대한 실제 탐색이 발생하면 즉시 표시될 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
Early Hint최상위 프레임 탐색 중에 HTTP 응답코드 103 Early Hint를 지원한다. 응답에 링크 헤더가 포함된 경우 크롬 브라우저는 최종 응답이 수신되기 전에 지정된 리소스(modulepreload 포함)를 preload하거나 지정된 출처에 preconnect하려고 시도한다. 이를 통해 웹 개발자는 LCP 같은 코어 웹 바이탈을 최적화할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
form 요소의 rel 속성form 요소에 rel 속성을 추가한다. rel=noopener가 있는 form 요소로 탐색된 웹 사이트에 window.filename이 나타나지 않도록 하고 참조 헤더가 rel=noreferer와 함께 전송되지 않게 한다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
웹 블루투스 API를 사용하면 웹 페이지가 블루투스를 통해 장치와 통신할 수 있다. 그러나 이 API는 교차출처 iframe에서 사용할 수 없다. 최상위 문서가 API의 메서드를 사용하려면 교차출처 iframe이 명시적으로 허용되어야 한다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
object-view-boxobject-view-box를 이용하면 작성자가 대상 대체 요소의 컨텐츠 상자 내에 그려야하는 이미지 내의 하위 집합을 지정할 수 있다. 이를 통해 CSS 그림자 같은 적절한 동작으로 사용자 정의 광원 또는 그림자가 적용된 이미지를 만들 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
전체화면 기능 위임 기능을 이용하면 송신자 창에서 일시적인 사용자 활성화를 포기한 후 신뢰할 수 있는 다른 창으로 requestFullscreen()을 호출하는 기능을 전송할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
:has() 의사 클래스:has() 의사 클래스는 인수로 전달된 선택자와 일치하는 요소가 하나 이상 있는 요소를 지정하는 선택자다. M105 배포 예정이다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
overflow-clip-margin 프로퍼티에 visual-box 값 지원overflow-clip-margin은 overflow: clip인 요소를 자르기 전에 그 경계를 벗어나는 정도를 결정한다. 이 속성에 visual-box 값을 사용해 컨텐츠가 잘리는 overflow clip edge를 정의하는 참조 상자를 구성할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
작성자가 컨테이너 요소의 크기에 따라 요소의 스타일을 지정할 수 있다. @media 쿼리와 비슷하지만 뷰포트 크기 대신 컨테이너 크기를 기준으로 평가한다는 점만 다르다.
/* 기본적으로 display: block을 사용하지만 충분한 공간이 있다면 display: flex를 사용한다. */
.component {
container-type: inline-size;
}
.component > main {
display: block;
}
@container (inline-size >= 800px) {
.component > main {
display: flex;
}
}상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
:modal 의사 클래스dialog 요소의 스타일을 지정하는 의사 클래스 선택자를 추가한다. :modal 의사 클래스는 해제될 때까지 외부 요소와의 모든 상호작용을 배제하는 상태에 있는 요소를 나타낸다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.