Page 22 - Web Performance
-
Maxim Mironjuk
-
April 27, 2025
Mutable state is the most common source of hard-to-find bugs in JavaScript applications. Immutability patterns make state changes explicit, enable change detection through reference comparison, and prevent shared state from being modified in unexpected places, from Object.freeze all the way to Records and Tuples.
-
Maxim Mironjuk
-
April 26, 2025
A one-off performance audit improves metrics for a few weeks, then every gain erodes under the pressure of new features. This article shows how teams combine performance budgets, CI checks in the Definition of Done, a rotating champion role and blameless post-incident reviews to keep load times stable for good instead of rescuing them every few months.
-
Maxim Mironjuk
-
April 25, 2025
For years, gzip compression in the browser meant loading pako or a WASM port of zlib, often several hundred kilobytes just for the library. The Compression Streams API makes that unnecessary: CompressionStream and DecompressionStream are available natively in the browser.
-
Maxim Mironjuk
-
April 20, 2025
requestAnimationFrame is the only correct way to implement animations in the browser. Anyone using setTimeout or setInterval is fighting the rendering cycle instead of working with it. This article shows how rAF works, how to build a robust render loop, and which traps destroy the frame rhythm.
-
Maxim Mironjuk
-
April 19, 2025
Classic Linux AIO via libaio generates a separate system call with full context switch overhead for every I/O operation. io_uring replaces this model with two ring buffers shared between kernel and userspace, drastically cutting the number of required system calls, an advantage that becomes especially noticeable in I/O heavy database and search index workloads with high concurrency.
-
Maxim Mironjuk
-
April 17, 2025
Teams that only find slow queries once users complain are working reactively instead of proactively. With slow query log, pg_stat_statements and a clear sampling process, slow queries can be found systematically before they become a production problem, regardless of which database system is in use.
-
Maxim Mironjuk
-
April 16, 2025
The Network Information API provides information about connection type, estimated bandwidth and an enabled data saver mode through navigator.connection, letting applications dynamically adjust image quality, prefetching and video resolution. The once parallel Battery Status API was removed from most browsers for privacy reasons, and this article gives both APIs a realistic place and shows practical alternatives.
-
Maxim Mironjuk
-
April 14, 2025
A single giant JavaScript bundle slows down every Vue app on first load. Bundle splitting with dynamic import, manualChunks and route based code splitting spreads the code into smaller pieces the browser can load in parallel and on demand.
-
Maxim Mironjuk
-
April 14, 2025
Anyone building a custom contact, quote request or newsletter form in a Hyvä theme regularly forgets one single, inconspicuous hidden field, then wonders about error messages that look like a bug. This article shows how form key CSRF protection works under the hood in Magento and how to wire it up cleanly in phtml templates, AJAX requests with Alpine.js, custom controllers and alongside full page cache, with real code examples from Magento 2.4.8-p4 and PHP 8.4.
-
Maxim Mironjuk
-
April 12, 2025
Static Site Generation, Incremental Static Regeneration and prerendering services promise fast, cache-friendly store pages, but they bring their own build pipeline with artifact stores, rebuild windows and separate cache invalidation. This article shows precisely, in technical terms, where Magento with Hyva, Varnish Full Page Cache and ESI-backed dynamic islands already deliver the same benefits without that added complexity, and when a hybrid approach is still justified.
-