RSS Amplifier

Blog

Web Performance Tips

Tips for building Lightning Fast Web Applications!

webperf.tipsRSS feed ↗33 posts

Latest posts

Layers and Compositing

Web developers typically aren't exposed to low-level browser rendering primitives, yet the concepts of Layers and Compositing are…

Identifying Network vs. CPU Bottlenecks in Load Flows

Tracing web applications takes time and practice to master. However, there are a few general visual patterns one can use to quickly spot if…

Iframes and Process Allocation

A common question I've encountered when consulting with teams that utilize in their web application architecture is: Does an…

Eliminating Choppy Animations by Leveraging the Browser Compositor Thread

Many web applications utilize animations to achieve a variety of visual effects. For example, a web application may surface an animated…

Layout Thrashing and Forced Reflows

The browser's style and layout process (also known as reflow ) is responsible for assigning visual styles and geometry to elements of a…

Why Your Cached JavaScript Is Still Slow and Incurs Performance Overhead

Web Developers often fixate on optimizing the delivery of assets to the end-user's device, and overlook the computation that takes place…

Eliminating Choppy Scrolling in OneDrive Web with a One-Line Change

I use Office 365 for my personal productivity tool of choice and often use the OneDrive web UX to manage my personal files and photos…

The Sequential Network Request Pattern (and why you should avoid it!)

The Sequential Network Request pattern is a web performance anti-pattern, and it's unfortunately common in production web applications…

Techniques for bypassing CORS Preflight Requests to improve performance

CORS (Cross Origin Resource Sharing) enables web apps to communicate securely across origins. It typically functions by having the browser…

An Introduction to the Browser Rendering Pipeline

Users love pixels (frames) delivered on screen as fast as possible; that's what makes a web application feel fast ! HTML and CSS are the…

Detecting when React Components are Visually Rendered as Pixels

Despite the name of React's most well known API, ReactDOM.render(...) , React does not render! 😮 Rendering (the process of presenting…

Multi-process on the Web: The Browser Process Model

While Web Applications are granted a single thread, the Main Thread , to run most of their application and UI logic, Web Browsers are…

Chromium F12 Profiler: The Main Thread Pane

The majority of my time spent analyzing the CPU component of a web application's performance trace is within the Chromium F12 Profiler's…

Identifying Uncompressed Resources in your Web App

Applying compression algorithms like gzip or brotli to your resources transferred over the network is crucial to ensuring optimal…

Identifying Common Network Bottlenecks

In this tip, we'll look at common network bottlenecks, how they manifest in Chromium Profiler, Network Tab, and how you can quantify them in…

Long Tasks: What they are and why you should avoid them

All web applications are granted a single thread, the Main Thread, which is responsible for: Handling user input events, like clicks and…

Favor functions over classes for better minification

As part of the ES2015 specification, JavaScript received support for the class syntax. This syntax provides familiar object oriented…

Reduce your resource size with CSS and JavaScript Minification

Minification is one of the most common techniques web developers use to reduce the their app's resource sizes . Minifiers are build tools…

Preloading network dependencies on hover

The browser's 'mouseover' event can be used as an explicit signal from your users indicating what their next action might be. In this tip…

Detecting when the Browser Paints Frames in JavaScript

Do your performance measurements capture when the browser renders pixels to your user? Most likely, not! In my experience, most developers…

Measuring with Performance Timing Markers 📏

Measuring allows engineers to identify how their app's time is being spent at runtime. Setting up proper measurements helps: Establish a…

Event Loop Fundamentals

The Browser Event Loop is probably the most important frontend performance concept to grasp. Its behavior dictates how web applications…

Transfer Size vs. Resource Size

The size of the resources (images, JavaScript files, CSS files, etc.) web applications deliver to end-users directly impacts performance. It…

HTML Parsing Inefficiencies on Uber Eats

Like many others throughout the pandemic, I used Uber Eats to safely deliver food while going to restaurants was unavailable. One day, I…

Function Self Time

In this tip, we'll discuss function self time, how it's represented in a flamegraph, and how it differs from cumulative time. Understanding…

How to optimize Date format operations

Many web applications require the presentation of user-friendly date strings within their UI. For example, most users would prefer seeing…

Identifying the source of slow codepaths in the Chromium Profiler

The Chromium Profiler produces incredibly useful visualizations via flamegraphs to help us understand what is consuming CPU time in thread…

Flamegraphs In Depth 🔥🔥

Performance profiles of modern web applications usually produce flamegraphs of significant complexity. In this tip, we'll look at more…

How to Read Flamegraphs 🔥

Flamegraphs are the industry-standard way to visually represent runtime code stack traces and their respective time to execute as a…

A Basic Overview of the Chromium F12 Performance Profiler

The Chromium Performance Profiler's UI can appear overwhelming at first, but it is actually quite intuitive once you understand how it's…

Using the Chromium Network Tab for Performance Insights

The Chromium Network tab has many capabilities, ranging from payload previews, request blocking and replaying, traffic filtering, and much…

How to Read the Chromium Profiler Network Pane

Network bottlenecks are one of the most common types of performance issues in web apps I diagnose. The web fundamentally operates by…

How to Collect a Web Performance Trace

Whenever I work with a team that is interested in improving their web product's performance, one of the first things I ask is Have you…