Skip to main content

Unidirectional Data Flow Architecture (Redux) in Swift

In this post, I try to explain why using Redux with Swift is better idea [than MVVM].

What is Redux and Unidirectional Data Flow?

Redux is a flux implementation but slightly better implementation, it makes your application’s state more predictable. It first came out in Javascript world as a predictable state container for JavaScript apps with the powerful javascript library React.

Redux, simply makes your application’s state in single store object. So firing an action from your application/in view’s lifecycle state changes and your reducers for that action generate a new state.


Seyhun Akyürek at Medium

Replacing Redux in Swift with something better

Being a fantastic framework for development doesn’t come without a cost. Every time you update internal state in Redux, the entire interface re-renders. This isn’t a huge deal in most cases. But eventually you might have a situation where one update to state needs to be instantaneous (like using the keyboard shortcut to move from one message to the next), while another update is taking a while to compute (like processing hundreds or thousands of new message headers just downloaded from the email server). Since everything is managed in Redux’s development-friendly single unidirectional, single-threaded store, you get a frustrating lag.

Redux wasn’t designed with the opportunities native apps have, like multi-threading. And it wasn’t designed with the difficulties fully native apps have, like sharing some code among a separate mobile and desktop app, or having to do their heavy processing, database storage, etc., in-app, all while keeping the interface lightning fast.

Only when one chain lands at an interface component that is currently being used does it travel back up the tree and compute what it needs. But it only computes exactly what it needs, and this is all opaque to the code outside of the framework; it seems to work as though needed values have already been computed.

By declaring how each piece of state or interface reacts to other state changing, the framework is able to run each piece of your code only and exactly when it is needed.

Alex Obenauer at Medium.com
SwiftReactions Framework

Comments

Most Favorite Posts

Judo App - Server Driven UI out of the box

Judo App Judo brings server-driven UI to your iOS and Android apps. Build user interfaces visually in a fraction of time and publish them instantly without submitting to the app store. Build Experiences - With No Code The Judo app for macOS, available through the App Store, is built for design professionals with common keyboard shortcuts and familiar concepts like canvas, layers and inspector panel. Workflow is streamlined with the ability to drag and drop media files directly into your experiences and manage your own Judo files in Finder. Manage Creative Execution A Judo experience is interactive and can include text, images, video and buttons. An experience may be part of a screen, a single screen, or more typically multiple linked screens. Judo supports screen transitions, carousels, horizontal scrolling and modals. Clients can add custom fonts and define global colors and these are updates applied universally. Effortlessly Deploy Judo Cloud syncs your experiences with your iOS and ...

Native Or Web? Bizness Apps Adds HTML5 Platform To Let SMBs Create Their Own Apps — For Both

Bizness Apps’s value proposition is simple: The startup wants to make mobile apps affordable, customizable, and simple to make for the small business owner. Thus, the startup offers a DIY iPhone, iPad, and Android app platform that enables SMBs to create, edit, and manage mobile apps without any programming experience required. You start with a template, customize them to suit your business, and then Bizness Apps makes them native apps and distributes them on iTunes and the Android Marketplace. TechCrunch

Server-driven UI (SDUI): Meet Zalandos AppCraft and AirBnB Lona

A short WTF: Joe Birch:  SERVER DRIVEN UI, PART 1: THE CONCEPT Zalando seems to follow the SDUI principle as well - defining a common design language and construct the screens on the backend while displaying them natively on the clients. They even go one step further; they implemented a mighty toolset to enable non-technical stakeholders to define their own native app screens Compass: Web tooling to create screens and bind data Beetroot: Backend service that combines the screen layout definition with the data Lapis/Golem: iOS/Android UI render engines Crazy cool! Good job, guys (when you do an open-source release?) To even move faster a Flutter based UI render engine implementation was great! See also AirBnB Lona SDUI approach Building a Visual Language Why Dropbox sunsetted its universal C++ mobile project and AirBnB its React Native implementation

Remote Desktop with VNC

Access your Mac from any computer with the use of VNC. This article describes the process of setting up a VNC server on your Mac, and how to access it from afar. Remote Desktop on your Mac for Free VNC Server VNC Client

Measuring a Mobile World: Introducing Mobile App Analytics

Analytics für mobilen App-Traffic ermöglicht durchgängige Messungen entlang des Weges von Kunden innerhalb einer mobilen App. Dazu werden Messwerte in allen Phasen des Kundenkontakts gesammelt – zum Beispiel Akquisitionsmesswerte wie neue/aktive Nutzer, Interaktionsmesswerte wie Besucherfluss, Kundentreue oder App-Abstürze sowie Ergebnismesswerte wie Ziel-Conversions und In-App-Käufe. So hilft Analytics Mobilentwicklern und Marketingexperten, erfolgreichere Apps zu erstellen und bessere Nutzererfahrungen zu schaffen. Die Funktion wird nun Schritt für Schritt eingeführt und gegen Ende des Sommers für alle Nutzer verfügbar sein. Google Analytics Mobile App Analysis