P.01Service Workers Explained: Offline Caching Step by Step
A service worker is a script that sits between your page and the network. Register one, cache assets, serve offline, and ship updates without stale-cache bugs.
Tag
70 articles tagged #Frontend.
P.01A service worker is a script that sits between your page and the network. Register one, cache assets, serve offline, and ship updates without stale-cache bugs.
P.02Signals are the reactivity model behind Angular, Vue, Solid, and Svelte 5. Here's how they actually work, and the TC39 proposal to standardize them.
P.03A heavy JavaScript task freezes your UI because it runs on the same thread as rendering. Here's how Web Workers fix that, with real benchmark numbers.
P.04Next.js 16 changed what 'knows Next.js' means: Turbopack, Cache Components, and Server Actions by default. What to screen for, and the questions that reveal real skill.
P.05The :open pseudo-class, Baseline since May 2026, styles <details>, <dialog>, and <select> in their expanded state with one selector. No JS classes needed.
P.06React 19.3 shipped September 9, 2026, and turned two long-experimental APIs stable: View Transitions and Fragment Refs. What changed and whether to upgrade.
P.07The CSS if() function lets a single property branch on media, container, or feature conditions. What it does, the syntax, and where it still can't replace JS.
P.08One CSS property finally styles the browser's own select, options and icons included, with no dropdown library. The syntax, an example, and real support.
P.09column-rule now works in grid and flexbox, and row-rule joins it. Draw dividers between items in two lines of CSS, plus what to do about support.
P.10Chrome 147, Firefox 146, and Safari 26 all ship contrast-color(), which picks black or white text to meet WCAG AA on any background. Syntax and fallback.
P.11Chrome 152 shipped CSS pseudo-classes matching video and audio state, a CPU Performance API for device tiers, and the start of the end for client-side XSLT.
P.12Chrome 152 added :playing, :paused, :buffering, and :muted as real pseudo-classes. A runnable custom player built on them, plus the JS fallback.
P.13The W3C Design Tokens group shipped a stable exchange format backed by Adobe, Figma, and Google. What it standardizes, and how to migrate an existing setup.
P.14React Router v8 shipped as a deliberately boring release. What the version bump requires, what the codemod handles, and the three things that catch teams.
P.15Qwik skips hydration instead of optimizing it. How resumability actually works, what Qwik 2.0 changed, and the honest tradeoffs before you ship on it.
P.16@scope applies CSS only inside part of the DOM, with a lower bound that excludes nested components. No BEM, no Shadow DOM. Syntax and where it falls short.
P.17Chrome and Edge can prerender the next page before a user clicks, with no SPA rewrite. How the Speculation Rules API works, what it wastes, and shipping it.
P.18field-sizing: content reached Baseline in June 2026. The one line of CSS that replaces the scrollHeight hack for auto-growing textareas, and where it stops.
P.19Build browser push yourself with the Push API, Notifications API and a service worker. No OneSignal, no Firebase. The full setup, VAPID keys included.
P.20Searches for React 20 keep climbing, but the latest release is 19.2.7. What actually shipped in the 19.2 line, including useEffectEvent, and why.
P.21Trusted Types, shape(), and contrast-color() all reached Baseline in early 2026. What each replaces, with working code, and what newly available means.
P.22Temporal hit Stage 4 and ships unflagged in Chrome 144, Firefox 139, and Node 26. Migrating common Date patterns to PlainDate, ZonedDateTime, and Duration.
P.23Vite 8 replaced its dual esbuild and Rollup setup with Rolldown, a Rust bundler, by default. What changed, the real build times, and whether migrating pays.
P.24TC39 is standardizing signals, the reactive pattern already inside Vue, Solid, Angular, and Preact. Years from browsers, but it changes what to build on.
P.25TC39 finalised eight proposals for ES2026. Temporal gets the headlines, but Iterator Helpers, Set methods, Promise.try, and RegExp.escape matter too.
Angular's enterprise comeback is real. Signals, standalone components, and zoneless change detection changed what senior skill looks like. How to hire for it.
Svelte 5 runes changed the reactivity model in ways that matter for hiring. The pool is small but experienced. How to find, screen, and evaluate them.
P.28Next.js 16.3 preview added Instant Navigations, giving server-rendered apps the snappy feel of a client-side SPA. What changed, and when to use it.
P.29All three frameworks matured and all three make different tradeoffs. The four questions that settle it, and why there's no universally right answer.
P.30TanStack Start hit 1.x stable and is closing on Next.js in downloads. An honest comparison: what each is good at, where each falls short, how to decide.
Frontend developer means different things to different teams. The core screen: HTML semantics, CSS fundamentals, Core Web Vitals, and skill beyond React.
Vue 3 is the default now and the Options API is legacy. What a strong Vue developer looks like, what questions reveal real skill, and the red flags.
TypeScript is the default now, so the market is full of people who write it without understanding it. The questions that tell the two groups apart.
Svelte 5's runes replaced magic variable tracking with explicit reactive primitives. A year into production: what changed, what improved, what surprised.
A step-by-step guide to screening React developers in 2026 — what to test, what seniority looks like, and the red flags that save you from a bad hire.
SolidJS skips the virtual DOM entirely, compiling to real DOM operations with fine-grained signal-based reactivity. Here's what that means in practice.
Three.js makes WebGL usable. React Three Fiber makes Three.js feel like React. The fastest path to interactive 3D on the web, and how to use it.
TanStack Router brings full TypeScript inference to URL params, search params, and loader data. Here's what that looks like in practice and when it's worth adopting.
AVIF and WebP now have near-universal browser support. Here's the image optimization stack that actually improves LCP scores in production in 2026.
XState v5 ships a rewritten API that's smaller and easier to read than v4. Here's how state machines help in production UI, and what the migration looks like.
Alpine.js adds dropdowns, modals, tabs and form behaviour straight in your HTML, with no build step and no framework. When that's exactly right.
CSS @layer lets you set explicit priority between your reset, base, components, and utilities. Here's how cascade layers work in production stylesheets.
Redux is overkill for most React apps: Zustand and Jotai cover most state needs with far less boilerplate. Here is when to use each and how they actually work.
Choosing between react-i18next, next-intl, and Lingui comes down to your framework: next-intl for Next.js App Router, react-i18next elsewhere.
The Date object has been broken for 30 years. Temporal is its replacement, now shipping in browsers and Node.js. Here's what actually changed and how to use it.
Storybook 8 is faster and easier to configure than it was. More useful is the workflow shift: building in isolation makes components genuinely decoupled.
WebGPU is now in Chrome, Firefox, and Safari: a general-purpose GPU compute layer, not just graphics, for ML inference, image processing, and simulation.
Three different approaches to styling a web application — Tailwind, CSS Modules, and CSS-in-JS libraries — and the team contexts where each one actually makes sense.
P.49Manifest V3 changed how Chrome extensions work. What matters for developers today: service workers, declarativeNetRequest, and the gotchas nobody warns you about.
CSS, Framer Motion, and GSAP each solve different animation problems in 2026. Here's how to pick the right one for your project and skip the rest.
The View Transitions API and scroll-driven animations are now baseline in every major browser. Here's what they replace and working code for both.
Media queries ask how wide the viewport is. Container queries ask how wide the component's parent is. That shift changes how you build reusable components.
If your design system needs to work in React, Vue, and a legacy jQuery app simultaneously, Web Components are the only native answer. Lit makes them practical to write.
P.54Google's crawler runs JavaScript, but on a delay and with different limits than a browser. Here's where JS app SEO actually breaks, and how to test for it.
PWAs got a second wind once iOS 16.4 enabled push notifications and iOS 17 improved install flow. The gap between PWA and native is now narrow enough to matter.
Vuex was Vue's state library for years, and Pinia replaced it as the official recommendation. How Pinia works, and where it fits in a Vue 3 app.
P.57Interaction to Next Paint replaced First Input Delay in 2024, and most sites still haven't caught up. Here's why INP is harder and how to actually fix it.
Client state is easy. Server state, which lives on a backend and changes on its own, is where React apps make a mess. TanStack Query handles it cleanly.
P.59Position one element relative to another in pure CSS. No Popper.js, no positioning logic, no recalculation on scroll. How anchor positioning works.
Tauri 2.0 added iOS and Android while keeping tiny binaries, a Rust backend, and the OS webview instead of a bundled Chromium. How it works, and when.
shadcn/ui is now the default starting point for React UIs. Here's what it actually is, why copy-paste beats npm install, and how to use it without accumulating a mess.
Tailwind v4 moves configuration from JavaScript to CSS, drops the content array, and ships a faster engine. What the breaking changes mean for a real migration.
Biome is a Rust-based toolchain that replaces ESLint and Prettier with one fast binary for linting, formatting, and imports. Here is what migrating looks like.
We rebuilt a React SPA as a Django + HTMX app. 847KB of JavaScript became 48KB. Here is every pattern, rough edge, and performance win from the migration.
Pick Astro for content sites, Next.js 16 for large React apps, React Router 8 for loader-and-form apps on any host. Current versions and tradeoffs compared.
Server components have gone from React experiment to cross-framework standard. Here is how they work in React, Vue, Astro, and Svelte — and what changes for your apps.
CSS has changed more in the last 2 years than the previous 10. Here is what is production-ready, what to adopt now, and what you can stop using.
Vapor Mode is stable in Vue 3.6, released in early 2026. It compiles templates straight to DOM operations with no virtual DOM. Benchmarks, and when to switch.
Angular 21 made zoneless the default for new apps and v22 made OnPush the default. What that means for signals, migration steps and which version to target.
React 19 shipped Server Components, Actions, a built-in compiler, and new hooks like useOptimistic and use(). Here's what changed and how to migrate.