Depends on the wheel.
I mostly work in Go when I have a choice, and it's got a lot in the standard library. (The Go standard library doesn't count as a dependency... or at least not an optional one.) When I write web (as in JS-in-the-browser) stuff, I don't use any JS dependencies aside from browser built-ins.
Also, I don't mean to imply I don't use dependencies at all. But having dependencies that aren't pretty much absolutely necessary is the kind of thing that ought to make one hate oneself a little more. Just a little self-flagellation for each dependency can't hurt either. (Just to be clear, I don't mean this literally.)
As an example, not long ago, I wrote a web-based virtual tabletop application (the kind of software you'd use to play Dungeons and Dragons remotely) in Go. Aside from the Go standard library, it's got exactly three Go dependencies: a Sqlite3 driver, a library for minifying HTML/CSS/JS, and a transitive dependency of the minifier for parsing HTML/CSS/JS. The JS has zero dependencies other than browser built-ins.
The "wheels" I could arguably be said to have "reinvented" just off the top of my head:
- Go:
- Facilities for building static assets into the compiled binary.
- And serving those static assets, but that's kindof one thing with the building into the compiled binary thing.
- Authentication.
- HTTP session management.
- Server-side in-application message bus.
- Facilities for building static assets into the compiled binary.
- JS/Web:
- JS dependency management. (Something like RequireJS.)
- Client-side templating. (Something like Handlebars.)
- Running code on document ready/loaded.
- Somewhere In Between:
- CSRF protection.
- Server push (using SSE).
Now, I could pull in Handlebar and RequireJS and React and jQuery and Underscore and Gorilla and have a build system that depends on NPM and Bower and maybe has a Makefile to coordinate it all. But I really don't see the benefit. Especially compared to the drawbacks.
And by not pulling in libraries for these features I'm saving:
- Performance.
- Client-side JS is smaller.
- The browser isn't bogged down.
- Quicker compile times.
- The back end is more responsive.
- Less cognitive load and fewer moving parts.
- I know much better how these features work.
- With FOSS dependencies, I could also know how things work, but honestly it's probably faster to write it myself than look through the source code of a framework.
- Less hard-to-track-down bugs.
More reading relevant to avoiding dependencies and frameworks: