I certainly don't hate jQuery. I think it was a very important foundation of JavaScript's history and progress and did an excellent and very necessary job of handling the divergent implementations in different browsers for various features. jQuery offered a uniform API against which people could write their code without having to learn slightly different syntax as expected by each browser. Having said that, I just have no need for it in my workflow anymore. jQuery comes with a number of different concerns, but we can boil it down to a few categories; DOM selection and manipulation, event handling, functional javascript, animations, and ajax. I'm a full convert to React.js, and when using React I only ever have to select from the DOM once * to find the element into which we inject the React payload. For this we can use document.getElementById , which is supported across browsers. React also handles pretty much all of the DOM manipulation. It also handles almost all of my event listeners... but if I need to attach something to the document, document.addEventListener is supported across all major browsers. For functional javascript there are better, more targeted libraries, like lodash (https://lodash.com/) or underscore (http://underscorejs.org/). For ajax we use superagent (https://www.npmjs.com/package/superagent). And there are a ton of options for animations as well... or you can do much of your animations via css. So it's not that I hate jQuery, but to me it's a historical artifact. Either I don't need what it offers, or the browsers have now converged on a standard, or there are better, more targeted solutions available via npm (ala browserify or webpack). * This is mostly true, but in practice there are a few additional cases where you need to reach into the DOM, but React offers an API for this as well.