First of all, I need to disclose my background since it will help all of you more easy to understand my later points.
I’m a mobile app developer almost all the time in my developer journey. Of coz I did something beside it before the mobile app industry born and some other thing around it to build some great stuff. But I can only say I am a iOS developer so proudly. That’s my platform specific knowledge.
That say, my understanding of Redux, is built upon my limited front end knowledge and my other development experience.
I do know Flux, I understand every single word on the website. I know the relationship (so not confidently) between Redux and Flux, one is the concept, the other is one implementation of it. I totally agree that, for UI heavily involved development, manage well the data (or should I use
state when it come to frontend domain🤷🏻♂️), or the flow of data always determinate the easiness further development or maintainability of your application. That say, on this level, I totally agree with the Flux and Redux methodology. Since I seldom do web development, my experience of React and Redux are purely from some hobby project. Base on my limited experience around it, I must say I like it. But that
I like it doesn’t bring me to admire level. Well, you will see why next, let’s talk about my development experience as a mobile developer.
I’ve been working on iOS development quite a years (1 or 2 year before Apple enforce you to use ARC 🤢). Start from offline app to almost all have a dedicate server app. A lot of things changes these years, there are iOS developer only know Swift, 1x XXKit added to Cocoa touch, people feel crazy about MVVM… But one thing don’t change, between backend to front end, I usually have a data layer (persistence or not persistence, it depends on project size and client budget).
Data normally get refresh on that level, then all subscriber get notified and updated afterward. The data structure on that layer enforce all data refreshing logic to eventually transform their data to the one it can digest, that say, no matter what action behind, the action result is dispatch to that data warehouse, and later dispatch to all subscriber interested in that piece of data. Sounds familiar? Yes, this is almost exactly how Redux work…
My point is, when the Redux come to a native OS powered platform, it is not that necessary at all compare to when it was living in a browser. There are tons of way to engineering a project without even introduce a third party framework, you really should have a fairly strong reason and understanding before you introduce an extra dept to pay by late comer to your project.
Now, it’s a perfect time to recap:
Redux one of implementation of Flux
(Also philosophy behind Flux is not new at all, but let’s just forget about it). Flux itself should be the thing for you to read about, think about and learn about. And now, it lead us to the title of this post. Although Redux is great product with good engineering (I haven’t read the source code, but I really think it should be good since it can’t be bad when you are trying to behave good), but I don’t admire it. The only things I will admit are, from the story of flux and redux, it does strengthen my understanding and confidence about some burry concepts. It also help me to explain/spread such important concept to such people who doesn’t even care about it before.