Adrien
Bonjour. Hi, everyone. We're glad to be here again at Flutter Connection. Welcome to our talk, A New Journey to Continuous Delivery with Flutter. Oh, you want the clicker maybe, François? So today I'm with my fellow staff engineer, François, and I'm Adrien. We're from SNCF Connect and Tech, and we are both Flutter enthusiasts. And just in case if you don't know our application, you can read more on the showcase we are very proud to now have on the Flutter website, thanks to the Flutter team. Today, various topics about CD, from building to testing, how to work with tours, some innovative way to ship with shorebird, and finally, filter flags. We also use heavily GitHub because we have some packages that you can build. There is a lot of action that are available for a classical flow to deliver your apps like the linting building for Ubuntu, macOS, etc. So you can give a try to GitHub and SNCF we are more on GitLab. Our main application is on GitLab and you've just seen the plugins we've open sourced on GitHub. Yes, you should for auto format and check that you have formatted your code in your CI, you can make static analysis and you should leverage tools like husky and control in CI that everything complies with your rules. Also in your journey to build an app you will probably use different kind of code generation for http client for example. Don't forget to check that code gen has been run to avoid possible runtime exceptions in production. Also, we've discussed in previous talks the importance of the size of your app at Flutter Heroes. You should also be sure to configure well caches in your CI for Gradle, also for Pub. Use the offline modes, don't forget to use the no pub flags in your CIs to optimize the speed. Also you should optimize your assets, you can remove eventually useless ABI's on Android when you don't need it for your customers. And you can also hunt if you need with special dart commands. Tasks are taking too much time in your builds. We also run hundreds of end-to-end tests. There are different tools for that. We use Appium with Flutter, it's working really great. You should also take a look at tools like Patrol, who now has hot reloading, and native interactions. And everyday new tools are coming with AI to help you testing your application. Also, you should measure your code quality, like we explained with the Dora metrics, there is a link to this, you should measure also, and check the vulnerabilities of your app, so you have check marks for that, you have tools like SonarCube for Dart, and tools more dedicated to Flutter like DCM, I think Majid mentioned it just before. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each patch installation. Yes, after three years of adding new features, our CI still works. We are at 22, 21 minutes of build time. Thanks Abdelaziz for working on our CI. And we went from 3K to 10K tests. They are splitted in five jobs and running approximately in 15 minutes. Yes, now we have a lot of interesting features in the review process. For example, you will have information about accessibility, if you miss something on Android, if you miss a label on a button, about performances, etc. And for example, this week the PlayStorm warned us about an edge-to-edge configuration that we missed for Android 15, which is enabled since Flutter 3.7. So they are giving you a lot of information for all device accessibility performance. Also, you have to think about your rollout strategy. You can fully customize it in Android. You can choose the deploy percentage you want. You have to find the good balance between the user volume you have on your application. So you can analyze crashes on your app. Just think to not rollout 100% or you won't be able to stop the release propagation. And on IOT there is a similar rollout strategy and a week basis. Other things you should think about is if you need to force an upgrade, always try to keep access to vitals features for your customers. In our case, we always give access to train tickets even if we need to force an upgrade. Yes, for example on the Android store if you leverage the power of the alpha channels or the internal channels, you can bypass some validation so you can have feedback quicker. And there is similar mechanism on the iOS side with TestFlight. Well, it's a different way to push patches to production for your application without going through a store update. React Native is a framework that has developed a lot this concept with Microsoft and Nowflutter has also this feature with Shorebird. To be compliant with the store about the permission to change interpreted code in production, Flutter needed to be forked, given short-bred, with an additional Dart compiler, an interpreter and a custom engine to load patches. You ask the Shorebird server if there is a patch. If yes, it downloads it. And at the next boot, you will boot on the patched version of your app. If there is a fail to boot on this patch, it will roll back and boot on the original version. Maybe we could add that if you already use other update mechanism, you should think about how you mix them. If your user already has a latest showbiz patch, he may not need to have the pop-up to update his application. Well, it depends. The answer is always "it depends". But you can push patches instantly in production. What you need to think about is the complexity overhead for your ops teams. Also, it's a fork of flutter. You have to mix with other update mechanisms. And you have to think also about the fact that you will pay at the patch installation. So if you have a lot of devices of customers, you will pay for each