
: 품질 지표에 대한 통합적 지침을 제시
Chrome UX Report : 실제 Chrome 사용자가 경험하는대로, 각 Web Vital에 대해 사이트의 성능을 빠르게 평가할 수 있음
: 핵심 사용자 경험 요구사항. 모든 웹 경험에서 중요한 사용자 경험의 공통 집합

https://developers-kr.googleblog.com/2020/05/Introducing-Web-Vitals.html
⭐ 로딩 경험
<img> 요소
<svg> 요소 내부의 <image>
<video> 요소(포스터 이미지 사용)
url() 함수를 통해 로드된 배경 이미지가 있는 요소(CSS 그라데이션과는 대조적임)
텍스트 노드 또는 기타 인라인 수준 텍스트 하위 요소를 포함하는 블록 수준 요소
: 처음부터 단순하게 작업을 진행하기 위해 의도적으로 요소 제한
⭐ 상호 작용

메인 스레드는 일시적으로 사용 중인 상태가 됨
FID는 FCP와 TTI(time to interactive) 사이의 일부 콘텐츠를 렌더링했지만 아직 안정적으로 상호작용할 수 없는 상태

<input> , <textarea> )<select> )<a> )](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4ed04918-fc4f-40da-890d-d1328bd2b899%2FUntitled.png?table=block&id=e3a2e209-61eb-4167-828f-2df3278206a4&spaceId=f689e500-373a-4165-aa04-597874523cab&width=2000&userId=c9063acb-ca91-437c-bc16-4c28062781a1&cache=v2)
https://web.dev/cls/#layout-shift-score뷰포트 내의 가시적 요소가 두 프레임 사이에서 시작 위치가 변경될 때마다 layout-shift항목을 보고함
기존 요소가 시작 위치를 변경할 때만 발생
/*해당 움직임에 대한 impact fraction(영향분율)과 distacne fraction(거리분율)이라는 두 가지 측정값을 사용해 계산*/
layout shift score = impact fraction * distance fraction
영향분율 : 불안정 요소가 두 프레임 사이 뷰포트 영역에 미치는 영향을 측정
거리분율 : 뷰포트를 기준으로 불안정 요소가 이동한 거리 측정
프레임에서 *불안정 요소*가 수평 또는 수직으로 이동한 최대 거리를 뷰포트의 가장 큰 치수
](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F95d5a719-64dd-4771-affa-d93c1eb42b8d%2FUntitled.png?table=block&id=cffc8e4f-21f7-451f-9706-418668105bb7&spaceId=f689e500-373a-4165-aa04-597874523cab&width=2000&userId=c9063acb-ca91-437c-bc16-4c28062781a1&cache=v2)
위의 예에서 가장 큰 뷰포트 치수는 높이이고 불안정한 요소는 뷰포트 높이의 25%만큼 이동. 거리분율 = 0.25
따라서 이 예에서 영향분율은 0.75이고 거리분율은 0.25이므로 레이아웃 이동 점수 = 0.75 * 0.25 = 0.1875
👉 모두 중요한 사용자 중심의 결과를 포착, 현장에서 측정 가능, 이를 뒷받침해주는 실험실 진단 측정항목 등가 기준과 도구가 있음
](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F20d4a7e1-8b57-4292-86e8-dd578767a46b%2FUntitled.png?table=block&id=04e34259-7b8e-4040-9c9a-553f3fde6288&spaceId=f689e500-373a-4165-aa04-597874523cab&width=2000&userId=c9063acb-ca91-437c-bc16-4c28062781a1&cache=v2)
https://web.dev/defining-core-web-vitals-thresholds/
👉 완벽한 임계값은 없으며 때로는 여러 가지 합리적인 임계값 중 선택해야 할 수도 있음을 인지하면서 위의 기준을 가장 잘 충족하는 임계값을 선택하는 것
: 정확하고 정량적으로 측정 가능한 객과적인 기준으로 성능을 이야기하는 것
Web Vitals 측정방법
👉 일반적으로 좋은 성능을 보장하기 위해서는 둘 다 활용하는 것이 좋음
// Example of using web-vitals to measure & report CLS, FID, and LCP.
import {getCLS, getFID, getLCP} from 'web-vitals';
function reportToAnalytics(data) {
const body = JSON.stringify(data);
(navigator.sendBeacon && navigator.sendBeacon('/analytics', body)) ||
fetch('/analytics', {body, method: 'POST', keepalive: true});
}
getCLS((metric) => reportToAnalytics({cls: metric.value}));
getFID((metric) => reportToAnalytics({fid: metric.value}));
getLCP((metric) => reportToAnalytics({lcp: metric.value}));
개발할 때와 웹을 검색할 때, 모두 각 Core Web Vital의 상태에 쉽게 접근할 수 있도록 하는 것이 매우 중요
웹 페이지의 품질을 개선하기 위한 자동화된 오픈 소스 도구
Google Chrome 브라우저에 직접 내장된 웹 개발자 도구 모음
웹페이지의 콘텐츠를 분석하여 페이지 속도를 향상하기 위한 추천사항을 제공
사이트의 검색 트래픽 및 실적을 측정하고, 문제를 해결하며, Google 검색결과에서 사이트가 돋보이게 할 수 있음
](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fe69850d4-5997-439a-b292-fdb5d84ac942%2FUntitled.png?table=block&id=819cac62-c127-4cec-9dc8-747a0ad0ab0f&spaceId=f689e500-373a-4165-aa04-597874523cab&width=2000&userId=c9063acb-ca91-437c-bc16-4c28062781a1&cache=v2)