{"id":36798,"date":"2026-10-15T14:21:25","date_gmt":"2026-10-15T12:21:25","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=36798"},"modified":"2026-10-15T14:21:26","modified_gmt":"2026-10-15T12:21:26","slug":"why-ai-hates-modern-web-frameworks-and-loves-web-standards","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/","title":{"rendered":"Why AI hates modern web frameworks (and loves web standards)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Over the last two years, AI coding assistants have found their way into practically all our lives, much to the chagrin of those who swore they\u2019d never use them (hi, that\u2019s me too, a redeemed ex-skeptic). They work wonderfully on HTML, CSS, plain JavaScript and pure functions. Then you feed them a React component with five hooks talking to each other, or a Vue <code>computed()<\/code> hooked to state mutated three files away, and suddenly the assistant seems to have been drinking.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This isn\u2019t an impression gathered at the bar after a meetup. There\u2019s a precise reason, and it\u2019s the same reason those frameworks trip up us humans too. The difference is that, with experience, we\u2019ve developed a mental callus that helps us avoid certain traps. A model has no such callus, so it falls for them with enthusiasm.<\/p>\n\n\n\n<h3 id=\"h-the-problem-isn-t-syntax-it-s-magic\" class=\"wp-block-heading\">The problem isn\u2019t syntax, it\u2019s magic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Language models generate code by predicting the next piece of text based on what they see around it. They do well when the behavior can be deduced from what\u2019s right in front of them: a pure function explains itself, you look at the input and the output and you\u2019re done. They do poorly when the behavior depends on something that isn\u2019t written anywhere in the file they\u2019re reading at that moment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In recent years, reactive web frameworks have all moved in the same direction: more automatic magic, less hand-written code, all very convenient as long as it works. For an experienced developer it\u2019s often a triumph: three lines and the update graph builds itself. For a model that has to generate correct code without being able to mentally execute that invisible graph, it\u2019s an obstacle course in the dark.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A practical example. In Vue 3, destructuring a reactive object silently kills reactivity:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javascript<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">const<\/span> state = reactive({ <span class=\"hljs-attr\">count<\/span>: <span class=\"hljs-number\">0<\/span> })\n\n<span class=\"hljs-comment\">\/\/ Stops updating. No error, no warning, just silence<\/span>\n<span class=\"hljs-keyword\">const<\/span> { count } = state\n\n<span class=\"hljs-comment\">\/\/ This, instead, works just fine<\/span>\n<span class=\"hljs-keyword\">const<\/span> count = computed(<span class=\"hljs-function\"><span class=\"hljs-params\">()<\/span> =&gt;<\/span> state.count)<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Anyone who has used Vue for a while knows this and avoids it almost by spinal reflex. A model that generates plausible code based on common JavaScript patterns, where destructuring an object is harmless 99% of the time, falls for it every time. And the same story repeats, with variations on the theme, for React\u2019s <code>useEffect<\/code> dependency arrays (forget one and you get a silent bug, add one too many and you get a loop) or for the automatic tracking in <code>computed()<\/code>.<\/p>\n\n\n\n<h3 id=\"h-widening-the-family-solid-and-angular\" class=\"wp-block-heading\">Widening the family: Solid and Angular<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To those who insist that \u201cSolid\u2019s signals are just a get\/set, it\u2019s not magic,\u201d I answer: that\u2019s true as long as you read a single signal in isolation. The trouble starts when you compose them. A memo or an effect in Solid tracks, at runtime, which signals it read during its own execution, without you declaring it anywhere. It\u2019s the same principle as Vue\u2019s automatic tracking, just moved up one level. And when one signal triggers another, which triggers an effect, which rewrites the first signal, the propagation graph isn\u2019t written down anywhere in the code: it has to be reconstructed by following reads and writes at runtime. For a model, it\u2019s a riddle from the same family as Vue\u2019s, just wearing a different outfit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Angular, for completeness, manages to suffer from two ailments at once. On one hand, it has embraced Solid-style signals too, bringing along the same implicit tracking. On the other, it keeps on being Angular: decorators, dependency injection, modules, and a verbosity that calling \u201cgenerous\u201d would be an understatement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here someone will object: with context windows now in the hundreds of thousands of tokens, who cares if Angular is verbose, there\u2019s plenty of room anyway. True, but that\u2019s not the point. The problem is no longer \u201crunning out of memory,\u201d it\u2019s the density of signal relative to noise. Two hundred lines of boilerplate to say \u201cthis component receives an input and exposes an output\u201d means two hundred lines across which the model has to spread its attention, and the business logic that really matters ends up diluted among decorators, providers and repetitive configuration. It\u2019s the same phenomenon known as \u201clost in the middle\u201d: the more noise around the critical detail, the more likely that detail gets less attention, not because there\u2019s no room but because the information density is low. The practical result: a greater chance of losing the thread between one decorator and the next, especially in long files.<\/p>\n\n\n\n<h3 id=\"h-why-web-standards-fare-better\" class=\"wp-block-heading\">Why web standards fare better<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">AI assistants generate better code on HTML, CSS and flat JavaScript for the exact same reason they struggle with the more \u201cmagical\u201d frameworks: the less inference is needed to predict what happens, the better. A function that takes a state and returns a new one is an open book. An event handler that does exactly what it says it does, likewise. A system that tracks dependencies by eavesdropping on which variables get read during an execution, much less so.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This isn\u2019t an attack on web frameworks per se, let me be clear: React, Vue, Svelte, Solid and Angular remain powerful tools, used successfully at enormous scale, and nobody is proposing to go back to building sites with <code>document.write<\/code>. It\u2019s an observation about a trade-off that until now we\u2019ve evaluated almost exclusively from the human point of view (how much I write, how convenient it is) and that today deserves to be looked at also from the point of view of whoever, more and more often, writes that code in pairs with a model, or has the model write it directly.<\/p>\n\n\n\n<h3 id=\"h-what-this-means-in-practice-today\" class=\"wp-block-heading\">What this means in practice, today<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A few heuristics I use myself when working with an AI assistant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The more a framework hides \u201cwho needs to update when what changes,\u201d the more carefully the generated code should be re-read.<\/strong> React hooks, Vue composables and Solid computations are prime candidates for subtle bugs slipped in by the AI without malice, simply out of ignorance of the implicit context.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Explicit code is easier to verify, for a model as well as for a human.<\/strong> A good test: ask the AI to explain why a piece of code does what it does. If the explanation requires guessing at invisible behavior not present in the file in front of you, you\u2019ve found a delicate spot, and not just for the AI: it will be for the colleague who opens that file in six months without the context in their head.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Some projects are openly betting on more explicit architectures<\/strong> (state as plain data, rendering as a pure function, no proxies or compilers in between) precisely to stay readable by both humans and machines. Inglorious Web, the open-source framework I work on, is one of these attempts, but certainly not the only one: the same logic has long driven minimalist libraries like Alpine.js or \u201cHTML-first\u201d approaches like Htmx. Whether this path becomes the norm or remains a niche for diehards, it\u2019s still a sign of where part of the frontend architecture conversation is heading these days.<\/p>\n\n\n\n<h3 id=\"h-an-open-question-and-no-crusade\" class=\"wp-block-heading\">An open question (and no crusade)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019m not suggesting we all go back to hand-written vanilla JavaScript like in 2010, perhaps with jQuery to complete the nostalgic trip. \u201cMagical\u201d frameworks offer real advantages in human productivity that bare standards can\u2019t easily replicate, and for many teams the trade-off is still worth it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But it\u2019s worth asking whether, when choosing an architecture today, the criterion \u201chow readable and predictable is it, even for a model\u201d should start to weigh as much as \u201chow convenient is it for an experienced human.\u201d Because in 2026, code increasingly no longer comes from a single human author carrying all the traps in memory: it comes from a human and a model working side by side, and readability for both stops being a stylistic whim. It becomes a property of the architecture itself, much to the chagrin of magic.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the last two years, AI coding assistants have found their way into practically all our lives, much to the chagrin of those who swore they\u2019d never use them (hi, that\u2019s me too, a redeemed ex-skeptic). They work wonderfully on HTML, CSS, plain JavaScript and pure functions. Then you feed them a React component with&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/\">Read more<\/a><\/p>\n","protected":false},"author":354,"featured_media":36764,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[46],"tags":[10003,9907,14417],"collections":[11387],"class_list":["post-36798","post","type-post","status-publish","format-standard","has-post-thumbnail","category-ai-ml","tag-ai","tag-frameworks","tag-web-standards","collections-top-of-the-week","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Why AI hates modern web frameworks (and loves web standards) - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"In recent years, reactive web frameworks have all moved in the same direction: more automatic magic, less hand-written code, all very convenient as long as it works\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why AI hates modern web frameworks (and loves web standards)\" \/>\n<meta property=\"og:description\" content=\"In recent years, reactive web frameworks have all moved in the same direction: more automatic magic, less hand-written code, all very convenient as long as it works\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-15T12:21:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-15T12:21:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matteo Antony Mistretta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matteo Antony Mistretta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/\"},\"author\":{\"name\":\"Matteo Antony Mistretta\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/9ceb36edf25963553ac911e3f926b1b9\"},\"headline\":\"Why AI hates modern web frameworks (and loves web standards)\",\"datePublished\":\"2026-10-15T12:21:25+00:00\",\"dateModified\":\"2026-10-15T12:21:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/\"},\"wordCount\":1318,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/cover-1.png\",\"keywords\":[\"AI\",\"Frameworks\",\"web standards\"],\"articleSection\":[\"AI\\\/ML\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/\",\"name\":\"Why AI hates modern web frameworks (and loves web standards) - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/cover-1.png\",\"datePublished\":\"2026-10-15T12:21:25+00:00\",\"dateModified\":\"2026-10-15T12:21:26+00:00\",\"description\":\"In recent years, reactive web frameworks have all moved in the same direction: more automatic magic, less hand-written code, all very convenient as long as it works\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/cover-1.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/cover-1.png\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI\\\/ML\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/ai-ml\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Why AI hates modern web frameworks (and loves web standards)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/9ceb36edf25963553ac911e3f926b1b9\",\"name\":\"Matteo Antony Mistretta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5cb6a33a88238481b177c19bcab282e530b6e206d9efb690a4e9926702c44d1b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5cb6a33a88238481b177c19bcab282e530b6e206d9efb690a4e9926702c44d1b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5cb6a33a88238481b177c19bcab282e530b6e206d9efb690a4e9926702c44d1b?s=96&d=mm&r=g\",\"caption\":\"Matteo Antony Mistretta\"},\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/matteo-antony-mistretta\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Why AI hates modern web frameworks (and loves web standards) - Codemotion Magazine","description":"In recent years, reactive web frameworks have all moved in the same direction: more automatic magic, less hand-written code, all very convenient as long as it works","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/","og_locale":"en_US","og_type":"article","og_title":"Why AI hates modern web frameworks (and loves web standards)","og_description":"In recent years, reactive web frameworks have all moved in the same direction: more automatic magic, less hand-written code, all very convenient as long as it works","og_url":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2026-10-15T12:21:25+00:00","article_modified_time":"2026-10-15T12:21:26+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png","type":"image\/png"}],"author":"Matteo Antony Mistretta","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Matteo Antony Mistretta","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/"},"author":{"name":"Matteo Antony Mistretta","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/9ceb36edf25963553ac911e3f926b1b9"},"headline":"Why AI hates modern web frameworks (and loves web standards)","datePublished":"2026-10-15T12:21:25+00:00","dateModified":"2026-10-15T12:21:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/"},"wordCount":1318,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png","keywords":["AI","Frameworks","web standards"],"articleSection":["AI\/ML"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/","url":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/","name":"Why AI hates modern web frameworks (and loves web standards) - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png","datePublished":"2026-10-15T12:21:25+00:00","dateModified":"2026-10-15T12:21:26+00:00","description":"In recent years, reactive web frameworks have all moved in the same direction: more automatic magic, less hand-written code, all very convenient as long as it works","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/why-ai-hates-modern-web-frameworks-and-loves-web-standards\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"AI\/ML","item":"https:\/\/www.codemotion.com\/magazine\/ai-ml\/"},{"@type":"ListItem","position":3,"name":"Why AI hates modern web frameworks (and loves web standards)"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/9ceb36edf25963553ac911e3f926b1b9","name":"Matteo Antony Mistretta","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5cb6a33a88238481b177c19bcab282e530b6e206d9efb690a4e9926702c44d1b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5cb6a33a88238481b177c19bcab282e530b6e206d9efb690a4e9926702c44d1b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5cb6a33a88238481b177c19bcab282e530b6e206d9efb690a4e9926702c44d1b?s=96&d=mm&r=g","caption":"Matteo Antony Mistretta"},"url":"https:\/\/www.codemotion.com\/magazine\/author\/matteo-antony-mistretta\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-600x400.png","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-600x600.png","author_info":{"display_name":"Matteo Antony Mistretta","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/matteo-antony-mistretta\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png",1200,630,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-150x150.png",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-300x158.png",300,158,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-768x403.png",768,403,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-1024x538.png",1024,538,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png",1200,630,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1.png",1200,630,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-100x100.png",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-180x128.png",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-896x504.png",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-400x225.png",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-600x400.png",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2026\/10\/cover-1-600x600.png",600,600,true]},"uagb_author_info":{"display_name":"Matteo Antony Mistretta","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/matteo-antony-mistretta\/"},"uagb_comment_info":0,"uagb_excerpt":"Over the last two years, AI coding assistants have found their way into practically all our lives, much to the chagrin of those who swore they\u2019d never use them (hi, that\u2019s me too, a redeemed ex-skeptic). They work wonderfully on HTML, CSS, plain JavaScript and pure functions. Then you feed them a React component with&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/36798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/354"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=36798"}],"version-history":[{"count":2,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/36798\/revisions"}],"predecessor-version":[{"id":36801,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/36798\/revisions\/36801"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/36764"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=36798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=36798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=36798"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=36798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}