Web Development — 2026 Week 7
The featured essay this week is a direct challenge to the React default: a senior Automattic performance engineer marshals hard numbers — react-dom's 33% bundle… Compiled for immediate developer deployment.

Mobile performance: How to make your website mobile friendly | DebugBear

Playwright vs Cypress: The Ultimate Guide to QA Automation

Virtual Scrolling for Billions of Rows — Techniques from HighTable
hyparam/hightable) to render billions of rows without a canvas element or fake scrollbar. Technique 1 (lazy loading) reduces a theoretical 1 TB dataset to ~3 KB of loaded data by computing visible row indices on every scroll event. Technique 2 (table slicing) keeps the DOM constant at ~30 rendered rows regardless of total count, satisfying Chrome's recommendation of fewer than 300 element updates. Technique 3 (infinite pixels) caps the canvas div at 8 million pixels and applies a downscale factor — necessary because Firefox's maximum element height is only ~17 million pixels — enabling navigation across 10-billion-row tables. Technique 4 (pixel-precise dual scroll) distinguishes local mouse-wheel moves from global scrollbar drags so every row remains reachable, guaranteeing 1-pixel fidelity up to 2 trillion rows. Technique 5 (two-step random access) decouples vertical and horizontal scroll to support full keyboard navigation via WAI Grid Pattern without conflicting programmatic scrollTop writes.
We Measured the N+1 Query Problem. The Numbers Are Worse Than You Think.
P95 of 185 ms. Scaling to 1,000 users, the nested bad path crossed 1.27 seconds (4,001 queries). The conditional batch-fetch pattern — collect IDs into a Set, one findMany with WHERE IN, O(1) Map lookup — turned 56 queries into 2 and scaled better than linearly at 10x data size. The piece concludes that the speedup factors grew with dataset size in every test case, directly refuting the common belief that N+1 is a "scaling problem" safe to defer.The Hidden Cost of Slow Code Reviews: Data from 8 Million PRs
CODEOWNERS assignment, set same-business-day pickup SLAs, add AI tools for first-pass review (reducing turnaround from 2–3 hours to 20–30 minutes), and surface PR cycle time on team dashboards.
Master Full-Stack Docker & CI/CD – Build a Production-Ready Pipeline
docker-compose.yml URL, configuring environment variables (OpenAI API key, CORS allow-origins, API host IP) through the visual editor, and clicking Deploy — the entire setup takes minutes. A GitHub Actions workflow that builds Docker images from Dockerfile.prod files and pushes them to DockerHub is then shown triggering a CI/CD cycle: a one-line heading change in the React component propagates to production after a single git push and a Deploy button click in Docker Manager. The second half of the course goes under the hood: writing Dockerfiles layer by layer for both the Node 20-Alpine client and the Go 1.24.2-Alpine server, building images with docker build -t, running individual containers with docker run -p port mapping and --env-file injection, and finally composing both services with a docker-compose.yml to replace the multi-command workflow with a single docker compose up.JS-heavy approaches are not compatible with long-term performance goals
Master Full-Stack Docker & CI/CD – Build a Production-Ready Pipeline
docker-compose.yml URL, configuring environment variables (OpenAI API key, CORS allow-origins, API host IP) through the visual editor, and clicking Deploy — the entire setup takes minutes. A GitHub Actions workflow that builds Docker images from Dockerfile.prod files and pushes them to DockerHub is then shown triggering a CI/CD cycle: a one-line heading change in the React component propagates to production after a single git push and a Deploy button click in Docker Manager. The second half of the course goes under the hood: writing Dockerfiles layer by layer for both the Node 20-Alpine client and the Go 1.24.2-Alpine server, building images with docker build -t, running individual containers with docker run -p port mapping and --env-file injection, and finally composing both services with a docker-compose.yml to replace the multi-command workflow with a single docker compose up.Mobile performance: How to make your website mobile friendly | DebugBear
Playwright vs Cypress: The Ultimate Guide to QA Automation
Virtual Scrolling for Billions of Rows — Techniques from HighTable
hyparam/hightable) to render billions of rows without a canvas element or fake scrollbar. Technique 1 (lazy loading) reduces a theoretical 1 TB dataset to ~3 KB of loaded data by computing visible row indices on every scroll event. Technique 2 (table slicing) keeps the DOM constant at ~30 rendered rows regardless of total count, satisfying Chrome's recommendation of fewer than 300 element updates. Technique 3 (infinite pixels) caps the canvas div at 8 million pixels and applies a downscale factor — necessary because Firefox's maximum element height is only ~17 million pixels — enabling navigation across 10-billion-row tables. Technique 4 (pixel-precise dual scroll) distinguishes local mouse-wheel moves from global scrollbar drags so every row remains reachable, guaranteeing 1-pixel fidelity up to 2 trillion rows. Technique 5 (two-step random access) decouples vertical and horizontal scroll to support full keyboard navigation via WAI Grid Pattern without conflicting programmatic scrollTop writes.We Measured the N+1 Query Problem. The Numbers Are Worse Than You Think.
P95 of 185 ms. Scaling to 1,000 users, the nested bad path crossed 1.27 seconds (4,001 queries). The conditional batch-fetch pattern — collect IDs into a Set, one findMany with WHERE IN, O(1) Map lookup — turned 56 queries into 2 and scaled better than linearly at 10x data size. The piece concludes that the speedup factors grew with dataset size in every test case, directly refuting the common belief that N+1 is a "scaling problem" safe to defer.The Hidden Cost of Slow Code Reviews: Data from 8 Million PRs
CODEOWNERS assignment, set same-business-day pickup SLAs, add AI tools for first-pass review (reducing turnaround from 2–3 hours to 20–30 minutes), and surface PR cycle time on team dashboards.The featured essay this week is a direct challenge to the React default: a senior Automattic performance engineer marshals hard numbers — react-dom's 33% bundle growth from v18 to v19, moment's decade of bloat — to argue that JS-heavy SPAs are structurally incompatible with sustained performance. The piece is not an anti-React polemic but a sober engineering audit that calls for server-centric MPAs, htmx, or smaller reactive frameworks whenever client-side rendering cannot be justified by the actual user workflow.
Performance rigor runs through the rest of the week's content. An empirical N+1 study with PostgreSQL 17 and Prisma shows that naive relational fetching at 1,000 rows crosses 1.27 seconds across 4,001 queries, and that the penalty grows with dataset size — directly rebutting the idea that N+1 is a deferred scaling concern. Virtual scrolling for billion-row data tables gets an equally methodical treatment, covering five techniques that avoid canvas elements and fake scrollbars. Mobile performance completes the triad, showing how lab scores and real-user field data must be read in tandem.
Workflow and testing close out the week. A $237,800-per-year cost estimate for slow code reviews (from 8.1 million PRs) makes a data-backed case for smaller PRs and same-day pickup SLAs. The Playwright versus Cypress comparison settles into a practical split: Cypress for component-level developer feedback, Playwright for full CI regression. And a four-hour Docker and CI/CD course shows the full containerization pipeline from Dockerfile to production deploy.
- react-dom grew 33% in bundle size from v18 to v19 — measure your framework's weight against actual user workflow complexity before defaulting to a full SPA architecture.
- N+1 query penalties grow with dataset size, not shrink: a 1,000-user nested fetch produces 4,001 queries and crosses 1.27 seconds, meaning the problem must be solved before scaling, not after.
- Elite engineering teams keep PRs under 219 lines with pickup under 7 hours; LinearB data shows lagging teams waste roughly $237,800 per year in idle wait time on a 10-person team.