4 ms·
Axios, like Express, is something I'm shocked to see used in any modern codebase. I loved both in the 2010s. In JS/TS-land there are much simpler and better opt
by danscan 5mo ago
Axios, like Express, is something I'm shocked to see used in any modern codebase. I loved both in the 2010s. In JS/TS-land there are much simpler and better options these days. Depending on Axios suggests the devs don't know how to use fetch. I can't think of another reason it would be a necessary dependency
- jwilliams 5mo agoI do "just use fetch" nowadays -- but I have to say, axios definitely has better ergonomics than fetch, especially for calling APIs.
- nurettin 5mo agoWhen the vulnerability was announced, it took me two minutes to one-shot convert an entire legacy project from axios to fetch (it already wrapped api calls neatly), react cra to vite, update all dependencies, convert to deep imports to reduce bundle size and get zero npm warnings while fetching coffee. There is just no excuse to use it.
- ipaddr 5mo agoMove from a tested library where when a vulnerability is discovered everyone in the world is made aware to an untested one shot llm output that if a vulnerability is discovered will never come to light . What's the reason to switch to something less stable short/long term? Because its older and newer code is always better?
- nurettin 5mo agoThat's like saying rpad is well tested. Axios isn't exactly rocket science, it is trivial to replace. So much so that even a SOTA llm does it reliably. I'd say good riddance.
- sampullman 5mo agoI drag a tiny fetch wrapper around with error/json handling, timeouts and basic interceptor support. It doesn't cover everything axios does but it's nice enough and I haven't had to touch it in a couple years. For reference: https://github.com/sampullman/fetch-api/blob/main/lib/fetchApi.ts https://github.com/sampullman/fetch-api/blob/main/lib/fetchA...
- tracker1 5mo agoI often do similar... though most of the time the past couple years, I'm generating the client from OpenAPI integration on the backend that uses fetch as its' base.
- danpalmer 5mo agoIf you want a fully built out network layer, with auth, logging, monitoring, policies, etc, then `fetch` doesn't really help. Axios and other libraries provide much more for building that sort of framework.
- internetter 5mo agoAny sufficiently competent typescript developer can build out an adhoc wrapper (that just inherits the type definition and passes along whatever it is passed after altering it however needed) in under a hour. It doesn't scale in the sense that you don't expose a configuration, but config as code is king. (Source: have built out much more scuffed variants of this than the one I just described like https://github.com/boehs/ajar https://github.com/boehs/ajar) I guess a LLM can do as well. Although that's not something I'm quite ready to admit.
- whattheheckheck 5mo agoKeep developing it. Your taste and judgement matter
- 8n4vidtmkvmk 5mo agoI've wrapped fetch a few times but i don't think I'd blame someone if they got tired of wrapping it and wanted a consistent interface across all the projects they work on.
- interstice 5mo agoAh yes ad hoc, the best way to write fundamental utilities underpinning every fetch your app makes.
- internetter 5mo agoWrapping fetch is not rocket science
- chvid 5mo agoChatGPT in general recommends axios over fetch. (At least it did about 2 months ago)
- internetter 5mo agoThis is why people still need to know how to write code and why it is asinine to have an LLM write code without a human reading it. Good developers should know what good code looks like and push back when what they're fed is wrong.
- deleted 5mo ago[deleted]
- toraway 5mo agoYep, Claude made an executive decision to use Axios when it built one of my projects 9 months ago or so. ... and would then forget to use it 1/5 times and break auth/sessions in new code handling by using plain fetch.
- tommy_axle 5mo agoI wouldn't go that far. Right tool for the job as always. Axios offers a lot over fetch for all but the simplest use cases plus you get to take advantage of the ecosystem. Need offline, axios-cache-interceptor already exists. Sure you can do all of those things with fetch but you need more to go with it taking you right back to just using axios. Also is no one annoyed that you can't replay fetch like the xhr? Same with express: solves a problem reliably.
- ariwilson 5mo agoWhat's wrong with Express?
- internetter 5mo agoJust slow and convoluted internals due to the accumulation of cruft over time
- rozenmd 5mo agoSeveral newer alternatives that outperform it on Node, like Hono
- koolba 5mo agoWhat’s wrong with express?
- seanp2k2 5mo agojQuery is still useful too. May you never work in heathcare / government / defense where you need to support legacy browsers far past their expiration date.
- zarzavat 5mo ago> Depending on Axios suggests the devs don't know how to use fetch. You could equally say that using fetch means that the developers don't know how to use axios. They do the same thing, except axios does it a little better, when it doesn't pwn you. Axios predates the availability of fetch in node by 2 years, and fetch has never caught up with axios so there was no reason to switch to fetch, unless you need to run on both client and server then of course you use fetch.
- samtrack2019 5mo agoI compare this to the request and httplib in python, request library is vastly superior in usability but both do the same..
- kamranjon 5mo agoIn what ways has fetch never caught up to axios? I have not encountered a situation where I could not use fetch in the last 5 years so I'm just curious what killer features axios has that are still missing in fetch (I certainly remember using axios many moons ago).
- mattmanser 5mo agoSimple examples are interceptors and error handling. Fetch is one of those things I keep trying to use, but then sorely regret doing so because it's a bit rubbish. You're probably reinventing axios functionality, badly, in your code. It's especially useful when you want consistent behaviour across a large codebase, say you want to detect 401s from your API and redirect to a login page. But you don't want to write that on every page. Now you can do monkey patching shenanigans, or make your own version of fetch like myCompanyFetch and enforce everyone uses it in your linter, or some other rubbish solution. Or you can just use axios and an interceptor. Clean, elegant. And every project gets to a size where you need that functionality, or it was a toy and who cares what you use.
- msl 5mo agoForcing everyone to use ourFetch is rubbish, but forcing everyone to use axios is clean and elegant? You might want to elaborate just a little more.
- dheerajvs 5mo agoAnnoyingly, fetch does not support progress events and HTML / XML Document parsing, which are both supported by XMLHttpRequest, which Axios is based on.
- azangru 5mo ago> Axios, like Express, is something I'm shocked to see used in any modern codebase I am totally with you on axios; but why is express shocking, and what do you expect to see in its place? Fastify? Hono? Node:http?
- Chyzwar 5mo agoBecause your fetch most likely mishandle errors, lack retries, fail on redirects and is unnecessary verbose for both people and agents.
- deleted 5mo ago[deleted]