웹 브라우저 구글 크롬 최신 안정화 버전인 124.0.6367.60이 릴리스됐다. 자바스크립트를 사용해 Shadow DOM을 삽입하거나 특정 요소 분석이 완료될 때까지 렌더링을 차단하는 기능이 도입됐다.
먼저 자바스크립트에서 Shadow DOM 사용 가능. 지금까지는 innerHTML을 사용해 요소 내부 HTML을 지정할 때 Shadow DOM을 포함한 HTML을 입력해도 Shadow DOM이 제대로 분석되지 않고 표시되지 않는 문제가 있었다. 크롬 124에선 새로운 setHTMLUnsafe() 메서드가 추가되어 이를 사용하면 Shadow DOM을 포함한 HTML을 적절히 표시할 수 있게 됐다. 또 DOMParser.parseFromString()에 Shadow DOM 분석 기능을 추가한 parseHTMLUnsafe()도 동시에 구현됐다.
이번에 새로 추가된 두 메서드는 명칭에 Unsafe가 붙어 있듯 입력 내용에 대한 악성코드 방지(sanitization)이 수행되지 않아 입력으로 전달되는 내용이 안전한지를 따로 확인해야 한다. 향후 입력 sanitization 기능이 포함된 버전도 등장할 예정이다.
다음은 WebSocketStream API. 기존 WebSocket API에선 서버로부터 메시지를 수신할 때 WebSocket.onmessage가 호출되어 처리가 이뤄진다. 이 때 클라이언트 처리 능력을 초과하는 메시지를 수신하면 메시지 버퍼가 가득 차거나 CPU 사용률이 100%가 되어 응답하지 않게 된다.
크롬 124에서 등장한 WebSocketStream API는 WebSocket API와 Stream API를 통합한 것으로 기존 WebSocket 통신 기능을 유지하면서 Stream AP 백압(backpressure)을 도입했다. 백압은 데이터 수신 준비가 되어 있지 않은 경우 스트림 체인 상위로 전송 속도를 느리게 하는 신호를 보내는 메커니즘이다.
다음은 pageswap 이벤트. 탐색(navigation)에 의해 문서가 새 문서로 바뀔 때 문서 윈도 객체에서 pageswap 이벤트가 발생하게 됐다. 탐색 유형과 함께 동일 출처 내에선 이동 후 URL도 얻을 수 있어 적절한 이동 처리를 할 수 있다.
이어 렌더링 차단 기능 추가. <link rel=expect href=”#id”> 같은 링크 요소를 사용해 요소 ID를 지정하면 해당 ID 요소가 완전히 분석될 때까지 렌더링을 차단할 수 있다. 중요한 콘텐츠 분석이 완료될 때까지 렌더링을 지연시켜 모든 브라우저에서 첫 번째 그리기를 일관되게 할 수 있다.
그 밖에 PIP창에서 disallowReturnToOpener를 지원해 원래 탭으로 돌아가는 버튼을 숨길 수 있게 됐다. 또 스크롤 컨테이너에 포커스를 줄 수 있게 됐다. 기존에는 tabindex에 0 이상 값이 지정된 스크롤 컨테이너만 포커스할 수 있었지만 크롬 124부터는 tabindex가 지정되지 않은 스크롤 컨테이너도 포커스할 수 있게 됐다. 또 임의 페이지를 PWA(Progressive Web App)로 설치할 수 있게 됐으며 22건에 이르는 보안 버그 수정이 포함되어 있다. 다음 안정화 버전인 구글 크롬 125는 현지 시간 2024년 5월 14일 릴리스 예정이다. 관련 내용은 이곳에서 확인할 수 있다.