Coding in the Age of Constant Deprecation?
Ingo Steinke, web developer

Ingo Steinke, web developer @ingosteinke

About: Ingo Steinke is a Berlin-based web developer focusing on front-end web development to create and improve websites and make the web more accessible, sustainable, and user-friendly.

Location:
Berlin, Germany
Joined:
Sep 21, 2019

Coding in the Age of Constant Deprecation?

Publish Date: Aug 7
15 14

The greatest challenges of modern frontend web development aren't CSS, accessibility, or web performance. Leveraging AI agents or mastering JS idioms aren't, either.

Constantly fighting deprecations, incompatibilities, and breaking changes is the greatest challenge of modern frontend web development.

npm install

Let's say you have finished a project.
Let one year pass.
Everything still works, as long as you don't change you existing node_modules folder.

Your IDE suggests to run npm install.

npm install
warning! warning! deprecation! no longer supported! error!!!

IDE suggestion and errors

Note: the above image mixes two different screenshots, and the error messages show incompatibilites of a new project, not the breaking changes affecting a legacy project, as described above.

vibe coding

Now we've probably all heard that we're in the age of "forgetting about code", when "programming becomes prompting" and we "simply" talk to AI agents in "natural language", as if that made any sense in software development. When humans have failed mastering requirements engineering, agile sprint reviews, and maintaining documentation, and most customers still don't know what they need, how should LLM-based AI assistants trained on human language and code do any better?

AI chat screenshot suggesting a clean reinstall deleting node_modules and running npm install

But, hey, let's give it a try, forget about code and ask an AI what to do. As has been documented time and again, they will

  • provide working solutions to simple tutorial problems
  • suggest outdated and deprecated syntax
  • use outdated and deprecated libraries
  • try to use imaginary libraries that don't even exist
  • mix mismatching syntax from before and after breaking changes much like clueless newbies would do after googling and copy-pasting from mismatching and outdated tutorials and StackOverflow answers.

worse than breaking changes

What's even worse than breaking changes?

  • undocumented breaking changes
  • breaking changes in minor version updates
  • breaking changes without renaming a tool or package
  • naming tools and packages so similar to others that everyone will mix up (like "Angular" vs. "AngularJS")

npm warn EBADENGINE Unsupported engine screenshot

^ Screenshot of npm refusing to install an additional node core module because vite expects a slightly newer node version.

Making things worse, web development depends on third-party libraries, and different tools will require different versions of the same third-party libraries, also known as conflicting peer dependencies.

managing npm peer dependency conflicts

The npm package manager has become a lot better at managaing peer dependencies. We have a package-lock file, commands like npm view, npm list (ls) and info, and the option to "pin" peer dependencies to speicific versions in our package.json.

Many of the above solutions become disimprovements over time when you don't remember why you pinned a peer dependency version in the first place, new updates bring new deprecations, or a package doesn't support the node/npm version that you're using or vice versa. Of course, there is nvm, the node version manager.

one year later

Let another year pass.
Everything still works, provided that you don't change your existing node_modules folder.

IDE suggests to run npm install.

npm install
warning! warning! deprecation!
npm warn EBADENGINE Unsupported engine
no longer supported! error!!!

share your solution

What's your experience? How do you tackle breaking changes, deprecations and conflicting peer dependencies in your web projects?

Comments 14 total

  • Oscar
    OscarAug 7, 2025

    If you never update anything, you'll never have breaking changes!

    In all seriousness, I've just now started to run into that problem (both with NPM and other things). I normally just do whatever NPM advises and whatever sounds the least invasive. I gotta start considering the longevity of that gameplan though.

    • Ingo Steinke, web developer
      Ingo Steinke, web developerAug 7, 2025

      I remember PHP Symfony wasn't much better. Maybe we should learn a "dead" language like COBOL.

      • Oscar
        OscarAug 7, 2025

        You can't have any dependencies if you do everything yourself. It would be so much simpler (but a lot more limiting, of course)

        • Ingo Steinke, web developer
          Ingo Steinke, web developerAug 8, 2025

          Yeah, but that sounds a little bit like a Roll Safe meme, like "the data can't be wrong if there's no data".

          Meme of Kayode Ewumi as Rolls Safe smiling pointing a finger at his front head, saying the data can't be wrong if there's no data

  • david duymelinck
    david duymelinckAug 7, 2025

    I think most javascript code is still written with a disruption mindset, while it should be made with a calmer mindset.

    When I do frontend programming, I try to use as less dependencies as possible. Even try to avoid compiling and bundling.
    Less code and less cogs in the machine equals less problems.

    • Ingo Steinke, web developer
      Ingo Steinke, web developerAug 8, 2025

      Thanks for your comment! A calmer, or more stability-focused development mindset would help a lot. Take a Linux Mint distribution with an Xfce desktop manager for example, powered by a multitude of interdependent packages spanning decades of develeopment eras, but still it usaully works well without conflicts.

      Avoiding compiling and bundling in web development isn't always the best choice, in my opinion, it depends on the use case. Classic, content-focused front-end websites can still be done with plain HTML, CSS, and vanilla JavaScript (with JSDoc, if we don't want TypeScript transpilation). Content management without relying or WordPress or other opinionated frameworks, thus JAMstack with Hugo, Eleventy, Astro etc. tends to bring a lot of npm dependencies with at, but at least mostly devDependencies that aren't deployed to the frontend, so we can keep calm about most security issues. Once we start with React, Svelte, or Vue for more interactive web apps with complex state management, we're exactly in the situation that inspired this discussion.

  • Ben Link
    Ben LinkAug 8, 2025

    My solution is really a matter of mind-shifting: expect to maintain any code you write forever. Maybe even enjoy it!

    The ecosystem will constantly change. Always has. We used to be a community of tinkerers, who could while away our time pruning old dependencies and refactoring things to get a little better at a time... now we've gone the way of society: make a quick buck and move on to the next thing.

  • Lucas Braga
    Lucas BragaAug 8, 2025

    🚀 Hello, developers!

    You’ve just received a VIP invitation to join one of the biggest tech events of the year — the Global Dev Summit 2025 — with both in-person and online access, fully covered (ticket, travel, and accommodation for the on-site option).

    🎯 Why you should join:

    • Talks from international tech experts
    • Exclusive technical workshops
    • Networking with developers worldwide
    • Latest trends in software, cloud, security, and AI

    💎 Special VIP Bonus

    All VIP attendees will also receive:

    • 🧥 AWS T-shirt
    • 🥤 AWS Branded Cup
    • 💳 $100 Gift Voucher

    ✅ How to claim your VIP spot

    1. Visit: globaldevsummit.com/
    2. Check the agenda and choose your mode (in-person or online)
    3. Activate your free VIP ticket and secure your gifts

    📅 Date: See official website

    📍 Format: Hybrid (On-site + Online)

    🔥 Secure your VIP pass now at Global Dev Summit 2025 and enjoy the event + exclusive AWS gifts!


    PS: Invitation for developers and tech professionals passionate about innovation.

  • Cloud Partner
    Cloud PartnerAug 12, 2025

    I've little knowledge about WordPress but now I want to learn coding.
    So, from where I can start???
    Can anyone guide me???

    • Ingo Steinke, web developer
      Ingo Steinke, web developerAug 13, 2025

      Do you want to learn WordPress or do you want to learn coding? WordPress doesn't require much coding to get started, but you can still use coding (HTML, CSS, JavaScript, PHP) to produce better themes or customize existing ones. However, if your want to learn coding, start with the basics. If your want to learn web development, learn HTML, CSS, JavaScript. There are many excellent tutorials and starting points, also here on DEV.

  • DataOnMatrix Solutions
    DataOnMatrix SolutionsAug 21, 2025

    The best way to deal with constant deprecations and breaking changes is to keep dependencies minimal, update them regularly in small steps, and document why versions are pinned. Using stable environments like Docker or version managers helps avoid unexpected conflicts. For simple projects, sticking to plain HTML, CSS, and vanilla JavaScript reduces risk. For complex apps, maintain a consistent stack, monitor semantic versioning, and rely on reproducible builds to keep things stable.

  • Ingo Steinke, web developer
    Ingo Steinke, web developerSep 19, 2025

    Copyfiles in another example. So, it's been deprecated due to an unsafe dependency to inflight which "is not supported, and leaks memory. Do not use it." Seems the easiest in-place alternative is changing copyfiles to npx. But why on earth hasn't anyone saved their deprecation efforts to submit a fix to copyfiles instead then?

    npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it.
    npm ls inflight

     └─┬ copyfiles@2.4.1
       └─┬ glob@7.2.3
         └── inflight@1.0.6
    
    Enter fullscreen mode Exit fullscreen mode

    Googling it did not match any documents. It looks like there aren't any great matches for your search. Asking AI produces various alternatives, including including cpx, cpx2, cpy, cpy-cli, ncp and fs.cp(), which at least seem legit at first sight. But again, why not change a widely used peer dependency instead of deprecation and causing a disruptive wave of half-hearted "housekeeping" actionism merge request through hundreds, thousands or probably millions of JavaScript projects?

    I also wondered, how serious is the inflight memory leak in practice for small projects with less than a hundred files in total in a handful of directories nested no deeper than three levels? Could we just ignore the warning pragmatically then? In this case, the severity is likely minimal or negligible.

  • Ingo Steinke, web developer
    Ingo Steinke, web developerOct 8, 2025

    By releasing hexagonal-masonry-placement I'm now an npm package maintainer myself, so I can add to the dependency and deprecation chaos - or maybe help prevent it?

    Seriously, I started factoring out reusable parts of my software and themes into plugins, packages, or template repositories hoping that I can put some fixes and updates in my external or upstream code to propagate it into all dependent or downstream codebases with less repetitive effort and with reduced risk to forget and neglect projects until they will refuse to build locally two years later.

Add comment