| > Could you clarify what you mean by that? A call to dispatch is significantly more expensive than the update of a JS object > Ideally, a `mapState` function should just grab a couple values from the Redux state object and return those. Ideally it should, but in practice it is really much more expensive than getting a value in a JS object > If a component needs the store data to be transformed in some way, we recommend using memoized selector functions [0] to cut down on unnecessary work. I used Reselect before removing Redux. Beyond the fact that it adds a lot of boilerplate it does not help if you do need a lot of data updates. > So, in a well-written app, your `mapState` functions shouldn't be bottlenecks. It shouldn't but a few dozen of updates per second through Redux on a mobile take a toll on its performance serious enough to not be able to keep 60fps in a WebGL context. I decided to remove Redux after noticing the performance overhead per function call in the Chrome performance profiler, so I know that in practice "dispatch" and "mapState" are not comparable to just editing or grabbing "a couple values from the Redux state" My ex-coworker had the same issues because he needed to display a lot of items handled collaboratively with smartphones. In both of our cases we have a high rate of data updates, even if we optimize like crazy we are never going to fall under 4-5 update/second per connected user. So yeah Redux can run well for webapps with a slow/regular pace of update but for more performance sensitive apps you do pay a Redux performance tax. Again I still use Redux on some projects and I like it but the limits are there. So now I don't hesitate to do without it first and to use it when I need its abstraction. |