title: Struggling with the role of Redux action creators
body: <p>I'm struggling to get the correct notion of a redux "action". Is it more like a simple message that represents what happened in the user interface and nothing more, or is a fat record holding all the new state?</p>
  
  <p>In the Redux examples I read, actions are always simple CRUD like operations. For the example, when adding a TODO, the view button event handler (or should I say the TODO controller) creates an ADD_TODO action that already contains a full todo object, with a new identifier. The reducer merely inserts the data. Reducers are not "smart".</p>
  
  <p>However, this causes the controller to have a lot of logic to compute the data for an action. It is fine for a simple TODO app, but in more complicated apps a lot of the "business logic " will be contained in these controllers, and not in the reducers (the latter merely performing simple CRUD operations that are always the same really).</p>
  
  <p>So if a controller crashes while creating an action, the action will not be logged at all, and action logging is one of key Redux selling points IMHO.</p>
  
  <p>What are the guidelines for creating actions with complex code to setup the action's data? Should I just put try/catch around these action creators, and use another logging system? Or should I use a thunk for this, splitting the complex action creation into two actions (or 3 if an error occurred, exactly like async API calls are handled)?</p>
  
  <p>Thanks,
  Peter</p>