> jQuery

Yes, jQuery is still fine, just (maybe) dying a bit in popularity. The biggest problem I think most people had/have with jQuery is it doesn’t enforce any kind of structure, therefore leading to a ton of spaghetti code if the developer isn’t already fairly disciplined, unlike React/Vue that encourage (almost force) you to write highly modular code through components. However, I think a lot of this was caused by the fact that it was actually pretty hard to write modular JS in jQuery’s hay day, as things like ES6 modules didn’t exist.

> Is there a lightweight JS framework for UI?

Tons. Are they any good/well supported? Meh. I’m sure there are a few good ones out there, but none that have near the amount of dev support that React/Vue/Angular have. The only one I can think of that I’ve seen mentioned, in a positive manner, that might fall in this category and isn’t one of the ones normally thrown around is Riot.js[1], which may be interesting to you. It's mostly just regular JS, though it does have a template system, so depending on who you ask that's either really neat/good thing or the worst thing since ColdFusion.

> Should I implement my own state management lib

No.

> Redux

If you want to use Redux, you might as well add React. While you don’t technically have to use them together, I don’t know why you would use Redux without React (or at all). If you are interested in adding some sort of central state management, and aren’t interesting in adding a framework I’d suggest looking at MobX[2] instead. It’s quite a bit more agnostic than Redux.

> Have you ever been in this situation?

Yeah, about two(ish) years ago, I found myself working a fairly typical Rails app, and I wasn’t satisfied with how shitty the UI was, and wanted to add some JS crap to achieve the functionality I wanted (i.e more interactive & dynamic interface). I looked at React, tried some tutorials and all that, hated it almost immediately because of all the setup bullshit, weird api naming (which I believe has gotten better), and JSX looked like complete shit to me (still not in love with it).

So, I decided to check out this Vue thing that people were starting to talk about (was only an early version 1 then). First impressions were good, I didn’t have to configure a shit load of different build tools to add it to my monolithic Rails app, just added a js file (and you can still just do this), the docs were surprisingly easy to read and really helpful. I was productive with it after a few days, prior I had only done some very minimal jQuery crap. And what initially started out as an effort to add some interactivity turned into the entire frontend being rewritten in Vue because it’s (my opinion) that good.

jQuery is still fine, if you’re just looking to add some light interactivity, that’s literally what it’s good for. If you want to make a highly dynamic frontend, you’re probably best of biting the bullet and going for one of the major frameworks (React/Vue/Angular/Ember(?)), as they have the most support and aren’t going to be dropped because the maintainer realized he doesn’t give a shit anymore. And, I’d say Vue is likely the most approachable, as the docs are very good, the community is super helpful, and (if you want to) you can gradually ease into the full blown modern build config setup (vue-cli makes this something you don’t have to even worry about these days though). To start using Vue, you just have to link a js a file in your HTML like the good ol days (or even just use the CDN and not have to download anything)[3], unlike React/Angular which require build steps to be in place. I also think, in my slightly biased opinion, Vuex (Vue’s flux-esque state management lib) is the easiest to use, and it doesn’t try to be a general, framework agnostic, lib so it’s highly integrated into Vue which makes it easy add and unobtrusive to use — I add it to any Vue project I’m working on regardless of size because it’s so easy to work with. Not sure most people would be gunning to add Redux (boilerplate) to their projects until it actually needs it.

[1] https://riot.js.org/

[2] https://github.com/mobxjs/mobx

[3] https://vuejs.org/v2/guide/installation.html#Direct-lt-scrip...