The critical rendering path is the sequence of steps a browser must complete between receiving a page and displaying anything on screen. It involves parsing the markup into a document structure, parsing the stylesheets into a style structure, combining the two into a render tree, calculating the layout, and painting the result. Understanding it explains why some resources delay the first appearance of content and others do not.
Stylesheets are render-blocking by design, and this is deliberate rather than a defect. A browser that painted before styles were available would display unstyled content and then reflow, which is worse than a brief delay. The practical consequence is that every stylesheet referenced in the document head must be downloaded and processed before anything appears, so the number, size, and delivery speed of stylesheets directly determines when the page becomes visible.
Scripts are parser-blocking unless marked otherwise, which is the other major source of delay. A synchronous script encountered during parsing halts document construction until it has been downloaded and executed, because it might modify the document. Marking scripts as deferred allows parsing to continue and executes them after the document is complete; marking them as asynchronous allows execution as soon as they arrive. Choosing the correct attribute for each script is among the cheapest available improvements.
Shortening the path involves reducing both the number of round trips and the work required at each stage. Inlining the styles needed for the initial viewport removes a blocking request entirely, with the remainder loaded without blocking. Deferring scripts that are not required for the first render, minimising and compressing resources, and eliminating redirects that add complete round trips before anything begins all reduce the elapsed time before first paint.
Resource hints let the browser start work earlier than discovery would allow. Preloading declares that a resource discovered late in the document, such as a font referenced from a stylesheet or a hero image applied through CSS, will be needed, so the download begins immediately. Preconnect establishes connections to third-party origins in advance, removing the connection and negotiation overhead from the critical moment. Used selectively these help; used indiscriminately they compete for bandwidth and make matters worse.
Fonts deserve specific attention because they sit on the path and are discovered late. A web font referenced from a stylesheet cannot begin downloading until that stylesheet has been processed, and depending on the display strategy the text may be invisible until it arrives. Preloading the fonts used above the fold, choosing a display strategy that shows fallback text immediately, and matching fallback metrics to reduce reflow all address this.
Client-side rendering extends the path substantially, which is why it requires deliberate mitigation. When the initial document contains no content and everything must be constructed by JavaScript, the path includes downloading, parsing, and executing the bundle, and then fetching data, before anything appears. Server-side rendering or static generation returns meaningful content to the initial path, which is the structural fix rather than an optimization.
Because the path is determined by how the page is constructed and delivered, improvement usually requires template and build changes rather than configuration. In practice this analysis sits within web performance work, the implementation is delivered through product development, and where a site's rendering approach is the underlying constraint the discussion becomes an architectural one about how pages are produced rather than a tuning exercise.