Something I think a lot about is what level of abstraction to attack a problem on. Here is a loose cataglog of where I've been thinking about it lately.
React libraries
Previously I've been reluctant to use libraries in my react code, generally preferring to roll my own solutions, believing that you tend to hit a wall with what you can do with libraries and working around their limitations becomes as much or more work than building your own. There are things I would use, like state management libraries, but I figured most of the interaction stuff I'd rather do myself.