
Explore the Redux design pattern in SwiftUI, mastering store, reducers, state, actions, and middleware for asynchronous requests while building a counter and a movies app with IMDb API.
Identify the two prerequisites—Swift programming with closures, enums, and result types, and the SwiftUI framework—while noting the course centers on the redux design pattern.
Learn to access exercise files via the results tab, download individual files, and use the resources to grab the complete project.
Discover how redux acts as a global state container that lets multiple views share and react to the is authenticated property, avoiding messy data passing through view hierarchies with subscriptions.
Explore how a view dispatches actions that travel to reducers to replace the global state, with multiple reducers combining into a root reducer and the store.
Represent app state as a global state or slices like a movie state; dispatch fetch or set movies actions, and reducer updates slice with payloads or handles increment actions.
Discover how middleware sits between actions and reducers to fetch data from an API and dispatch new actions that update the global state.
Explore Redux fundamentals by building a simple counter app that updates the global state, wiring together the store, reducer, state, actions, and environment objects.
Explore a beginner-friendly redux-like setup in SwiftUI, creating a global store with state, reducer, and actions using a simple counter to illustrate dispatch and state updates.
Dispatch actions to update a global store via a reducer. Use an observable object and publish changes to rerender views as the counter increments.
Learn how to connect a global store to a SwiftUI view by mapping global state to local props, injecting an environment object, and dispatching actions to update the counter.
Implement decrement and add actions in a Redux-style SwiftUI architecture, dispatch actions, update the counter in reducers, and wire components for decrement and add actions.
Explore why using multiple reducers in Redux clarifies state management by splitting slices like counter and movies, showing how actions update specific state portions and prevent a monolithic reducer.
Create multiple reducers inside a shared store and organize them in a reducers folder, starting with a counter reducer and an app reducer as a route reducer.
Implement a redux state protocol, compose an app state with a counter state, and wire separate counter and app reducers to manage sliced state through the store.
Create a task state slice and a task model to represent tasks. Implement a task reducer to handle add task action by appending a new task.
Present a modal add-task view, capture input in a text field, and dispatch an add task action through a Redux-style store to update the task state.
Explore why middleware enables dispatching actions from within asynchronous actions, using a redux-like flow to call APIs, pass results to reducers, and update global state with a simple logging middleware.
Implement a logging middleware for a redux-style SwiftUI store. Log actions when dispatched, before hitting the reducer, print to console, ensure main queue updates, and wire middleware into the store.
Learn to dispatch async actions with middleware in a composable swiftui redux architecture, creating an increment async action that dispatches after two seconds to update global state.
Discover a movies app built with Redux and Sophie that searches IMDb, displays results with posters and plots, and fetches details via IMDb API calls, including a custom rating control.
Register for IMDb api to obtain your api key and enable requests. Learn to use the endpoint to search movies, receive json results, and display posters in SwiftUI apps.
Review the starter project for a redux-style swiftui app, examining the store, middleware, state, and reducers, plus extensions, views, and loaders, and plan the web service to fetch movies.
Implement a web service in the shared services, building an HTTP client to fetch movies from IMDb using get movies by, handling URL and decoding errors.
Create the movie state and update the app state to include movies. Implement the movies reducer and wire it into the app reducer, then prepare a middleware to fetch data.
Create a fetch movies action with a search field and a movies middleware that url-encodes the search, calls the web service, and dispatches set movies on success.
Implement the movies reducer to handle the set movies action from middleware, updating the movie slice of state with the payload while returning a brand new state.
Learn to map global movie state to local props using a mapStateToProps function, access the store via the environment object, and dispatch fetch movies by keyword.
Fetch movies on appear, render a clean list with posters via a URL image control, and refactor movie rows into a reusable movie cell subview.
Type in the search box, bound to the search state, triggering search on edits and enter, and ensure spaces are URL encoded when requesting the movies from the web service.
Examine the movie detail endpoint from omdbapi, decode a JSON object by IMDb id, and select fields like title, plot, poster, and IMDb rating for the model.
Create a movie detail model that decodes json by mapping uppercase keys title, plot, IMDb rating, poster to Swift properties with a private CodingKeys enum, and prepare a fetch function.
Implement get movie details by IMDb id, fetch with URLSession, decode to movie detail, and return via completion; have middleware fetch and set the selected movie detail.
Create actions and extend middleware to fetch movie details by IMDb ID, update selected movie detail in state via the reducer, and enable list page to details page transition.
Display the selected movie details using a SwiftUI view integrated with a redux-style store to fetch and show poster, title, plot, and rating.
Explore the restroom finder app, listing nearby restrooms based on your location, with live updates when you change location and a directions button opening Apple maps.
Explore how the Refuge Restrooms API delivers by location restroom data through get requests, returning name, accessibility, changing table, comments, and distance for lat/long queries.
Examine the starter project with extensions, a hello redux setup, and scaffolded folders, and prepare to implement location-based restrooms search by configuring the store, reducer, and info.plist.
Implement a web service and restroom model for the Refuge Restrooms API, including an address computed property, network error handling, and Redux middleware integration to fetch restrooms.
Create a restroom state in the app state, with a restrooms reducer and actions for fetch by latitude and longitude, setting restrooms, and a middleware to fetch from web service.
Implement the restrooms middleware to call the web service using location manager to obtain latitude and longitude, fetch restrooms, and dispatch actions that update the global state via the reducer.
SwiftUI applications can be implemented using several different design patterns. The two most common patterns are MVVM and Redux. In this course, you are going to learn how to get started with using the Redux design pattern in your SwiftUI applications.
Requirements
Knowledge of Swift Language
Knowledge of SwiftUI Framework
No paid software is required. All apps are created using Xcode.
Understanding Redux:
In this section, you will learn different components of the Redux design pattern. You will start by learning about the Redux store and how reducers can access and update the store. You will also learn about state and storing state in smaller slices of the global state. Next, you will learn about actions and how actions can be dispatched from the store and carry a payload. Finally, you will learn about middleware and how middleware can be used to perform an async request.
Hello Redux
In this section, you will learn how to integrate Redux with SwiftUI application. You will build a small counter application and exercise all components of Redux including store, reducer, action and mapStateToProps.
Combining Reducers - Multiple Reducers
In this section, you will learn how to combine multiple reducers into one root reducers. Dividing reducers helps you to clean code and not end up with one massive reducer.
Middleware
In this section, you will learn how to implement a middleware. Middleware can be used to perform asynchronous requests and pass the result of the request to the reducer by dispatching an action.
Movies App
In this section, you will learn how to build a complete Movies App using Redux Design Pattern with SwiftUI. You will learn how to implement middleware to consume a third party OMDB API. You will also learn how to display images and ratings using provided URLImage and RatingView views. You will also implement the details screen, which will allow you to fetch movie details.
Don’t take my word for it, check out reviews from my other courses.
It is amazing, not only is it clear but it clarifies all my unanswered questions. It's hard to find someone who has a well detailed swift DS & Algo class. This is a gem. Thank you Mohammad Azam
This course provides a bundle of resources on Swift UI. Great explanation, building different apps and addition of latest updates makes it a five star course. Thanks Mohammad for you valuable work on providing this course.
Mohammad's courses are usually outstanding, but he has put in a great amount of detail into this course. He provides great detail in his explanations. If you have never parsed JSON and are looking to learn about MVVM design I would highly recommend this course.
Very elegant course. Well scaffolded. Each section is very focused on a single task. One pet peeve I have of Udemy courses is when an instructor teaches a new skill but nest it inside a project that does 10 other things. This is the second course I've had with this instructor and both are excellent. Highly recommended.
After completing this course, you will be ready to build your next SwiftUI application using Redux Design Pattern.
Thanks and happy coding!
Azam