Newsletter Archive
Every issue – browse by topic or search by keyword.
AI takes over the terminal: Warp, Cursor & the shell of the future
This week we explore how AI is reshaping developer tooling at the lowest level – the terminal and code editor. Plus: a deep dive into Cursor's composer mode.
The state of TypeScript in 2026 – is it winning?
TypeScript 5.8 shipped, adoption hit 82% among JS devs, and still some hate it. We break down what's new and whether the type wars are truly over.
Bun 2.0 vs Node 24 – benchmark battle
We ran 1M req/sec benchmarks, compared startup time, package install speed, and TypeScript DX. Results inside.
The 2026 Frontend Developer Survey – 4,000 devs answered
React still dominates, but Svelte is growing fast. Vue keeps its niche. Here's what 4K devs said about their stack, salary, and burnout.
Best dev content of 2025 – our annual roundup
Articles, tools, libraries, and talks that defined the year. Curated by the TechForDev team and community votes.
Git tips you're probably not using
git bisect, worktrees, sparse checkout – these advanced Git features can save hours. Explained simply with real examples.
Next.js 16 App Router: a practical guide for teams
Server components, Partial Prerendering, and cache busting in production. Real-world lessons from migrating a 200-page app.
Why Rust in 2025 – beyond the hype
Three real projects that switched critical paths from Go/C++ to Rust. Maintenance, tooling, hiring – the honest picture.
Micro-frontends are a spectrum, not a pattern
Module federation, single-spa, and iframes – we explore when micro-frontends actually help and when they're just complexity.
The open source sustainability crisis
Another critical library abandoned. How developers and companies are (and aren't) addressing the sustainability problem.
PostgreSQL 18 preview – what's new?
Asynchronous I/O, query parallelism improvements, and the biggest pg_upgrade story of the year. Deep dive inside.
Tailwind CSS 4.0 is out – what changed?
Oxide engine, CSS-first configuration, and zero-config setup. We migrated a project and documented every breaking change.
React 19 Server Actions in production
How to handle form validation, error boundaries, and optimistic updates using the new React server APIs.
Vite 6.0 and the new Environment API
Vite 6 expands support beyond browser environments. A look into SSR, worker runtimes, and building universal assets.
Docker vs Podman in 2025 – rootless container checks
Is Podman ready to replace Docker for local development? We evaluate performance, alias aliases, and compose support.
WebGPU is finally ready for mainstream frontends
Move over WebGL. We build a high-performance 3D visualization using three.js and WebGPU, showing frame rate improvements.
State management in 2025 – the Signal takeover
From Preact to Angular, and now React compilers. Are signals the ultimate pattern for reactive web applications?
CSS Anchor Positioning – goodbye absolute offsets
Anchor elements to each other without parent wrappers. We build tooltips, popovers, and dropdown menus.
Understanding the Node.js Native Test Runner
Stop installing Jest or Mocha. Node's native test runner has coverage, mocking, and watch mode built-in.
Deno 2.0 – backward compatibility focus
Deno 2.0 introduces npm specifiers by default, full Node compatibility, and monorepo workspaces. Is it time to switch?
How to optimize your LCP in 3 simple steps
Largest Contentful Paint is key for SEO and UX. We outline image prioritization, connection warming, and critical CSS tips.
The rise of SQLite in production backends
With LibSQL and Turso, SQLite is moving from local files to serverless edge databases. We run scalability checks.
Git features you should know – bisect, worktree
Debug faster and clean up your workspace by using advanced Git features for parallel branches.
Docker Compose secrets in local development
Keep passwords, tokens and API keys out of your Git history. We configure Docker Secrets for dev/prod profiles.
Chrome DevTools tips for web performance profiling
Find layout shifts (CLS), long tasks, and unused JS bundles using the Chrome Performance panel.
Is Svelte 5's Runes syntax the right direction?
Svelte 5 replaced let-bindings with runes like $state and $derived. We discuss the benefits for scalability.
An introduction to HTTP/3 and QUIC protocol
Why web requests are faster under QUIC. We discuss packet loss recovery, header compression, and server setup.
Migrating from Jest to Vitest – an honest guide
Vitest uses Vite's configuration under the hood. We document test migration steps and speedups.
Advanced TypeScript mapping and utility types
Build custom templates and maps in TypeScript. We write type utilities for backend validation schemas.
The CSS Grid properties you are not using
grid-template-areas, auto-fit, fit-content, and subgrid. We build complex grid designs with zero media queries.
What is Bun Shell and how do we use it?
Bun Shell runs bash-like commands natively inside JavaScript without platform shell dependencies.
Introduction to PostgreSQL window functions
Over, Partition By, and Row Number. We write complex analytical SQL queries without slow join operations.
Optimizing CSS for Core Web Vitals (CLS/LCP)
Ensure web layout stability by loading critical CSS first. We prevent layout shifts from lazy-loaded images.
Why you should check out Biome for linting
Biome replaces Prettier and ESLint in a single Rust binary. We run formatting benchmarks on large files.
The power of CSS Container Queries
Style components based on parent container width rather than viewport width. We build responsive page cards.
Understanding Node.js Event Loop phases
Timers, Poll, Check, and Close. We trace execution order to prevent main-thread event blockages.
Introduction to Git Hooks with Husky
Prevent broken lint checks and failed build commits by running pre-commit checks locally in your repository.
How to use standard Web Component APIs
Custom Elements, Shadow DOM, and HTML Templates. We build framework-free reusable components.
A practical guide to Web Workers
Run heavy computations in browser threads to keep the main thread fluid and prevent frame drops.
Using PostgreSQL JSONB indexes effectively
Query nested JSON properties quickly. We build GIN indexes on dynamic table attributes.
Optimizing typography LCP layout shifts
Ensure web layouts don't shift when custom web fonts download. We configure font-display override variables.
How CSS Nesting works natively in browsers
Ditch Sass compilation. Write nested selectors directly in vanilla CSS styles with full browser support.
Writing clean tests with MSW (Mock Service Worker)
Mock REST/GraphQL API network requests in frontend test environments by intercepting service worker channels.
Understanding CSS Grid Subgrid layouts
Inherit column grids from parent components. We align cards inside a multi-column row perfectly.
Deploying Edge middlewares inside Next.js
Intercept HTTP requests at the edge. We implement geo-routing, security headers, and cookie routing.
How to use CSS custom properties in JS
Read and write style variables dynamically. We build active CSS theme selectors in vanilla JavaScript.
A deep dive into JavaScript generator functions
Yield values, handle streams, and construct custom iterator loops using standard JS functions.
Using standard CSS Aspect Ratio rules
Prevent layout shifts for responsive images and videos by setting native aspect-ratio CSS rules.
An introduction to client-side IndexedDB databases
Store structured binary data directly in browsers. We build offline-first database sync pipelines.
How CSS display-contents works
Bypass container style blocks while keeping layouts intact. We integrate semantic markup elements.
Optimizing database queries using indexes
Learn about indexes, GIN indices, and how to write efficient SQL join queries.
Welcome to TechForDev Newsletter
We launch the weekly developer digest – aggregating tech news, developer resources, and tutorials.