I have been using Alt/React which is pretty simple and straightforward. Now when I looked at :
etc...
It messed up my head. Why aren't we better off with a simple React/Redux set up? Why so much over-complication?
Try Cerebral. It's very clean and scalable. It's like Redux Saga but much simpler.
You first need to look at what you're trying to do or build. If you're just wanting to learn react, don't do it all at once... If you're wanting to step up your JS skill, that's a different story.
In general, for current web apps, you should probably be using a transpiler (like Babel) and a bundler (like webpack). Understanding JavaScript, including es6+ will go a long way... Being mindful of functional paradigms will take you farther.
Once you have that, you should either start with just React or use a boilerplate. Redux has become the defacto state machine to use with react, but not the only choice...
In the end, react is about displaying your data/state, and controlling event flow works with that. All of the pieces are like Lego blocks... React isn't the build a pirate ship kit... It's the mega starter kit with 2000 pieces of multiple shapes and sizes to choose from with the Mindstorm kits as an add-on option.
There's some recommendations, but it comes down to looking at your needs and working out from there.
You forgot:
selectors
compose
thunks
redux ducks
stateless reducers
dispatch
actions
action creators
immutable.js records
reselect
normalizr
redux-rotuer
provider
redux container
reducer
action creator
action
Store
combineReducer
Redux Devtools
Falcor
Logger
Just know that there is a light at the end of the tunnel. If you master these libraries, you too can build a form, or even have notifications on your web app. You know, similar to to exactly what you could do with jQuery.
It feels that way because when you use a full blown framework, like Angular, you have all of those packages included in the framework picked up for you.
I think that everything related to the React ecosystem fells that way. The everlasting battle between freedom and opinionated.
I believe we are in a time of unprecedented change in the way front ends develop. React is in a way a "reaction" to all that change as well as all of the other things like Webpack and Babel. I think that we are seeing the beginnings of the new standards for web development that will carry us forward for the next at least 5 years. There are already libraries that seem "post-react" like Mithril that try to reestablish some of the simplicity while adopting new paradigms like the virtual dom. I think what's really exciting is the idea of using javascript to build native applications and React Native is leading the way there. So to answer your question - things are probably going to swing from complicated to simplistic as a natural cycle, but that this all is due to a sea change in the way we do development.
Plenty of those concerns go beyond Redux actually. But I can see your point. The challenge of React is connecting the dots and seeing how it all goes together. This gives you flexibility, but it can also feel overwhelming as technology keeps stacking up and solutions come and go.
That said, you can build the complexity as you need. I see Redux more as a guideline. It pushes your state management to a certain direction and favors certain style of programming. The data flow if explicit. Even though there is boilerplate, once you acknowledge it, you can code plenty of that away. Instead of verbose data queries, you'll end up with something more terse and so on.
As time goes by I expect we'll see more opinionated options that build on Redux and all that. create-react-app mentioned by @jiyinyiyong is a definite step towards this direction.
Even though the community has gravitated around Redux, it's not the only option. This is both the blessing and curse of React. You'll need to choose your tools so that they fit the problem at hand rather than following dogma and kludging your problem to work with arbitrary tools.
All of these solutions have their sweet spots and it also depends on your experience making it even harder to choose. It doesn't help the landscape keeps changing quite fast as new approaches are discovered. I expect we'll end up with more stable solutions as enough time goes by and React ecosystem matures.
To be fair, you need to leave off the complications of edge UI development overall (webpack configs and loaders, css frameworks, transpiling, etc.). As for React/Redux you could make the argument that it's simpler because you're working in a single store as opposed to many. However, the pieces of that process are highly fragmented (action types, actions, action creators, store, reducer(s), side-effects like sagas or thunks, HoCs like connect, etc). It's a lot to keep in mind, granted.
For really large projects with multiple devs this kind of set up makes a lot of sense because your application is already complex. It tends to keep things within convention so that it doens't matter who writes the logic, you can find out quickly what's happening. Even so, I do have a suspicion that as time goes on things might become a little less decoupled and a more solid, opinionated framework may takes its place.
For smaller projects where this isn't needed or might be overkill feel free to use other setups that might be simpler. MobX is a promising alternative. :)
Bendik Aagaard Lynghaug
The inherent architecture of this combination of libraries it's built upon is also used in many other libraries eg. vdux and choo. Those two seem to be less demanding on boilerplate and provide fewer abstractions with basically the same patterns.
I've personally started using choo since it does just what i need for my prototypes. I have yet to use it for a large scale application, but I'm really happy with what it does with 5 kb so far.