We have integrated Jitsi Meet into our Android mobile applicaiton.
We are observing a behavior where for the first time when we place a call it take around 7 to 9 seconds to load the call and it remains in blank screen
further calls are loading fine
whenever we kill the app and load again it takes 7 to 9 seconds to load the app.
Is there any place to make changes to improve this, its very annoying.
What SDK version are you using?
we are using 2.0.0
That is incredibly old, from early 2019. Please update and re-test.
Sorry, my bad
we are using the version 2.0.7287 released on May 09 2022
Any performance related changes in further releases ? Should we give it a try ?
In that case no, we have not made any performance improvements in this regard.
I am little confused here,
The version I mentioned here 2.0.7287 is the Jitsi meet Gihub repo I am referring to
does it build the same Android mobile app too ?
where exactly could I look for the performance issue that is taking 8 seconds to load initially ?
Web releases has nothing to do with mobile releases. You can search in the branches for mobileXXXX.
You can check the console logs by searching for TIME log, which is available for the web client at least and you can see which part takes most of the time.
It’s likely loading of the JS bundle, which is several MB and needs to be done on the first start. The Hermes JS engine is supposed to make that better, but we got bad results last we tried, so we backed it out.
Is there any other way to improve the performance like making changes in webpack
we are ready to make the necessary code changes in Jitsi Meet repo to improve the performance but not sure where to start from ?
Any poc was done to take a look at ?
React Native does not use webpack, it uses Metro.
I don’t have any leads on how to shorten that period of time, sorry.
Honestly I think the approach should be to initialize RN in the background together with the app, that is, before joining the conference, and use some UI to communicate the loading process to the host app instead of showing a blank screen.
Seems like a complicated approach
You mean to initialize RN app (the one in android folder) together with the app (do yo mean host app where SDK is consumed ?)
Did anyone do a POC kind of this approach
Can you guide me to some examples ? or at high level on how to get started
No, I don’t mean to initialize the app. Since our native Android SDK is built using React Native, it needs to initialize RN itself before being able to render any views written in JS.
We currently manage the lifetime of the RN bridge in ReactInstanceManagerHolder.java. My suggestion is to try and expose a couple of methods (we have them for iOS) that would allow SDK users to initialize the bridge ahead of time.
You could do this early in your app lifetime, and this would mean that by the time you want to join a meeting you won’t have that wait time.