I personally draw the line at running npm init, but I'm kinda biased :)
More seriously, while you certainly can write a React app with only component state, and there's nothing wrong with doing so, using Redux (or even another state management library like MobX) can have a number of benefits. I wrote a Stack Overflow answer on "Redux vs plain React?" a couple months ago, which I'll paste here for reference:
Off the top of my head, a few advantages:
- A lot of the time your app's state tree could be considerably different than the UI tree
- Many components may need to access the same state and display it in different ways
- Hot reloading components will wipe out your existing component tree, including any state stored inside of them. Keeping the state separate from the UI tree allows the UI tree to be swapped out and reloaded with the updated components, while keeping your current development state the same.
And that's before getting to many of the commonly discussed benefits, such as predictable state updates, time travel debugging, improved testability, and centralized logic.
It's certainly true that you can write an entire application using nothing but React's component state (and Dan Abramov himself says that people often jump into Redux too early), but from my perspective Redux is absolutely worth it.
You may also want to read the Redux FAQ entry on When should I use Redux?.