Redux
Normalizr
Use it only when JSON API response has deeply nested data and it is difficult for you to retrieve the nested data from the store. If your API response has one level or no nesting, you don't need normalization.
Reselect
Use this when your components have similar data requirements so that you can use share selectors between different components or you have complex selector which will be executed multiple times, because reselect automatically memoizes all selectors so that if the same input is given to the selector, it will not run the function again instead will give the cached output.
This boilerplate uses redux and reselect really well.
Finally, Best practice in any library is to know when to and when not to use it. Sadly most projects don't mention those details in their documentation. Use a library when it is necessary or it adds value to your app.
@mayank, thanks for the invite.