ReactFoo 2017

A conference on React

VARSHA SAHA

@varshasaha

State maintenance with Redux in a multi layered Javascript Application

Submitted Feb 28, 2017

State maintenance is one of the key challenges we encounter while building a large scale application. If we are building our application as a platform which has some core functionalities to be utilised by ‘n’ clients which also have their own functionalities then state management becomes even nastier.

My talk would focus on key challenges we need to solve for:

  1. What if the app is huge and acts as a platform, encapsulating child app(s) within it?
  2. How does the child app(s) operate in isolation as well as interact with main app?
  3. What if the child apps are on different tech stacks?

The platform that I am developing, is bundled with requirements of building sub-apps on top of it, which also need to scale individually. While the platform provides for core functionalities and widgets that can be utilised by sub-apps, these sub-apps also need to interact with the main app.

If there is a button click on main app which changes/publishes data/view, the sub-app needs to listen, and subsequently conform itself to the change.
This can be made possible by having a common pipeline between the two that records and notifies of each other’s state transition.
This in my case is made possible by Redux as a binding conduit. Redux takes care of state management effectively. When a sub app introduces itself in the container, the two states are combined, and subsequently manifest into a common state tree. The branches of this state tree can then be subscribed by both main and sub-apps.

I, while working at Flipkart’s Customer Experience team have built this platform and on boarded two organisations so far.

My talk would answer to the following premise:

  1. How is dependency management, state transition and client side routing made possible in this scenario?
  2. Do we take single store or multiple store approach given that there are multiple organisations?
  3. How do we use (and reuse) ‘Container & Presentational Components’ to ensure seamless extension and minimal maintenance?

Intended audience:
My talk is meant for all JS developers working on a large scale application. Having basic knowledge of Redux would help but it is not a prerequisite.

Takeaways:
The audience would get a good idea on how to build a scalable application which could be utilised by many clients.
They would learn how to make a clean and readable state tree so that maintenance becomes easier and everything fits together seamlessly.

Outline

0 min - 5 mins:
My introduction and a brief over the topic.
5 mins - 10 mins:
Explain about Redux with a few examples
10 mins - 20 mins:

  1. Demonstration and walk through of how such an application would work
  2. Stress on different tech stacks being installed into the main app.
  3. How the state tree would look like and how the sub apps would utilise it.
    20 mins - 25 mins:
    Live Coding and on boarding a small app into the system.
    25 mins - 30 mins:
    Conclude my talk.

Speaker bio

I am a JavaScript developer working for Flipkart Internet Pvt. Ltd. in India. I am passionate about solving large scale problems with simple tech solutions. I just wanted to share this with the larger Front End community after gaining a little bit of experience and a lot of knowledge and exposure in making such a huge application. This architecture is something I have been passionately working on for the past few months and it has turned out to be successful, with minimum work required when new organisations get on boarded. I want my audience to know how a large complex problem, when broken down into a simple structure can change how we look at it and how we develop it.

Comments

{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}

Hosted by

A community - for and of - front-end engineers to share experiences with ReactJS, performant apps with React, crafting better User Interfaces (UI) with React and GraphQL ecosystem. ReactFoo also discusses design patterns and user experience. more