
첫 단계는 HTML을 처리해 DOM 트리를 만드는 것이다. HTML을 분석하여 토큰화하고 트리를 생성하는 것을 목표로 한다.
HTML 토큰은 시작 및 종료 태그 그리고 속성 이름 및 값을 포함한다. 토큰화된 입력을 분석하여 DOM 트리를 만든다. DOM 트리는 태그간의 관계와 계층을 나타내며 태그가 많아질수록, DOM 트리를 만드는데 오랜 시간이 필요하다.

구문 분석기가 이미지 태그와 같은 논 블로킹 자원을 만나면 브라우저는 자원을 요청하고 분석을 계속 진행한다. 마찬가지로 CSS 파일을 만났을 때도 지속될 수 있다. 하지만 async 또는defer 같은 설정이 없는 script 태그는 랜더링을 막고 HTML 분석을 중지시킨다.
아래 첨부된 사진을 통해 구축 과정을 자세히 알아보자.

변환: 바이트를 문자 코드로 변환한다.토큰화: 문자코드를 토큰으로 변환한다.렉싱: 토큰을 객체 구문으로 변환한다.구축: DOM 트리CSSOM 트리를 구축하는 과정은 DOM 트리를 생성하는 과정과 동일하다.

위 과정을 통해서 CSSOM 트리가 구축된다.

DOM 트리와 CSSOM 트리가 만들어지면, 둘을 결합해 랜더 트리를 구축한다. 랜더 트리에는 페이지 렌더링에 필요한 노드만 포함시킨다. 즉 display: none 속성을 가지는 태그는 랜더 트리에 포함되지 않는 것이다.

요소가 추가되거나 수정이 필요할 때 렌더 트리를 업데이트하고 레이아웃 단계를 다시 수행하게 된다. 이 과정을 리플로우라고 부르며 아래와 같은 상황에서 발생한다.
리플로우가 일어나는 대표 속성 목록
position, width, height, margin, padding, border, border-width, font-size, font-weight, line-height, text-align, overflow
리플로우는 변경사항을 반영하기 위해서 렌더 트리 업데이트 및 레이아웃 과정을 재수행하는 것이고, 이 결과를 브라우저에 표시하는 과정을 리페인트라고 부른다.
리페인트만 일어나는 대표 속성 목록
background, color, text-decoration, border-style, border-radius
항상 리플로우와 리페인트가 같이 일어나는 것은 아니고 레이아웃에 영향을 미치지 않는 단순 색상 변경은 리플로우 과정없이 리페인트만 수행한다.