{
  "id": 10108957,
  "title": "This is a modern motherfucking website",
  "url": "https://urgent.news/2026/09/27/this-is-a-modern-motherfucking-website",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-27T00:04:56.000Z",
  "source": {
    "name": "Lobsters",
    "slug": "lobsters",
    "url": "https://modernmotherfuckingwebsite.dreamstation.systems/"
  },
  "original_language": "en",
  "account": "In 2013, the original motherfucking website declared that your site was an over-engineered piece of shit. After nodding, laughing, and sharing it, you went back to work and made it even worse. Now, you require Node, a package manager, 1,100 dependencies, a bundler, a transpiler, a meta-framework, a hydration strategy, and a CI pipeline to display a paragraph on a screen. Your \"Hello World\" has a lockfile longer than this page, and your blog includes a loading spinner.\n\nYou claim to need modern features, SEO, social cards, performance, responsive images, yet it all boils down to HTML tags. You type them with your fingers into a file. The element for a navigation bar is called \"nav\" and has existed since Internet Explorer 9. No JavaScript is needed for landmarks, document outlines, keyboard navigation, or reader mode. Native form validation exists for accordions, popovers, input types, and dialog boxes.\n\nThere are already three major libraries that have figured out these complexities: Gecko, Blink, and WebKit. You installed an \"SEO plugin\" with its own settings page and a premium tier to generate structured data. Simply tell the search engine what the page is using from schema.org (Article, Product, Recipe, Event, FAQPage) and paste it in the head. No execution, no screwing with rendering, no SDK required.\n\nYour site's \"card\" that appears in chat does not need a \"social sharing integration.\" Use this instead: Done. Slack, iMessage, Discord, LinkedIn, Mastodon, Bluesky, and X will unfurl it beautifully.\n\nYour client-rendered SPA injects these tags with JavaScript after the crawler has already left. This is why you then had to add server-side rendering to get back what writing HTML already provided. You hired a consultant and adopted a \"performance framework\" while the browser begged you to tell it what's coming. Browsers that support speculation rules prerender the next page on hover, while browsers that don't ignore it. Nobody gets a broken back button.\n\nYour hero image is a 4 MB PNG. Don't lie about it. AVIF and WebP are typically half the size of a JPEG at the same quality. You don't need to sniff the user agent for format selection; the browser takes the first format it understands at the size that fits the screen. The width and height attributes reserve space, avoiding Cumulative Layout Shift.\n\nThese features are platform features already downloaded by the user before they heard of you. The framework gives a slower way to type them or hides them behind a plugin ecosystem, forgetting they're free. Finally, generate HTML, serve HTML. Use an actual application framework for more complex projects, but be honest about what you're building – a marketing site, a blog, a docs page, or a restaurant menu. The web was invented for documents and is extremely good at them.",
  "summary": null,
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}