惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Application and Cybersecurity Blog
Application and Cybersecurity Blog
H
Help Net Security
罗磊的独立博客
博客园 - Franky
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
爱范儿
爱范儿
月光博客
月光博客
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
GbyAI
GbyAI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
Hugging Face - Blog
Hugging Face - Blog
The GitHub Blog
The GitHub Blog
T
Threat Research - Cisco Blogs
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN
B
Blog RSS Feed
Know Your Adversary
Know Your Adversary
T
Troy Hunt's Blog
I
InfoQ
L
Lohrmann on Cybersecurity
Recent Announcements
Recent Announcements
H
Hacker News: Front Page
Scott Helme
Scott Helme
Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
The Register - Security
The Register - Security
C
CERT Recently Published Vulnerability Notes
MongoDB | Blog
MongoDB | Blog
Help Net Security
Help Net Security
MyScale Blog
MyScale Blog
F
Fortinet All Blogs
Project Zero
Project Zero
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
J
Java Code Geeks
AWS News Blog
AWS News Blog
阮一峰的网络日志
阮一峰的网络日志
T
Threatpost
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog
Cloudbric
Cloudbric

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
HTML-First Websites Are Quietly Winning Again in 2026
Max Mendes · 2026-06-13 · via DEV Community

TL;DR: HTML-first means shipping real, server-rendered content before any JavaScript runs, then adding scripts only where they earn their place. In 2026 this approach is winning again, not out of nostalgia, but because the median mobile page now ships around 646 KB of JavaScript, fewer than half of mobile sites pass Core Web Vitals, and the browser already does natively what many sites still pull in libraries for. For most business websites, progressive enhancement is faster to ship, cheaper to run, and easier to keep alive.

Sometime in 2026, "just use HTML" stopped being a contrarian take. I noticed it first in my own client work, not in a conference talk. The sites that start close to the platform, plain HTML, forms, links, server rendering, and add JavaScript only where it genuinely helps, are the ones that launch faster, load cleaner, and generate fewer confused support messages two months later.

This is not anti-JavaScript. It is a reaction to a decade of reaching for a framework before asking whether the project needed one. The pendulum is swinging back toward the browser, and the numbers explain why.

What HTML-first actually means (and why it is not 2009 web design)

The fastest way to misunderstand this is to picture table layouts and inline styles. That is not it.

HTML-first is an order of operations. You build a page that is complete and usable as server-rendered HTML, then you enhance it. The content is readable before a single script loads. The form submits even if JavaScript never arrives. This is the old idea of progressive enhancement, applied deliberately with modern tools instead of by accident.

There is a small but real movement around this now. The HTML First community manifesto argues, fairly, that the platform has far more capability than most teams use. You do not have to agree with every line of it to notice the shift. The point is not to ban JavaScript. The point is to stop treating it as the default starting material for every page.

The 2026 numbers: JavaScript keeps getting heavier

Here is the part that moved this from a developer preference to a business problem.

The 2025 Web Almanac, published in January 2026, puts the median mobile page at roughly 646 KB of JavaScript. That is not the heavy end. That is the middle. Every one of those bytes has to be downloaded, parsed, compiled, and executed on the main thread, and while the main thread is busy, the page cannot respond to the person tapping it.

The performance chapter of the same edition is blunter. Only about 48% of mobile sites pass all three Core Web Vitals, and median mobile blocking time jumped well over 50% year on year. Those vitals are not abstract. Google's Largest Contentful Paint and Interaction to Next Paint are now a cross-browser baseline as of late 2025, which means slow, script-heavy pages are measured and penalised the same way everywhere.

I keep watching that cost land on people who just wanted a fast brochure site, a booking form, or a product page. They did not ask for 600 KB of framework. They inherited it because that was the default.

What the browser already does without JavaScript

The other half of the story is how much the platform quietly grew up. A lot of the interactivity that used to justify a library now ships in the browser.

You used to reach for JavaScript for In 2026 the browser does it natively
Accordions and show/hide panels <details> and <summary>
Modal dialogs and overlays <dialog> with showModal()
Form validation libraries Constraint validation (required, type="email", pattern)
Lazy-loading images below the fold loading="lazy"
Smooth in-page scrolling CSS scroll-behavior: smooth

<details> and <dialog> are both Baseline widely available, and MDN's pages on them were last revised in April 2026, so this is current, not a someday promise. When the accordion, the modal, and the form all work without a bundle, the question stops being "which library?" and becomes "do I need a library at all?"

For a lot of pages, the honest answer is no.

HTML-first or a framework: how I actually decide

I am not arguing that every product should go back to static files. If I am building something with dense client state, live collaboration, or a genuinely app-like workflow, JavaScript earns its place and I reach for it without hesitation.

The decision is just not automatic anymore. Here is roughly how I split it:

  • Reach for HTML-first when the site is mostly content: company sites, landing pages, service pages, blogs, most ecommerce catalogues, and plenty of internal tools. The job is to render information and capture a lead or a sale.
  • Reach for a framework when the interface is the product: dashboards, editors, real-time apps, anything where the user lives inside complex state for long stretches.

Most websites are the first kind. They were being built like the second kind, and paying for it in load time and maintenance.

Does Google rank HTML sites higher than SPAs in 2026?

Not directly, but the structure helps. Google processes a page in three stages: crawl, render, then index. Its own JavaScript SEO guidance, updated in March 2026, is clear that rendering happens with a headless browser and can lag behind crawling.

A server-rendered HTML page is fully readable on that first pass. The content is there before any script runs, so it gets indexed without waiting in the render queue. A single-page app that paints a blank shell and fills it with JavaScript is betting on that render step going smoothly and quickly. Sometimes it does. Often it is slower, and other search engines and AI crawlers are far less forgiving about executing your scripts than Google is.

If organic visibility matters to a business, and it almost always does, shipping the content as HTML is the safer default. This is the same reason I treat SEO and performance work as one job, not two.

How I build HTML-first for clients

In practice this is not exotic. I render pages on the server, lean on native HTML for the interactive bits, and add small, targeted scripts where they clearly improve the experience. No hydration puzzles for a page that was always going to be mostly text and a form.

The payoff shows up after launch. When a local business wants a service added, a price changed, or a lead form fixed, I would rather edit a clean template than reopen a build pipeline and chase a hydration bug on a page that never needed one. Fewer moving parts means fewer failures, which is exactly the reliability I aim for in web development and why I keep arguing that a small business does not need a heavy stack to have a genuinely good website.

There is a bigger thread here too. A lot of what made the web feel slow and disposable came from over-building simple things, the same instinct I wrote about in the case for human-made websites. HTML-first is part of the correction.

So yes, HTML-first websites are winning again, and 2026 is the year it stopped being a niche opinion. They are faster to ship, cheaper to maintain, and more honest about what the project actually needs. If a page needs rich interactivity, I will add it. I just want the page to work before the cleverness arrives.

If that sounds like the kind of site you want, let's talk.

Frequently asked questions

What does HTML-first mean in web development?

HTML-first means the page ships complete, readable content as server-rendered HTML before any JavaScript runs, so it works even if scripts fail. JavaScript is added only to enhance what already works, which is the core idea behind progressive enhancement.

Does a small business website need a framework like React in 2026?

Usually not. A service site, landing page, or catalogue needs HTML, CSS, and a little JavaScript, not a framework that behaves like an operating system. For most brochure-style sites, a lean server-rendered build is faster to ship and cheaper to maintain than a single-page app.

Does a website need JavaScript to rank on Google in 2026?

No. Google processes pages in three steps: crawl, render, then index, and the render step can lag, per Google's JavaScript SEO docs. Server-rendered HTML is readable on the first pass, so core content gets indexed immediately instead of waiting on JavaScript.

How much JavaScript does the average website ship in 2026?

A lot. The 2025 Web Almanac (published January 2026) puts the median mobile page at about 646 KB of JavaScript. The browser still has to download, parse, compile, and run all of it on the main thread before the page feels responsive.

Is progressive enhancement just old-fashioned web development?

No. It is a deliberate 2026 architecture choice, not nostalgia. Tools like Astro, htmx, and 11ty apply it on purpose: build a resilient HTML layer first, then layer in JavaScript only where it adds clear user value. It is the grown-up version of frontend work, not a step back.

What can the browser do natively without JavaScript now?

More than most teams use. Native details and summary handle accordions, dialog handles modals, and constraint validation handles forms. Lazy image loading and smooth scrolling are built in too. That covers a big share of what sites used to pull in libraries for.

Sources: 2025 Web Almanac: Page Weight, 2025 Web Almanac: Performance, web.dev: LCP and INP are now Baseline, Google Search Central: JavaScript SEO basics, MDN: progressive enhancement.


This article was originally published on maxmendes.dev.