And also give you more performance out of the box. So we'll quickly look at some of the metrics but you will also get the metrics first hand during this workshop. I have been using a Motorola Moto G10 device which is quite low-end and so keep that in mind when seeing the numbers.
First let's look at FlatList UI in JSFPS using Twitter sample. Very similar to what we will see in the workshop. And as you can see, the JSFPS drops multiple times to zero and UIFPS drops to sub-10 as well. So what we get in the end is average JSFPS of 11.8, average UI 44 and JS threadlock is almost two seconds which means that for almost two seconds user has not been able to interact with screen at all because when the JS is in the threadlock that's not possible.
If we look at FlatList UI in JSFPS with the same sample by just changing the name, we can see that the JSFPS never drops that low, never drops even close to being zero, and UIFPS stays around 64 most of the time. So we get an average JSFPS of 49 and average UIFPS of 58, which is about four times improvement just by changing the name.
We have also been looking at blank spaces using a Flipper plugin that we've built just for this project. And as you can see with FlatList, we get huge blank cells spanning the whole screen which are the real large parts at the top, and the average is around 280 pixels. With FlatList, we get a different story. We do get some blank cells, but they are quite limited and only appear for a limited period of time, and so the average in the end is around 45, or so, which is seven times better than with FlatList.
So, is FlashList production ready? Let me get back to the initial example of Shop App. On the left, you have FlatList, which was for multiple seconds not responsive at all, and it had those huge blank screens that were spamming the whole screen. And on the right, we do have some small blank cells, but only for a limited period of time, and more importantly, the app is extremely snappy, even on such a low-end Android device such as Moto G10. We are also using it in all of our apps in Shopify Mobile Shop, POS, and Inbox. And we've also seen a lot of excitement in the community, and the list is also being used extremely now in production as well. So you can check out the project on GitHub, but you will also do that during this workshop. And that's it for me. And I'll pass it over to Telha, who will get more into the coding part of the workshop. Thank you.
Thank you, Merik, for the amazing introduction to Flashlist. I'll take over from here. Let me start presenting my screen. All right. Second. Okay. So, before we begin, I'll quickly introduce everyone to— All right, even before I start, right, can I get some thumbs up in the chat if everybody can hear me okay? And if you're here, just to let me know. Awesome. Awesome, I get to see some responses. All right. All right. Okay. So, I'm sharing one document in the chat right now. Make sure that you use this link and open this document. So, this is what you're going to see. It's right here on my screen. So, this is basically all the setup steps that we have for you. I'm going to walk through each of those. I just want to give you a quick overview of what you can do in case you run into problems. So, first of all, there's a link for questions. Make sure that you use this link to ask us questions and not the chat. We are going to try and go through most of them towards the end of this workshop. There's a link to a performance tracking sheet, which I'm going to talk about very soon. You have a link to the slides that I'm going to present. Most importantly, there is this section called skip ahead. So, at any point, let's say, if you have not been able to complete a particular task, you can skip to any task that you want. Let's say, if you jump to task four, task one, two, three will already be done in that snack for you already. So, no need to worry if you are not able to keep up, you can skip ahead, and you can do it at your own, in your own time later on.
Comments