React Native in Webview: Everything You Need to Know - Simone Carazzai | React Native Heroes 2023

React Native Heroes
23 May 202420:47

Summary

TLDRSimone, a React Native developer at Accentor, discusses the migration from WebView-based apps to React Native. He outlines the process, starting with identifying sections to switch, maintaining UI/UX, and addressing session management challenges. Simone shares strategies for development, testing, and deployment, highlighting the use of tools like Redux Saga for data handling and React Native's capabilities for enhancing user experience. He concludes with a real-case project example, demonstrating improved performance and user engagement post-migration.

Takeaways

  • 🌐 The script discusses the migration from web-based applications to React Native, focusing on the transition process and the benefits of using React Native for mobile app development.
  • 🔍 Simone, a React Native developer at Accentor, introduces the topic and outlines the agenda, which includes understanding the web view, identifying sections for migration, and discussing development and release strategies.
  • 🛠️ Web views are described as components that display web content within a native view, acting as a 'black box' to the app, with limited interaction capabilities.
  • 🏢 Companies often rely on web views because they have an existing online presence and believe it is unnecessary to invest in a separate mobile application, aiming for quick and cost-effective solutions.
  • 🔄 The immediate update feature of web views is highlighted as a pro, where changes on the web reflect immediately in the app without needing user updates.
  • 🚧 The cons of web views include performance limitations, difficulty in maintaining stable sessions, and challenges in continuous information flow due to the 'black box' nature of web views.
  • 📈 Tools like Firebase Analytics or SDK integrations can help identify the most used pages in an app, guiding the migration process by prioritizing these sections for React Native development.
  • 🛑 Remote config is emphasized as a crucial tool during migration, allowing for quick adjustments and rollbacks in case of issues post-deployment.
  • 🔗 The importance of maintaining session management and cross-flow between web view and React Native sections is discussed, with strategies to ensure a seamless user experience.
  • 🛍️ A real case study is presented, detailing the migration process of an e-commerce app, focusing on session management, API integration, and user engagement strategies.
  • 📝 The use of Redux Saga middleware for managing API calls and state in React Native is explained, showcasing its role in handling data flow and error handling in the migrated app.
  • 📈 The script concludes with the ongoing process of migrating more pages to React Native and the continuous improvement of user experience, with plans to migrate the cart page next.

Q & A

  • What is the main topic discussed by Simone in the script?

    -Simone discusses the migration from web view based applications to React Native, including the reasons for such a migration, the process, and strategies for a smooth transition.

  • Why might companies initially rely on web views for their mobile presence?

    -Companies might rely on web views because they already have an established online presence with a website and believe it's unnecessary to invest additional resources to develop a new mobile application.

  • What are some advantages of using web views for mobile applications?

    -Advantages include immediate updates to the application whenever changes are made to the website, and no need for users to update the app or for the company to manage deployments.

  • What are the main disadvantages of using web views in mobile applications?

    -Disadvantages include performance limitations, slower page loading, difficulty in maintaining a stable session, and challenges in continuous information flow due to the web view being a 'blackbox'.

  • What is a WebView in React Native and how is it used?

    -A WebView in React Native is a component that displays web content within a native view. It can be configured with properties like user agent and source, and can communicate with the app through post messages, cookies, and user agent.

  • How can a React Native application communicate with a WebView?

    -A React Native application can communicate with a WebView using post messages, cookies, and the user agent. Post messages allow JavaScript functions to send data to the app, while cookies can maintain user sessions.

  • What is the role of remote config in the migration process from web view to React Native?

    -Remote config can be used as a safety net during the migration process, allowing developers to turn off new features or revert to old components if issues arise post-deployment.

  • What strategies can be used to maintain a stable user session during the migration to React Native?

    -Strategies include using cookie-based sessions, where the session ID is sent by the server and resent with every API call to maintain user login, and managing session cross-app behavior to ensure users remain logged in across different parts of the application.

  • How does the speaker describe the use of Redux Saga middleware in managing API calls in the migrated PLP page?

    -Redux Saga middleware is used to manage API calls with function generators, allowing for pause and resume capabilities, and handling of responses with request and response interceptors to manage session and data flow.

  • What is the significance of using a phased rollout strategy during the migration process?

    -A phased rollout strategy allows for the gradual introduction of the new React Native components to users, enabling the monitoring of performance and user experience, and making adjustments as needed before a full-scale deployment.

  • What is the importance of maintaining the same UI during the UI/UX implementation phase of the migration?

    -Maintaining the same UI is crucial to ensure a seamless user experience and to avoid confusion or dissatisfaction among users who are accustomed to the existing interface.

  • How can Firebase Analytics or similar tools be utilized in identifying the most important sections for migration to React Native?

    -Firebase Analytics can track user actions and provide data on the most used pages, helping developers identify which sections to prioritize for migration to React Native based on user engagement.

Outlines

00:00

🛠️ React Native Migration Overview

Simone, a React Native developer at Accentor, introduces the topic of migrating from web view to React Native. The discussion covers the reasons companies initially rely on web views, including cost and time efficiency, and the subsequent decision to switch to React Native due to performance limitations and the 'black box' nature of web views. Simone outlines the agenda for the talk, which includes development migration steps, release strategies, and real-case scenarios from a project they have been working on for two months.

05:01

🔗 Communication Between Web and Mobile Apps

This section delves into the methods web apps use to communicate with mobile applications, such as post messages, cookies, and user agents. Post messages are JavaScript functions that facilitate data transfer between the website and the mobile app, which can be intercepted by the web view. Cookies are useful for maintaining user sessions and authentication, and React Native offers a package to manage cookies effectively. The user agent is a string that describes the browser making the request, which can be used by servers to apply different logic based on the type of client. Tools like Firebase Analytics can help identify the most important sections of a web app for migration to React Native.

10:03

🛑 Session Management and Cross-Flow Behaviors

The script discusses the importance of session management and maintaining cross-flow behaviors during the migration process. It describes the use of axios for API management, including request and response interceptors to handle cookies and authorization. The project aimed to stabilize sessions by using cookie sessions, which improved user experience by preventing logouts and data loss when the app was backgrounded. Additionally, the script mentions the implementation of session cross-app and web behavior, ensuring users remain logged in when redirected to web pages from the React Native app.

15:04

📈 Implementing Redux and React Animated for Enhanced UX

Simone explains the use of Redux and Redux Saga middleware in the migrated PLP (Product Listing Page) to manage state and side effects. Function generators are utilized for pausing and resuming operations, allowing for efficient data handling. The script also covers the use of React Animated to maintain the user's scroll position after filtering or sorting products, enhancing the user experience by preventing loss of view. The importance of remote configuration and phased rollouts for testing and gradual implementation is highlighted, ensuring a smooth transition and the ability to revert if issues arise.

20:04

🚀 Future Steps in React Native Migration

The final paragraph outlines the next steps in the migration process, focusing on improving user experience by continuing to bring more pages into React Native. The plan is to migrate the cart page next, following the same steps as the PLP. Simone concludes by offering assistance for any questions, emphasizing the ongoing nature of the project and the iterative approach to migration.

Mindmap

Keywords

💡React Native

React Native is a popular framework for building native apps using React, a JavaScript library. It allows developers to create applications for Android, iOS, and other platforms with a single codebase. In the video, the speaker discusses the migration from a WebView-based approach to using React Native, which is part of the theme of transitioning to more performant and integrated mobile app development.

💡WebView

A WebView is a component that displays web content within a native app. It acts as a 'black box' where the app has limited interaction with the web content. The script mentions WebView as the initial method companies use for mobile presence, which is later discussed in the context of migrating to React Native for better performance and integration.

💡Session Management

Session management refers to the way user sessions are handled within an application, ensuring a user's login state and data persist across interactions. The video discusses the challenges of maintaining stable sessions, especially when integrating WebView with native components, and how the migration to React Native helps in addressing these issues.

💡Remote Config

Remote Config is a feature that allows developers to change the behavior of an app without publishing an app update. It is used for A/B testing, feature toggling, and more. In the script, the speaker mentions using Remote Config as a 'parachute' during the migration process to quickly revert changes if issues arise.

💡Post Message

The 'post message' is a JavaScript function used for cross-document communication between the WebView and the native app. It allows the WebView to send messages to the app, which can then respond accordingly. The script explains how this is used to facilitate communication between the web content and the React Native app.

💡Redux

Redux is a state management library used in React applications to manage the state of the app in a predictable way. In the context of the video, Redux is used to save and manage the state of the app, such as the user's selected store, ensuring that the state is consistent across different parts of the app.

💡Interceptors

Interceptors are a pattern used to intercept and modify requests or responses in a chain of operations. In the script, the speaker discusses using interceptors with Axios, a promise-based HTTP client, to add cookies and authorization headers to requests, which is crucial for maintaining user sessions.

💡User Agent

The user agent is a string that identifies the client software originating a request to a server. It can be used by the server to tailor responses based on the client's capabilities. In the video, the user agent is mentioned as a way to differentiate between requests coming from a WebView or a React Native app, allowing for conditional logic on the server side.

💡Performance Limitations

Performance limitations refer to the constraints in speed, efficiency, and responsiveness of an app or system. The script discusses how WebViews have performance limitations compared to native components, which is one of the reasons companies might choose to migrate to React Native.

💡A/B Testing

A/B testing is a method of comparing two versions of a webpage, app, or other content to determine which performs better. In the context of the video, A/B testing is implied as a strategy that could be used in conjunction with Remote Config to test new features or changes in the app before a full rollout.

💡Phased Rollout

A phased rollout is a strategy for releasing a product update or feature to a small group of users initially and gradually increasing the audience over time. The script mentions phased rollout as a strategy for the migration process, allowing developers to monitor the performance and user feedback before making the update available to all users.

Highlights

Introduction to the topic of migrating from WebView to React Native, emphasizing the importance of understanding the web and its communication methods.

Simone's self-introduction as a React Native developer at Accentor and the outline of the talk's agenda.

The four key questions Simone asks when considering the migration from web to React Native.

Explanation of what a WebView is and its role as a 'black box' within mobile applications.

Reasons companies rely on WebViews, including cost and time efficiency of using existing websites.

The cons of using WebViews, such as performance limitations and session management challenges.

Different methods for communication between the web and mobile application, including postMessage, cookies, and userAgent.

The use of Firebase Analytics and SDK integrations to identify the most important sections for migration.

Importance of maintaining UI/UX consistency during the migration process and the addition of engagement features like push notifications.

Utilization of remote config for migration as a safety net to quickly revert changes if issues arise.

Real case study of a project Simone has been working on, focusing on session management and API optimization.

Implementation of axios for API management with interceptors to handle session and authorization.

The use of Redux and Redux Saga for state management and data flow control in the migrated app.

How React Native's animated library and refs are used to enhance user experience with dynamic UI behaviors.

The phased rollout strategy for the migration, using remote config to manage the release of new features.

Performance improvements observed after migrating parts of the app to React Native, including faster API responses.

Future plans for further migration of pages to React Native and continuous improvement of user experience.

Closing remarks inviting questions and further discussion on the migration process.

Transcripts

play00:00

now then that we know more what the web

play00:03

is and how we can communicate with it we

play00:06

can start talking about some development

play00:08

migration steps the first one is to

play00:10

identify which is the section to switch

play00:13

in R native the UI and ux implementation

play00:16

some remote config and the testing part

play00:20

before go with the go live so with the

play00:22

deployment

play00:46

hello everyone thank you first of all

play00:49

let me introduce myself I am Simone and

play00:51

I am a react native de developer at

play00:53

accentor and today I want to talk about

play00:57

a topic that all of us at least once

play01:00

during our career have encountered or

play01:02

will face the migration from web view

play01:05

based up to react native every time I

play01:08

come across this situation I always ask

play01:10

to myself four mailing questions the

play01:13

first one is why do many companies rely

play01:16

on web use what are the pros and the

play01:19

cons of the web use and why do the

play01:22

companies at some times decided to

play01:24

switch web VI to react native after that

play01:28

how can we keep track of a long term

play01:30

development and releases I will try to

play01:33

give an answer to all of these four

play01:34

questions following this agenda so we

play01:37

can start knowing more about the web

play01:40

view in R native sliding into the

play01:42

development migration step with some

play01:45

release strategies and some parachutes

play01:47

that I always added in my code and uh

play01:50

closing with a real cases that uh for a

play01:53

real project I'm working since two

play01:56

months ago let's start talking about the

play01:58

web view in react native what is a web

play02:01

view a web view is a component that

play02:04

display web content within a native view

play02:07

we can say that the web view for an

play02:09

application mobile is a blackbox so the

play02:12

app doesn't know anything about what

play02:14

happened inside the web view we only

play02:16

know that in that specific component

play02:18

there is a web view in this snap off

play02:21

code we can see how we are using a web

play02:24

view in uh in a generic class using two

play02:27

properties that the web view offers the

play02:30

user agent and the source but we can see

play02:32

that we have other properties for

play02:35

example the loan load to do some actions

play02:38

during the web loads they own message

play02:40

and inject the JavaScript that useful to

play02:42

inject some JavaScript into the website

play02:44

why do some many companies relies on web

play02:47

views the first reason is because they

play02:51

already have taken the necessary step to

play02:54

establish their online presences in

play02:56

other words they already have a website

play02:58

so that they think that it's not

play03:00

necessary to spend other money or invest

play03:03

other time to develop a new application

play03:06

mobile the only thing that is needed is

play03:09

to joke with the website and do it

play03:11

resizable so that they can uh put it in

play03:14

a web VI and uh after that they think

play03:17

that the game is done so they have a web

play03:19

app another reason another uh yeah

play03:22

reason why company rely on the web VI is

play03:25

because uh whenever they edited the web

play03:28

they immediately

play03:30

have also the application updated the

play03:33

only things needed is that the user

play03:35

refresh the web app and so that they

play03:37

don't have any dependencies with some

play03:39

deploy or the fact that the user must

play03:42

update the the app obviously it it is

play03:45

not enough because we know that the web

play03:48

you have a lot of different cons the

play03:50

first cons is related the session

play03:53

because it's not easy to maintain a

play03:55

stable session specifically with some uh

play03:58

application the mobile that are not

play04:00

totally web VI because we know that the

play04:02

store doesn't accept the app that are

play04:04

totally web view but the difficult is to

play04:08

maintain the session with some uh pages

play04:11

in web and the the native one another uh

play04:15

important cons to highlight is that the

play04:17

web view have performance limitation and

play04:21

a slower page loading if you have in

play04:23

your hands two different apps and you uh

play04:26

try uh with the one developing in the

play04:30

web View and the one in the rective you

play04:31

immediately see which one is the web VI

play04:33

because you can see the different

play04:35

related the performance another

play04:37

important things that is to highlight on

play04:40

the cons slide is about the continuous

play04:44

information flow challenging as we said

play04:46

the web VI is a blackbox for the app so

play04:49

uh the app doesn't know when the user

play04:51

tap on a specific component or do some

play04:53

more action to do it we need that the

play04:57

web send a message to the application to

play05:01

say that the user did something in this

play05:04

side of code there are three different

play05:07

method that the web app uh the web you

play05:11

can talk with the application mobile the

play05:14

post message the cookies and the user

play05:16

agent what is the post message the post

play05:19

message is a function that permit to

play05:22

communicate the website with the

play05:24

application mobile is a function is a

play05:26

JavaScript function that accept three

play05:28

different properties the message that is

play05:31

the data to be sent to the other window

play05:35

the target origin specifies and the

play05:37

transfer that is a sequence of

play05:39

transferable object that are transferred

play05:41

obviously with the message the post

play05:43

message could be intercepted by the web

play05:45

View using the on message uh properties

play05:49

in this code we can see how we are using

play05:51

the function the on message props we are

play05:54

adding a switch case because the case of

play05:58

this function as already defined with

play06:01

the web View and so that we can do some

play06:03

actions based on this uh post message

play06:07

there is the possibility also to send a

play06:10

post message from a react native

play06:11

application to the web view we can do it

play06:14

using the injected JavaScript properties

play06:17

as we can see here we are injecting a

play06:19

web view ref so the references of the

play06:21

web View and then we can send a post

play06:23

message to to talk with the with the web

play06:27

the other method that is H available and

play06:30

is possible to use to talk with the web

play06:33

is the cookie cookies are also useful to

play06:37

H have a cookie based

play06:39

authentication we can uh use it to keep

play06:42

the user always logged in in the web VI

play06:45

and in the react native uh

play06:47

Pages how it works basically at the

play06:50

first API the server send to the app a

play06:54

cookie session ID after that we can

play06:56

reuse it and resend in the all other

play07:00

API so that the server can get this

play07:03

cookie and can maintain the user logged

play07:06

in is also possible to use another

play07:09

cookie the anonymous cookie to keep some

play07:12

information for example the cart if we

play07:14

are in a e-commerce

play07:17

app uh using this the anonymous cookie

play07:20

react native offer a package called um

play07:24

cookie manager that can help us to

play07:26

manage the

play07:28

cookies we need to keep in mind that

play07:32

every time the user logged out so decide

play07:35

to log out to our app we need to clean

play07:38

all the cookies and we can do it with

play07:40

the function cleaned all then we have

play07:43

the user agent a user agent is basically

play07:45

a string that describe the browser that

play07:48

is making the

play07:50

request uh this is more useful for the

play07:53

server because they can split a logic

play07:56

based on this user agent for example if

play07:59

you have a previous app that was

play08:01

developed only by web View and the new

play08:03

one with some API that need that return

play08:07

aison they can split these returns using

play08:12

the the user agent how we can identify

play08:15

the most important section we can use

play08:18

different tool for example Firebase

play08:21

analytics or as we can see in this case

play08:23

we are integrating the um the the SDK of

play08:28

dinr that is tool that can permit us to

play08:31

read the action and know more about the

play08:34

user actions and reading this data we

play08:37

can see which are which is the the most

play08:40

used pages and start porting this page

play08:45

into re

play08:46

native then we have the uix and UI

play08:50

implementation this phase is also very

play08:52

important because we need to maintain

play08:55

the same UI but another important things

play08:58

to remember to add is related

play09:02

engagement with the push notification we

play09:04

can use uh it to our advantage because

play09:08

we making sure that they lead to the new

play09:10

section app then we have the remote

play09:13

config remote config are uh useful for

play09:17

many reason for example in this

play09:19

migration step we can use it to have a

play09:22

parachutes in case something goes wrong

play09:25

so for example if we go live with a new

play09:28

app and uh we can see that it have a lot

play09:32

of bugs we can simply turn off the flag

play09:35

done by uh remote config and so that the

play09:39

user after the refresh can see the old

play09:41

and the previous component also we can

play09:44

use the remote config uh to um hide some

play09:49

new feature that we want to uh turn on

play09:53

after a few days and uh it can be

play09:55

possible because we can create a

play09:58

realtime list

play09:59

that open the HTTP connection to a

play10:02

remote config back end and we need to

play10:05

fetch it when the app start or when the

play10:08

app change the status for example from

play10:10

inactive to active I want to also uh

play10:14

talk about a real case of a project that

play10:19

uh we are working

play10:21

on and uh basically the goal of this

play10:25

first phase is to bring some section

play10:28

into react native keeping the less

play10:30

Priority One still in web view we must

play10:34

maintain session management and cross

play10:36

flow going to Define behaviors that can

play10:39

Works in both sections when we start

play10:42

with this project the app was

play10:45

underperforming with a lot of problem

play10:48

with the session some poorly and not

play10:51

optimiz logic and some unexpected

play10:54

crashes the structor of the app was

play10:57

basically um

play10:59

the homepage that was the only one pages

play11:03

in page in re native then we have the

play11:05

PLP that the is the page candidate to be

play11:09

migrate the PDP and the checkout one the

play11:13

first things that uh we decided and we

play11:17

developed was about the pi management

play11:21

what we choose is axio because it can

play11:24

help us with some interceptors and the

play11:28

promise that are as synchronous call so

play11:31

the promise is that we promise that that

play11:33

specific API will be resolved with a do

play11:35

then or dot catch uh branch and the

play11:40

interceptors we have two different

play11:42

interceptors the request and the

play11:44

response one the request is important to

play11:47

modify request before they are sent in

play11:50

this case we are using the request

play11:53

interceptors to add some cookies and

play11:56

heater authorization before the request

play11:58

uh are sent and then we have the the

play12:01

response Interceptor to hand of response

play12:04

just after they are received so that we

play12:07

can manage the data before that arrives

play12:10

in the application mobile as I said we

play12:12

are using the Interceptor uh to add some

play12:15

cookies inside uh thei and it helps us

play12:21

to manage a challenge that we have and

play12:24

an issue that we had and it was related

play12:27

the session in fact

play12:29

every time the user kill the app or put

play12:33

the app in the background for a few

play12:35

hours after that the app return in the

play12:39

foreground the user see that it was

play12:41

logged out or it lose some items that

play12:44

added in the cart or all the information

play12:47

that is selected uh disappear for do uh

play12:52

to fix this uh Behavior we decide as I

play12:55

already said to use the cookie session

play12:58

with the cookie session uh we received

play13:02

the session ID as I said before and we

play13:05

are resend it in every call that we did

play13:08

that we do for um to to make that the

play13:12

server can uh recognize the user and

play13:15

make it logged in the final result so is

play13:18

that the user now have a stable session

play13:22

and so that he can navigate without any

play13:24

issue another important tips that uh we

play13:27

added uh in our app is the session cross

play13:31

app

play13:34

web behavior in this case in the react

play13:38

native page uh there are some button

play13:41

that redirect the user outside the app

play13:44

for example in the web of the same

play13:47

family of the the application and the

play13:50

the request was that the user was also

play13:53

my be logged in we did it uh firing and

play13:57

calling an API that after some server

play14:01

check return the a token and if the

play14:06

check is okay if the token is valid we

play14:09

are concatenating it in the url url that

play14:13

we wanted to open and after

play14:15

that uh the user can navigate in the

play14:19

browser and they stay logged in the page

play14:22

that uh we uh migrated was the

play14:27

PLP uh how the PLP

play14:31

Works H immediately when the user tap on

play14:35

the PLP page uh a web view appears in

play14:39

this web view the you the the user must

play14:41

be selected the store is not redu store

play14:44

but the phical store to get all the

play14:47

items that he want to see so that after

play14:51

the the store selection ends the web you

play14:55

send a post message to the app that can

play14:58

intercept and after that we receive the

play15:01

right post message we are calling an API

play15:04

that return the store selecting and

play15:06

after that we are going to save it in

play15:08

Redux so that we can use every time and

play15:11

uh everywhere we want in the in the

play15:13

other native page the PLP also uh give

play15:17

the possibility to the user to filter

play15:19

and sorting the data in this case we uh

play15:22

can see how we developed the fetch

play15:25

product API we can see that we are using

play15:29

the function generator because we are

play15:31

using Redux Saga middleware to keep the

play15:34

data uh saved in the store what is the

play15:37

function generator the function

play15:40

generator are a function that can be

play15:42

paced and resumed which uh which enable

play15:46

a variety of

play15:47

application it play three different

play15:50

rules the iterator The Observer and the

play15:53

Cure routines the C routines because

play15:56

generator are posable as I said and can

play15:58

be both data producer and data consumer

play16:01

the Redux Saga middleware offer also

play16:05

three different keyword the E keyword

play16:09

that permit to pay P pose the generator

play16:12

function execution and the value of the

play16:15

expression follow

play16:17

following and then we have the put

play16:19

keyword that invoke the on success

play16:22

method so invoke the action that could

play16:24

be the on success or on failure in case

play16:27

there is something wrong there is an

play16:29

important difference between the E and

play16:32

the eeld generator the Y as I said is

play16:36

let me say an a syn weight function the

play16:39

E generator instead is used to delegate

play16:42

another iterable object such as a

play16:45

generator if something goes

play16:47

wrong um we are also managing the error

play16:51

handling and in that case uh we are

play16:54

fetching the on failure action so that

play16:57

we can save the m message that arrived

play17:00

from the pi and we can render the error

play17:03

message to the web view or to the native

play17:06

app uh another tip that uh we added in

play17:10

the PLP page is based uh on a scrollable

play17:15

uh flat list let me say the user for

play17:18

example scroll the flat list for example

play17:21

is in the page three and he decided to

play17:24

filter or sorting the items but the

play17:27

request was that the user is redir to

play17:29

the top of the of the flatlist otherwise

play17:33

maybe he lose some product that he he

play17:36

never seen to do it we used react

play17:40

animated uh library and uh in details

play17:45

thanks to use animated ref that is a UK

play17:48

that provides us to have this type of

play17:52

behavior and so that when the user now

play17:55

filter a section it was in not page one

play17:58

is red to to the top of the screen um

play18:01

without any any kind of

play18:03

issue how we are using it is in this

play18:06

naap of code so we can see that we have

play18:09

a reference a reference of the flat list

play18:11

and we are using the scroll to offset

play18:13

with offset a zero and animating that is

play18:16

true now that uh we have the PLP

play18:20

migrated there are other steps to

play18:23

follow the first one is the remote

play18:26

config that we already talked the crowd

play18:29

testing to test it uh before they go

play18:34

live so that can help us to identify

play18:37

some unexpected uh Behavior unexpected

play18:40

problem then we have the phase R out

play18:43

it's useful because when we migrate so

play18:46

when we do an important changes in our

play18:48

app we cannot go live with as let me say

play18:52

as a big bang with the phe roll out we

play18:54

can go live and so uh increasing the

play18:57

percentage of the of the user that can

play18:59

see the new updated app day by day after

play19:03

that we can check the progress so that

play19:05

we can see if all is going as expected

play19:08

or maybe there are some problem that uh

play19:11

doesn't work as

play19:13

expected checking this uh this data uh

play19:18

we can see that the pii now responds

play19:21

faster we have uh a better rendering and

play19:24

a flow navigation

play19:26

improved we can see that we we have only

play19:29

API that um have a response time more

play19:32

than uh 2 seconds this is because we

play19:35

also integrated a

play19:37

preach um logic basically when the user

play19:42

land in the PLP page before that he

play19:46

select the store we immediately fire the

play19:48

API to get the nearest store the nearest

play19:51

item of the

play19:53

store and if the store select is the

play19:57

same that you choose

play19:59

we we can immediately have the result

play20:02

otherwise obviously we need to refetch

play20:04

the the pii to get the updated items The

play20:08

Next Step are to continue bringing more

play20:12

pages to react native and improve the

play20:14

user to experience so that we are in

play20:18

plan to uh migrate other page the first

play20:21

one that we want to migrate is um the

play20:25

card page and so that we will

play20:29

uh follow the same step that we did for

play20:31

the for the

play20:34

PLP hope that can helps you so thank you

play20:37

so much and if you have any questions

play20:40

you can

play20:42

uh reach me here

Rate This

5.0 / 5 (0 votes)

Связанные теги
React NativeWebViewMobile AppSession ManagementUser ExperiencePerformance OptimizationCross-PlatformDevelopment MigrationRedux SagaAPI Integration
Вам нужно краткое изложение на английском?