Nice! Overall I agree with most of these.
Though, from my experience with writing large production apps with React, I’d recommend:
- Don’t worry about separating out smart components and dumb components. Co-locate your data requirements (a la Relay).
- Don’t bend over backwards to make a component stateless. A stateful component is totally valid, and putting too much state into redux makes things difficult to maintain. Co-locate as much state as possible.