How JS ruined the web

Introduction & Sponsor Segment 00:00

  • Opens with sarcastic criticism of JavaScript, referencing an article by "Jonno" accusing JavaScript of breaking the web.
  • Expresses skepticism about the article's perspective, expects to disagree with its tone and conclusions.
  • Brief sponsor message promoting Savala, a versatile cloud platform for app deployment, emphasizing ease of use and integration.

The State of Modern Web Development 02:44

  • Asserts that most websites are slow, bloated, fragile, and overengineered, with issues often blamed on JavaScript.
  • Points out slow loading, erratic rendering, and poor mobile experiences, though attributes many problems to factors like advertising, analytics, and SEO practices.
  • Critiques SEO consultants for contributing negatively to web quality, more so than JavaScript.

Complexity and Developer Blame 04:48

  • Argues that the complexity of modern web development (multiple frameworks, pipelines for simple changes) is sometimes exaggerated or results from poor engineering teams, not an inherent flaw in JavaScript.
  • Suggests component-based frameworks make maintenance more reasonable, especially for commonly reused elements like navigation bars.

Real Examples of Interactive Web Apps 06:04

  • Highlights personal experience building highly interactive, client-side-heavy apps (e.g., T3 chat), which require JavaScript for a robust user experience.
  • Contrasts this with the limited use-cases of static sites maintained by SEO consultants, defending the necessity of dynamic, client-rendered applications.

Arguments About Web Evolution 06:56

  • Disputes the claim that the web has evolved for developers at the expense of users; instead, complexity increased to support richer, more interactive experiences (e.g., Gmail).
  • Acknowledges some valid criticism of overcomplicating simple sites, but maintains modern frameworks serve essential real-world needs.

Client-Side vs Server-Side Rendering 07:21

  • Explains the value of client-side rendering: immediate feedback to user actions, creating an illusion of speed, even if backend processing is slower.
  • Details user perception of speed, emphasizing that instant UI changes improve the feeling of performance, potentially more important than actual latency.

Flexibility and Options in Modern Tooling 14:29

  • Emphasizes JavaScript and its frameworks enable numerous data-fetching and rendering strategies, which can be optimized for better experiences.
  • Notes that greater power leads to potential misuse, but this is a universal trait of complex toolsets.

Security and Maintenance Issues of the Pre-JS Web 15:57

  • Criticizes the romanticizing of the "old web" (HTML/WordPress), citing issues with hacks and poor maintainability.
  • Points out that old technologies suffered serious problems of their own.

The App-Like Web and Rise of Frameworks 16:26

  • Describes the shift around 2010, when web apps began mimicking native apps, driven by frameworks like Angular and client demands for richer experiences.
  • Argues that many SaaS and modern web services would be impossible with a simple stack.

Default Tooling and Popularity 18:33

  • Notes that JavaScript and its frameworks became default tools as web complexity increased; bad decisions follow popularity, not specific technologies.
  • Observes that most web time is spent on complex, interactive sites, not static blogs.

Over-Engineering for Simple Use Cases 19:34

  • Admits some static sites are overbuilt with heavy frameworks, but argues maintainability and modular design benefits outweigh this in larger projects.
  • Points out that static content should use simpler tools, but in practice most developer effort targets more complex use-cases.

JavaScript's Expansion via Node.js 20:59

  • Mocks the claim that server-side JavaScript (Node.js) corrupted web culture, clarifies actual development trends, and denies that JS adoption was harmful in itself.
  • Argues modern patterns and abstractions (e.g., state management) are sometimes overused but often necessary to handle increased application complexity.

Critique of the "Developer Experience Over User Experience" Narrative 29:01

  • Pushes back on claims that we now optimize solely for developer experience, providing examples (e.g., compiler checks for accessibility) where improved DX also benefits users.
  • Challenges the idea that abstractions distance developers from users, especially in cases where abstraction aids quality, consistency, and maintainability.

Componentization and Modern Rendering Practices 31:29

  • Defends component-based architectures, dynamic data-fetching, and modern image loading strategies as net positives for usability and efficiency.
  • Argues that abstractions, like compilers and build tooling, are essential for scaling up real applications and do not inherently harm the user experience.

Professional Culture and Misplaced Praise 34:28

  • Agrees that complexity is sometimes celebrated for its own sake, especially in corporate environments, but sees this as a cultural/organizational issue, not a tech problem.
  • Shares anecdotes about over-engineering and misaligned incentives unrelated to JavaScript or frontend frameworks.

Reintroducing "Lost" Web Fundamentals 47:01

  • Notes the trend of frameworks re-implementing features like SSR, routing, and metadata, but frames this as an evolution based on real needs and better modularity.
  • Contrasts modular, Linux-like development with the plugin-driven chaos of older WordPress approaches.

Marketers, Content Management, and Changing Roles 49:07

  • Addresses the frustration of marketers who lost direct control over content updates in modern systems, acknowledging tension between flexibility and site integrity/security.
  • Suggests more complex applications necessarily reduce non-technical contributions, which is sometimes desirable for quality control.

What Should Use JavaScript? 50:52

  • Affirms JavaScript is powerful and essential for interactive, dynamic applications, but agrees most websites do not need to be complex apps.
  • Highlights that time spent on the web is dominated by a minority of complex sites, not the static majority.

Final Thoughts and Recommendations 53:14

  • Encourages critics of JavaScript frameworks to engage with modern tools (like Astro) that strike a better balance between interactivity and simplicity.
  • Argues that frustration with web development complexity often results from specific workflows (e.g., WordPress-centric) rather than technology itself, urging broader perspective.
  • Signs off expressing empathy for those frustrated by web complexity but stands by the benefits of modern JavaScript approaches for apps that need them.