First off, what are vanilla JS and React?
Another significant difference is how the DOM (Document Object Model) is updated. With vanilla JS, the DOM is typically updated with event listener functions that modify specific pieces of html. This often creates lengthy solutions for modifying the UI and demands that engineers keep track of more interactions.
Updating the DOM with React happens automatically when state changes. This means that you can modify the UI by simply changing state. For example, action-specific element attributes (e.g. onClick, onChange) trigger functions to change state.
Now back to my initial question - when is React more appropriate than vanilla JS?
I believe that React is great for apps that require many views that could utilize recyclable components, and for apps that frequently change what is displayed to the DOM. Web Apps that have data that is frequently changing and updating what is displayed to your screen could benefit from React's intuitive UI management.
On the other hand, vanilla JS is great for ground-up builds that aim to satisfy a very specific direction. If React's interfaces do not satisfy a specific need for your project, it is probably better to use vanilla JS to keep your project more lightweight. Focusing on vanilla JS also seems to carry more value when interviewing for companies. While React is widely used and is absolutely in demand, frameworks do change and vanilla JS will always have inherent value.