When the Fetch API first arrived, it provided a modern, Promise-based alternative to the clunky XMLHttpRequest. Today, in 2026, Fetch has evolved far beyond a single method. It is now a comprehensive ecosystem of APIs designed to handle massive background downloads, optimize resource loading, and ensure data consistency across unreliable networks. This post explores the complete suite of Fetch-related APIs available in modern browsers, providing TypeScript implementations to help you build resilient web applications. The Core Fetch API The Core Fetch API remains the foundation for network requests in the browser and Node.js. It revolves around the fetch method and...
Streams are the safest default when data can be large, continuous, or unpredictable. Instead of buffering everything in memory first, streams process data chunk by chunk. The goal is not to memorize every stream API detail. It is to build a reliable mental model and use a small set of battle-tested patterns in production. This post focuses on: Choosing between Web Streams and Node streams Bridging both APIs in Node.js Applying backpressure correctly Building transform pipelines for common tasks Streaming with fetch Handling cancellation and failures Who This Is For If you already use async/await, work with APIs/files, and write...
Node 25.9 introduces a new experimental streaming module: node:stream/iterhttps://nodejs.org/docs/latest/api/streamiter.htmliterable-streams. To use it,you must enable it with --experimental-stream-iter. The new API changes the core streams model from class/event-based streams to iterable-based streams. This post covers: 1. How the new iterable streams model works 2. What it improves over classic Node streams and Web Streams 3. A brief interop boundary with browser streams 4. TypeScript + ESM examples you can adapt today Quick Mental Model With node:stream/iter, streams are just iterables of byte batches: Async form: AsyncIterable Sync form: Iterable That phrase packs two ideas: Iterable means you consume data by iterating...
The DNS originally handled only a small subset of characters: letters a-z, digits 0-9, and hyphens. This constraint is known as the LDH rule Letters, Digits, Hyphens. As the web globalized, users required domain names in native scripts, such as Arabic, Chinese, or Cyrillic. However, changing the global DNS infrastructure to support Unicode would have made millions of legacy systems non-functional. Punycode resolves this by translating Unicode strings into LDH-compliant ASCII strings. Punycode represents Unicode strings using the limited ASCII character set. This technical standard enables internationalized domain names IDNs to function within the legacy domain name system DNS infrastructure....
There's a special kind of array in JavaScript called a typed array. Typed arrays are not the same as normal arrays, and they are not intended to replace them. Instead, they provide a way to work with binary data in a more efficient manner. This post will cover the basics of typed arrays, including what they are, how they relate to buffers, how they work, and when to use them. What are Typed Arrays? Typed arrays are array-like objects that provide a mechanism for reading and writing raw binary data in memory buffers. Typed arrays are not intended to replace...
Web applications frequently need to render HTML strings dynamically. Whether you build a client-side templating system, display user-generated content, or render rich text, safely converting raw strings into DOM elements is a persistent challenge. Historically, developers relied on innerHTML, a convenient but notoriously insecure property that opens the door to cross-site scripting XSS attacks. To address this, the Web Platform Incubator Community Group WICG proposed the HTML Sanitizer API. This guide explores how the Sanitizer API works, why the web platform needs a native solution, how it compares to established third-party libraries, and what existing web patterns it supersedes. Implementation...
Feature flags, also known as feature toggles, are a software engineering technique that lets you turn specific functionality on or off during runtime without deploying new code. They decouple feature release from code deployment, which gives teams granular control over how and when users interact with new changes. How feature flags work At their core, feature flags are conditional control points strategically placed inside your codebase. When the application runs, it evaluates the condition the flag to determine which execution path to take. Instead of hardcoding these conditions, the application retrieves the flag's state from an external source. Because the...
Handling massive datasets or high-frequency real-time data efficiently requires a fundamental shift in how applications process information. Loading an entire multi-gigabyte video or parsing thousands of database rows into memory at once creates significant performance bottlenecks and risks crashing your application. Streams solve this by processing data incrementally in small, manageable chunks. This guide explores the architecture of streams, the differences between the Web Streams API and Node.js streams, how to manage errors and cancellations, and how to recover broken stream pipelines. Node.js Streams vs. Web Streams API Before writing code, understand the historical context and the architectural differences between...
Web Components comprise a suite of technologies for creating reusable custom elements. By encapsulating functionality from the rest of the application code, Web Components provide a standards-based approach to building widgets native to the browser. Unlike components in frameworks like React or Vue, Web Components rely on W3C-standardized APIs to define new HTML tags, encapsulate styles, and manage lifecycle events without external dependencies. The Web Components Umbrella The term "Web Components" refers to three main technologies used in tandem: mermaid graph TD WCWeb Components --> CECustom Elements WC --> SDShadow DOM WC --> HTHTML Templates CE --> |Define| TagNew HTML...
Python has always been the lingua franca of data science. Its rich ecosystem of libraries: NumPyhttps://numpy.org/ for numerical computing, Pandashttps://pandas.pydata.org/ for data manipulation, Matplotlibhttps://matplotlib.org/ for visualization, and Scikit-learnhttps://scikit-learn.org/ for machine learning—has made it the go-to language for analysts and researchers worldwide. Traditionally, these libraries run on a server or local machine, with users interacting through Jupyter notebookshttps://jupyter.org/ or command-line interfaces. Recent advancements in WebAssembly WASM have opened the door to a new paradigm: running Python directly in the browser. Pyodidehttps://pyodide.org/, a project initiated by Mozilla, has ported the CPython interpreter to WebAssembly, allowing you to execute Python code and leverage...