00:00:16 Matt Welcome everyone to the.net Maui podcast. We're here to keep you up to date with the latest and greatest in.net client development. We'll talk about some Azure, some Visual Studio, some blazer and of course, net Maui. 00:00:29 Matt I'm Matt Sokka, and today we have a special episode. This is a customer update episode. I'm going to be talking about the M3. 00:00:37 Matt 65 admin. 00:00:38 Matt App now this is a really cool. 00:00:39 Matt App is that. 00:00:40 Matt It lets you admin your M365 tenants and on the go scenarios like you can go and change the passwords for your users when you're out and about. So quick tasks that keeps you up to date. 00:00:49 Matt So Swaggy this app came from Xamarin, it was just updated over into net Maui. So tell us a little. 00:00:56 Matt Bit more about that. 00:00:58 Sweeky Uh, Yep, for sure for sure. Umm, this was a super exciting project to be a part of. Our team was extremely lucky that we got to work with the M365 Admin app team again and we essentially help them in the journey from moving over from Xamarin to dot at Maui and let me actually bring in the awesome team and then we can talk a little bit more. 00:01:19 Sweeky About how the process is like learnings and how the app is so let me pull in Shivan and Sanjana from the M-65 Admin app team. 00:01:29 Matt Right. So yeah, before we get started. Yeah, let's let's introduce everybody. My bad for not doing that right away. Sweetie, introduce yourself, and then we'll have Anshuman do it. And then Sedona so squeaky. Who are you? Everybody knows who you are. So we gave out one last time, just in case we have brand new people tuning in. 00:01:46 Sweeky Sure. Hi everyone. I'm swiggy. I work in the dev customer engagement team and our job is to help awesome customers who are trying to do awesomethingswith.net and their apps and help them be extremely success. 00:02:00 Sweeky Doing that and Yep, like I said, this this episode, we're talking to one of our awesome customers, the. 00:02:07 Sweeky M360. 00:02:08 Sweeky Five admin app team and I will throw this over to Anshuman now so he can introduce himself. And then. 00:02:13 Sweeky We can go over to Sanjana. 00:02:18 Amsuman Hi, I'm anshuman. And I'm part of admin IDC team and this was my first project working on migrating them 3365 admin mobile app from Xamarin to dot net movie. 00:02:31 Matt Great. And so Joanna. 00:02:33 Sanjana Yeah. Hi. I'm Sanjana from the M365 admin mobile app. So I was part of this exciting project of migrating the Xamarin forms app to net Maui and I have been working in this team for. 00:02:50 Sanjana The past two years. 00:02:52 Matt All right. So I guess the biggest and the most. 00:02:57 Matt The question is this app was a Xamarin app beforehand and I'm sure man I'm going to ask you this, why did you choose to start migrating the net? Molly, what was the impetus, the reasoning why you decided to say, hey, I had a perfectly good app, but why did I want to bring? 00:03:12 Matt This to dot net Molly. 00:03:14 Amsuman Yeah, sure. So initially we were before we migrated to dot net movie we were using Xamarin forms 4.6. 00:03:23 Amsuman But by the time we moved to Maui, there were later versions of Samarian, but we could not update to that you to some partner dependencies from Intune which was not supported was Xamarin 5.0, but we could still live with 4.6 for our requirements. But then Google came up with a mandate saying. 00:03:43 Amsuman We need to target API 31 level devices starting from November 2023. 00:03:50 Amsuman So one issue we faced with that was the Intune package we were using it. 00:03:57 Amsuman It had the latest support for API 29 level itself and the main reason was the while targeting the API 31 there was 1 issue, one native issue where we had to add few attributes something like export equal. 00:04:14 Amsuman True, but that was not being added for the Intune package because of it implicitly creating the attributes in the manifest itself. So first initially before considering migrating to Mobi, we worked with Intune App Intune team to. 00:04:34 Amsuman Fix this issue in Xamarin 4.6 itself but unfortunately they we could along with the help of that team also we were unable to fix that issue. 00:04:46 Amsuman So we they were focusing all their support for the new packages for.net, Maui. So we had to switch. We were we had two options, one was moving to native apps, one for Android and iOS as well and the other was switching from Xamarin to Mobi. So considering all the dependencies and talking with the partners about their. 00:05:05 Amsuman Priority support for MAHI we considered Mavi might be the best way going. 00:05:10 Amsuman Ahead, given we were already on Xamarin and we will receive latest package from all the partners. 00:05:17 Matt Well, that makes perfect sense. 00:05:18 Matt And you know, eventually you might have to do it and that that I like. I like the idea that Google made you do it. That's that's the first time I actually heard heard that reason next week. How about you? Does that, you mean you're doing the customers all the time? Has Google ever made anybody? 00:05:32 Matt Else's upgrade. 00:05:35 Sweeky Google, we're hearing a lot more of Apple is making them do it because if they don't upgrade next year onwards, they're gonna have issues publishing to the. 00:05:43 Sweeky App Store, so yeah, it's been a mix of Google made me. 00:05:46 Sweeky Do it Apple made me. 00:05:47 Sweeky Do it. Yep. 00:05:49 Matt Why not was just so like do you even remember the Xamarin numbering like we were talking amount was talking 4.6. I'm like oh, what was 4.6 everythingsbeen.net Molly lately? I I can't even. 00:05:59 Matt Remember back you? 00:06:01 Matt Know what what the Xamarin versioning was? 00:06:01 Sweeky Well, it does if. 00:06:03 Sweeky Yeah, yeah. No 5.0 with a couple of service releases is like the latest, I think German forms you can get right now. So if you are looking to migrate, not a bad idea to try and upgrade to five point. If you can just make sure everything is newest and then should make a migration to Maui easy. 00:06:20 Sweeky But like, like we're gonna talk about now, even if you are unfortunately stuck on some older version, it's not that bad to migrate. So yeah, so. 00:06:28 Matt So I'm sure what were some of the biggest benefits other than being able to work again with the latest versions of the Intune packaging that Google APIs needed. What were some of the biggest benefits though, that you've seen after the migration up to dot net? 00:06:41 Amsuman Maui. Yeah. So one major benefit was we had support for the latest packages. All the nugget packages. 00:06:48 Amsuman So which we were unable to upgrade before when we were in Xamarin. So that was one major benefit. 00:06:56 Amsuman And considering migrating from Xamarin to more with the migration process having compatibility frameworks from Maui for XAML, whoever is migrating for Xamarin, that was one of the major benefit for the migration process I would say now not on the end product. 00:07:13 Amsuman So and there were very specific new libraries that were introduced in Maui that were not there in Xamarin that we made use of that made our work easy. So one such thing was the Maui semantics. Umm. 00:07:28 Amsuman Which was built on top of the Xamarin Ali features. So initially there were no screen readers or specific focus for elements that we were implementing using some custom methods accessing the native controls underlying the Xamarin controls. But the Maui semantic libraries made it much easier for us. 00:07:49 Amsuman Removing all the custom code we were using before and it also enhanced the performance. 00:07:55 Amsuman And coming we also coming to the UI rendering, so the Maui UI rendering was using much lower resources, much lower GPU consumption compared to the Xamarin app. So we had better API performance. We also had new cross-platform libraries. 00:08:15 Amsuman Which initially we had to implement accessing the native controls and Xamarin on Android separately. But now we have few. 00:08:22 Amsuman Additional libraries which which can work cross-platform and we can include a ton in our shared code. 00:08:29 Sanjana Adding on to what Anjuman has mentioned, I think hot reload was another feature which was which was blocked on Xamarin by the Intune package Intune Library. 00:08:41 Sanjana I think that is now working well. 00:08:45 Sweeky Yeah. Yeah. I was about to say that these folks, because of like the needing to be on that particular version of Xamarin farms having to use a particular version of Intune. They were stuck in using. They were not able to get the latest and greatest and the best out of our VS tooling which coming to Maui has lit up. 00:09:06 Sweeky All of our awesome features for them, so it's super exciting to see them being able to finally use all our you know, really great tooling. You know features like hot reload. 00:09:16 Matt And so, sweetie, I want to hear your your. 00:09:20 Matt From perspective on this one, when not just on the the admin app, but overall what are some of the biggest risks that you see our customers taking on when they do do a upgrade? Well, I want to hear for the M365 one, but overall to what are some of the biggest risks or the? 00:09:36 Matt Blockers that people might encounter. 00:09:39 Sweeky Yeah. Let me give a general overview and then maybe we can have MT65 team share some specifics. But I think the biggest risks people are looking at is the time it will like the time investment in doing the actual migration. 00:09:54 Sweeky And the whole just health check on the ecosystem was another big one on on like Ohh will every all of these packages all these features I'm using? Are they all going to just you know work as is or will there be support for that in net Maui I think in recent days it's. 00:10:14 Sweeky Than a much easier decision to make. The number of risks, risks and blockers are reduced in the sense that. 00:10:22 Sweeky When it comes to the time it takes our we've been putting a lot of effort into our upgrade tooling. There's now a VS Visual Studio, windows integration of the upgrade assistant tool, so now you can use it on the CLI on Mac, on Windows, and you can use it from inside of Visual Studio itself. So there's a lot of investment. 00:10:41 Sweeky Going into reducing the time it should take you to upgrade your app and when it comes to like the third party dependencies like I think every day I'm hearing about. 00:10:50 Sweeky New package that's being, you know, they're adding dot and Maui support for. Just yesterday I heard about Localytics nowhasa.net Maui package. So yeah. So it's pretty exciting to see the ecosystem catching up. So I think those are still being considered like bigger risks. But I think the risk value on that. 00:11:10 Sweeky Is reducing the MC65 team, do you guys want to share a little bit about, you know how you guys went about? 00:11:16 Sweeky This vetting, you know, checking the dependencies, anything that you thought was particularly risky? Hint, hint if you want to talk about the Intune migration aspect. 00:11:27 Sweeky Of the app. 00:11:27 Sanjana Yeah, sure. Sweetly. So I think one major risk point was the Intune package integration. So the reason we moved from Xamarin to dot net Maui was. 00:11:28 Would be awesome. 00:11:40 Sanjana In in June, had no longer was no longer supporting any updates to Xamarin, so it had declared end of life for Xamarin and we had no other options but to move away from Xamarin forms. So I think that was one major reason that we had to support our Intune customers and. 00:12:00 Sanjana Yeah. So I think Intune package readiness was one major risk that you know we were. 00:12:11 Sanjana Which would have blocked us. So I think integrating Intune right is a big challenge. We we got the beta version sometime around May. We tried integrating. We face a lot of issues, challenges with the MAM enrollment and you know in tune. 00:12:30 Sanjana Along with Msal, integrating with M cell so that was another. 00:12:34 Sanjana The challenge that we had with the Indian packet, so yeah, but we managed to with with the help of the Intune team, we managed the sale through and we were able to integrate it successfully and with with all the test cases passing with you know. 00:12:54 Sweeky Yeah, yeah. I mean, a huge shout out to the Intune team. 00:12:58 Sweeky I, like you said, they've been like their support with the M-65 admin app has been awesome like they were there to like talk about any issues like like you know Sanji just mentioned they gave them the early beaters to try and test and give them feedback. Yeah. So it's been like a super great. 00:13:17 Sweeky You know. 00:13:18 Sweeky Of core collaboration effort here, just to make sure that you know the Intune packages are working and the MC5 app was like a good test case to make sure that yeah it's it's doing what it's supposed to do. That's super great. Shuman was there any any risky or any any blockers that you were worried about during the migration process? 00:13:40 Amsuman Yes, OK. So I can add to what Sandina said about the Intune package. So while we were migrating, we were looking at all the dependencies, all the nugget packages we were using and during our time of migration. 00:13:53 Amsuman We were able to find.net sixand.net seven support for most of the external packages that we were using. The open source packages. So few of the internal Microsoft packages we were using, major ones were msal libraries, App Center packages and the Intune ones. So fortunately we already had support from. 00:14:14 Amsuman Sal and App Center, so as Sanjana mentioned in Q. 00:14:19 Amsuman Let's also work closely with us. Thanks for their help. We were able to get out the beta. 00:14:23 Sweeky That's awesome. That's awesome. Just talking about migrating that authentication flow and like the Intune integration was it complicated? Was it like confusing or did the documentation like they shared with you, did that just work? How was? 00:14:37 Amsuman That experience, nothing complicated, came up with the Msal library, so they almost maintained the similar. 00:14:45 Amsuman The third similar flow, they try to maintain the exact behavior from Xamarin to dot net movie. Whatever package provided for that. So we didn't have any issues migrating the outflow. 00:14:57 Sanjana Yeah, with Intune we did face a few challenges with the MAM enrollment library, the method and. 00:15:05 Sanjana A couple of other issues where we were unable to actually log in into the app with Intune and Company portal, so I think we we managed to fix those. 00:15:15 Sanjana And yeah, and all the other issues with the help of the Indian team. So I think, yeah, those were those were the major blockers and challenges that we had while integrating the. 00:15:26 Sweeky Awesome. That's awesome. That's really great to hear. 00:15:30 Sweeky I guess I just want to talking about just like you know migration process, so here we are, you guys have decided we're gonna take the jump. We're gonna do it. We are migrating what? Before you guys looked at like doing the migration manually, how was your experience using upgrade assistant? 00:15:49 Amsuman Yes. OK. So initially from for the first very first step, we started with the upgrade assistant itself. 00:15:56 Amsuman So it suggested upgrading to Xamarin 5.0 before migrating to dot net mode, but I tried both the flows directly updating from 4.6 and updating from to five and then tomorrow, but there were no differences. I noticed in between that. So I think we are good to use the. 00:16:16 Amsuman Resistant even with the four point X versions. 00:16:18 Sweeky We have good to know, good to know, yeah. 00:16:21 Amsuman So apart from that, the major use the major benefits we had using the upgrade assistant to us, it made all the project file changes that we needed to runthe.net mall. 00:16:34 Amsuman Yeah. So it renamed all the major namespaces from Xamarin to Maui and it it did a status check on all the dependencies we were using whether the latest and it upgraded them to the latest versions. If we if that was supported for net seven and it also gave a list of all the dependencies. 00:16:56 Amsuman That were not supported in net Moji and it automatically removed those namespaces or the references to those. 00:17:04 Amsuman Packages so though it missed a few like Xamarin Essentials was one which we faced issue like it was not replaced because afterwards going through update documentation we understood Xamarin Essentials was split into multiple Maui libraries so it just left it in place. 00:17:20 Sweeky Right, right. 00:17:24 Amsuman Not essentials. That was one thing and say our G pop UPS was there, it just removed that without any notice for the replace libraries. But that was really helpful. So instead of manually going through the entire code like we have a. 00:17:39 Amsuman Considerably how big cold like going to each and file each and every file, renaming the namespaces and everything would be much harder. So whatever the upgrade is extended, we could like whatever namespaces it removed. We could just build up after that we were notified of all the errors. 00:17:58 Amsuman You could find the replacement for whatever package it removed, either in open network or in the documentation. 00:18:06 Amsuman And we were able to like get the app to work, at least to build and run like very soon after using the upgrade assistant. 00:18:16 Matt Wow. So you would say the upgrade assistance did really? 00:18:20 Matt Most of the grunt work for you. Most of the the busy work for you of getting it up and running, and then it was just. 00:18:26 Matt A little. 00:18:27 Matt Tweaking here and there on the side to make it actually get. 00:18:30 Matt It going then. 00:18:32 Matt Yes. Yeah. So what about the documentation that we have? Was that useful for the for the upgrade, the upgrading process did that, that'll help out. 00:18:40 Amsuman At all. Well, so initially when we started the migration, the documentation was still evolving. So in mostly for the project changes, the file structuring and everything, the documentation was. 00:18:52 Amsuman Be useful and coming to the native libraries that were migrated from Xamarin namespace to movie. So upgrade document had good details about the replace packages and what we need to move for. But one thing I felt we missed an update documentation is the replacement for the deprecated. 00:19:12 Amsuman Other deprecated packages like RC, Pop. 00:19:15 Amsuman That were open source. 00:19:16 Amsuman Not provided by Maui. So those we had to find. Other than that the documentation was very useful for getting the app to build. 00:19:26 Amsuman And run. 00:19:26 Matt Well, good. That's good to know. And sweetie, that might have been the most polite answer in the world. The documentation was still evolving. 00:19:35 Sweeky I was about to say that the MC65 team actually was one of the first few folks who, like we were helping. 00:19:42 Sweeky And that is correct. It was part of when we were just getting started with putting the documentation together, putting the steps together. And I think they had this unique space of actually watching the documentation evolve. So I mean, I'm, I'm pretty sure Sanjay and Anshuman remember when the docs were just GitHub pages and like a GitHub. 00:20:04 Sweeky Stage, which then moved over to turning into an official like OK, now it's on the documentation side and then like on the doc side then it's add, we're adding more things to it. Yeah. Like a huge shout out to this team also. They helped like the feedback they gave us on the documentation, we were improving documentation based on like stuff we heard back from them. 00:20:26 Sweeky Also their app and we'll get to this in just a little bit. Custom renderers they mentioned how they were using quite a lot of them. So they also helped us like. 00:20:37 Sweeky Understand how to like, sort of. We're still. We're still working on that custom renderer, you know, documentation how to migrate those to handlers, but it was a good exercise to just hear like how they're going about it and the questions and the issues that they faced. Yeah, so definitely yes. They saw and evolutionary version of the documentation. 00:20:58 Sweeky And I'm still glad it was useful for. 00:20:59 Sweeky Them so yeah. 00:21:00 Matt I was. I was gonna make a joke that when they see the documentation evolved, they got a 40. 00:21:05 Matt More air if he's in with it. 00:21:08 Matt That's what they got. But but thank you, Saint John and Andrew, Amanda, for, for, for doing that and then you know that's how you get good documentation is that you have to go through and you do evolve with it when you have real mortal experiences to inform to inform it. So what other experience points have you? 00:21:26 Matt Tweaky that have you learned through this? This isn't your first. 00:21:29 Matt Show or not even the first podcast, this isn't your first upgrade experience with with customers. What other? 00:21:36 Sweeky Yeah. So, yeah, no, I'd love to ask Sanjana and Samantha. Let's start with Sanjana specifically, we started you guys started with the Android app. So just curious on how it was to get like your Android project up and running. Did you guys have? 00:21:55 Sweeky Any specific like issues, anything very like particular to Android that you guys had to fight with like Sanjana. Do you want to share anything any like weird Android API that you have? 00:22:05 Sweeky Figure out we can also complain about custom renderers if you want. 00:22:10 Sweeky But yeah, just curious to hear about that. 00:22:13 Sanjana Yeah, sure. So I think a lot of issues that we initially faced with the UX, the US rendering when we migrated from Xamarin to Maui was kind of very distorted. Most of the elements on. 00:22:26 Sanjana Our dashboard were blank. We were not able to see. Those are not rendering. So I think we started kind of not not on a very good note as things were all. 00:22:38 Sanjana Distorted and not well rendering. I think one major issue that we had was with frames. So we have elements which are within frames and those frames are within another frame. So I think that was one major point and that's all across the app that we use frames. 00:22:58 Sanjana You know predominantly. So I think frames support in Mavi was limited. So we had to figure out different you know compatible elements to to be replaced. 00:23:14 Sanjana As a replacement for frames, so I think we we started with trying out box view shapes, borders and finally you know with the the closest replacement for frames was border. So I think that was one major issue that we faced with the UX. The couple of other things. 00:23:34 Sanjana Where I which were blockers for our Android app was. 00:23:40 Sanjana With with the UM main page settings. So uh, when we were trying to switch user or add a new user, when you go back to the login page and we try to log in with the new user we were seeing crashes. So I think that was an issue which was there with the flyout toolbar which sneaky and Shane. 00:24:02 Sanjana Triaged and came up with a fix for that I think. 00:24:08 Sanjana So yeah, that was the fix. Now that we have is in.isin.net anowwith.net seven, we are still using the workarounds and the yeah, the the third issue major issue that we faced was with the navigation library. So the model. 00:24:27 Sanjana Stack a sync issue that we have, yeah. 00:24:29 Sweeky Ohh yeah. 00:24:31 Sanjana So that was one major blocker which with I mean without which we couldn't do a beta release. So we had to get it fixed and that was that was where again spiky really helped us with you know all the issues getting a fix for us in Maui. So right now that's again we have the fix in. 00:24:52 Sanjana Net8for.net seven, we are using the workaround for the timing issue. So yeah, these were the major blockers or issues. 00:25:02 Sanjana That we had seen. 00:25:04 Sweeky Yeah, yeah. Also anyone listening this has been fixed. Thank you for this team to reporting us all of these like, you know, issues. 00:25:13 Sweeky They have they. 00:25:13 Sweeky Turned out to be actual like issues in Maui and the Maui team. Super supportive, they absolutely love the MC5 app team so they were more than happy to help. 00:25:24 Sweeky Get these fixed. 00:25:25 Sweeky With them. So we've had other issues. Some of them were back ported into net 7, some of them are only coming up in net eight. So there's workarounds that you use and you can use for now. And then these fixes are coming in for net eight. So yeah, we've had a lot of bug fixes that which were reported by the admin app, which has been fixed in net, Maui. So which was. 00:25:45 Sweeky Super nice experience. Also I'm Sherman. Was there anything you wanted to share here? Any like big blocker or any weirdness in Android? 00:25:55 Amsuman Yes, Vicky, so coming to the major risk we had major. 00:26:00 Amsuman A work item we had was moving from renderers to handlers, but I'll come to that at at the end. So before that so some of the issues we faced during the migration. So on top of what Sanjana mentioned, so mostly like we just had one or two issues which were. 00:26:20 Amsuman We couldn't find it on the open issues or closed issues on the GitHub. Apart from that most of the issues we found we could find the work around either shared by you or Shane. We were using that and everything was working fine. 00:26:38 Amsuman And one other issue was a OT profiling, so that was one thing that was missing. So fortunately we had the profiles we created during the last stage of our Xamarin. So we were using the same profiles. 00:26:43 Ohh yeah. 00:26:58 Amsuman And we could actually turn it on using the same profile. 00:27:01 Amsuman But I in using at least using.net seven, we could not find any to create new profiles. So there was no support, but that was I think that is includedin.net. So users migratingusing.net eight should not face any of these issues or any of the bugs we face like most of. 00:27:09 Sweeky Yeah, no. Yeah. 00:27:13 Sweeky Exactly, yeah. 00:27:22 Amsuman We found recently, like most of them, were fixed in net eight anyway. 00:27:26 Matt OK, I have questions now. 00:27:26 Sweeky Yeah, yeah. Go for it. 00:27:29 Matt Yeah. So First off, we the M365 app. 00:27:34 Matt Or the admin. 00:27:34 Matt App is both. 00:27:36 Matt There is both an Android and an iOS version, correct? 00:27:41 Amsuman Yes, OK. Yes, yeah. 00:27:42 Matt And and both were upgraded right? 00:27:45 Sanjana We started with Android via to migrate in iOS. 00:27:51 Sweeky Yeah. Then much further along with the Android target, the iOS one is in progress, yeah. 00:27:56 Matt OK, good. And the Android was started specifically specifically first, just because of running into the Intune issues from the because of the Google API. 00:28:07 Matt The the. Yeah. OK. OK. 00:28:10 Matt Good. So I'm just making sure everybody understands cuz you know I I was a little confused too and. 00:28:16 Matt And are we running.net eight with the Android app right now? 00:28:21 Sweeky We not yet, I don't think we've tested it on the previews yet, although I think Shane did pull down their app and tried it locally on his machine and and nothing broke. Everything was working fine, but we don't have enough like we haven't like built built it against any other previews yet. My recommendation was. 00:28:39 I see. 00:28:41 Sweeky Just to wait till like an RC comes out because the the it's part of their daily workflow not and want them to have to like mess around with their systems. A bit like too much switching between 7:00 and 8:00. So once we have a net eight RC out, I think we'll give it a shot. 00:28:52 Matt OK. 00:28:58 Matt Who would have thought? Sweetie, that. 00:29:00 Matt You would play it safe, I don't know, but. 00:29:02 Sweeky It's a production app, man, it's. 00:29:04 Sweeky Not like my little sample app. 00:29:05 Matt No, I was just wondering. 00:29:06 Matt That's what I was thinking was like. 00:29:08 Matt Whoa, this is. 00:29:08 Matt Kind of. We're out there. We're not even at. 00:29:10 Matt Our C yet, but OK, alright, good. 00:29:13 Matt That makes sense now. 00:29:13 Sweeky Yeah. Well, I think once we have RC out, I think it'll it'll feel safe enough to like, have I to go just because it's the migrations of the whole task altogether, right. You don't want to add too many more, right? You know variables into the mix is what I'd say. But yeah, no, like I said. 00:29:27 Right. 00:29:35 Sweeky The workarounds, they know what the workarounds are. Everyone's been keeping track of it as soon as net aid comes in, go in, rip out all the workarounds and everything. 00:29:43 Sweeky Should work as is. 00:29:44 Sweeky So yeah, OK, they'll be exciting. 00:29:47 Matt Good, good, good. Now, now I'm clear. Now I'm clear on everything good. 00:29:51 Sweeky Yeah. Yeah, no, for sure. For sure. Yeah. No, I think I wanna make sure we spend some time. 00:29:56 Sweeky Talking about the. 00:29:57 Sweeky The the the big topic which was custom renderers I'm sure, and I think you had done quite a bit of the custom renderer migration. Do you wanna share some of the learnings? Maybe that you had for those? 00:30:09 Sweeky Other people who are migrating their apps right now. 00:30:11 Amsuman Yes, we can define. 00:30:14 Amsuman So yeah, so we were using like decent number of renderers for almost every control Xamarin control we were using. So that was the main hard task for us migrating the net movie, migrating all of them to handlers. So luckily we provided. 00:30:33 Amsuman With compatibility renderers which work exactly like the renderers and we could directly use them for some controls without having to move to handlers so that we can go into production as soon as possible, though it affected the performance like slowly, we'll be migrating everything to handlers. 00:30:52 Amsuman Making it more efficient, but the compatibility framework really helped us because we were actually blocked. We couldn't make a release from our Xamarin code base, so just to save some time we were using the compatibility frameworks initially. So one major change we observed from moving renders to handlers. 00:31:14 Amsuman Handlers are much more efficient and the performance both in like considering the performance, it was much faster rendering the control compared to the renders, but at the same time I would mention the compatibility renderers were also affecting the performance compared to the Xamarin renders so. 00:31:33 Amsuman One suggestion we would say, unless anyone who is migrating from Xamarin to movies in a hurry to get out for prediction because of some issues, similar issues we have. 00:31:43 Amsuman So I would say do not use the compatibility renders because that would just be a double work moving from renderer to compatibility renderer also needs some fixes, but that's a very minor work then moving to handlers. It would just double the effort so directly just remove the renderers, make the app build and run. Obviously like there will be UI issues. 00:32:04 Amsuman Use, but try fixing those directly using the handler architecture instead of using the compatibility renders, so that would actually save a lot of time. Now whatever the renderers we were using, whatever the methods it had, everything was almost in say we were using effectively 2 methods in. 00:32:24 Amsuman Custom renders on element change on element property. 00:32:27 Amsuman So coming to handlers, all of this is broken into multiple methods. You can specifically map a property, use mappers. You can use the you can access the native control, so all the code we had in the single method in custom renderer we were using the similar logic but we just had to put it in different places. 00:32:48 Amsuman So exactly map to which property that logic applied we had to map to subscribe to that event using the mappers. So on element changed actually created a created a native control, set all the properties. So that was happening in the render. 00:32:55 Sweeky Right, right. 00:33:05 Amsuman But still that I think that was also affecting the performance lattice coming to Maui. We can directly access the platform control and make the changes to that. So that is one thing that enhances the performance and on property change used to get called for every property change and the element it used to go through. 00:33:23 Sweeky That's right. 00:33:25 Amsuman Every code on element property change like, even though that was not relevant for that specific property. With handlers, we could just map that property to a specific method, so only that is invoked in that properties. 00:33:38 Amsuman So that was one major advantage we observed with handlers and coming to 1 issue we face like initially the renderers both the Xamarin renderers and the custom. Sorry the compatibility renders framework, they use the Android styling from App Compact. So say for buttons. 00:33:58 Amsuman Labels etc. So now coming to handlers or the Maui controls as such, by default they are using the material themes so initially. 00:34:09 Amsuman So for like most of the controls, the materials team app compact themes, there was not much differences. So two major ones we observed were labels and buttons. 00:34:22 Amsuman So that's a complete change like irrespective of renders and handlers from Xamarin to movie, we observe the theme change from app Compact to material. But if we use the custom renders it would still refer to the app compact themes by default. So you would get a similar experience as you had in Xamarin. But if we are not using any renderers or. 00:34:41 Amsuman Hey we are using handlers so that. 00:34:43 Amsuman Would be a new. 00:34:44 Amsuman We'll the team. So I think we'll have to change our controls according to those teams to replicate the UI behavior. So some like some for some who are migrating, so there might not be any difference for some like because of any custom say spacing or layouts or alignments they're using that might cause an issue. 00:35:06 Sweeky Good to know. Thanks. Yeah, thanks for that. Heads up for everyone listening. Yep. 00:35:12 Amsuman So that was the main reason I was saying like unless you are in a hurry, try to directly move to. 00:35:17 Amsuman Handlers instead of the customer and moving to compatibility renders and then to handlers. 00:35:23 Matt Yeah. So I was just wondering what were just like an example of some of the controls that were being rendered as a custom renderer. What were you doing as a custom renderer just as as an example? 00:35:34 Amsuman One major thing we were doing using the custom renderer was accessibility features. So as I said, we did not have semantics. 00:35:43 Amsuman In Xamarin, so for a specific control, if we needed a more. 00:35:49 Amsuman More effective control on the accessibility features we were doing all that in the custom renderers, say by default or for a control, say for buttons control we needed some action when a property changes so that we were doing in renderers. 00:36:03 Amsuman Any colors or styling any like when a property changes. If we need the colors or styling. 00:36:10 Amsuman Change. We were doing those in renders. 00:36:12 Amsuman OK, say, uh, any animations we needed for search bar, so those were handled by the renders itself, yeah. 00:36:18 Sweeky Yeah, it's. Yeah, there. Yeah. Just to give a little bit more context too. This is like a very this is a very like the the code base is kind of old. This app has been around for quite a while, like a lot of the UI was built actually C only like C. 00:36:38 Sweeky 1st so there was. That's why the. 00:36:43 Sweeky A lot of the controls were written with. They ended up using a lot of custom renderers for that just to like just do basic. You know, setting up the control and styling it, making it look like they wanted to make it look also because they also have some like very particular UI requirements. 00:37:02 Sweeky I will say, though, I think, Anshuman. Correct me if I'm wrong though. So the the in in the Xamarin version of the app. Accessibility is a huge requirement for this team and they've done an excellent job getting, you know, accessibility ratings on this app with the Xamarin form. 00:37:18 Sweeky This version, but like we mentioned earlier, since they were stuck on Xamarin forms 4.6 a lot of the accessibility features were pulled into Xamarin forms five. So the only way this team could access a lot of those was through custom renderers and we had to put in a lot of like work around code for them. And so this is where correct me if I'm wrong, I believe the migration to Maui. 00:37:40 Sweeky Should have helped significantly, especially in the accessibility space, because they are able to now actually get all of the default accessibility features that were lighting up in all of the Maui controls, and they don't have to like you know. 00:37:53 Sweeky Implement them on their own. Have to use any like go down to the custom renderer level to do at least a lot of it. If not all of it. So anshuman. Correct me if I'm wrong, but I'm guessing getting to all of the accessibility features now must must be easier usingthe.net Mai controls. 00:38:10 Amsuman Yes, Vicky, you are right. So all the custom code we had custom classes, custom extensions we had like we are not using like we are not using any of those right now. So just the semantics library or the enhanced. 00:38:24 Amsuman Accessibility libraries that Maui provides, like we are able to replicate the exact same behavior by just using this. 00:38:30 Awesome. Awesome. 00:38:31 Amsuman Wow. So though we are using like few we are setting few accessibility properties in the handlers right now as well. But we're not using any custom code. We are just using the semantic like this that that's just for if you need any default behavior instead of just configuring it every time we create that. 00:38:50 Amsuman Role and setting that. 00:38:52 Sweeky Matt, did he blow your mind with all the awesome accessibility features we have now in Hawaii? 00:38:56 Matt You know what? That's super important to have, right? And it's even better that they're easy to get at right cause. 00:39:03 Sweeky They're absolutely, absolutely. 00:39:04 Matt You're not going to put men if it's hard to do right. And unfortunately, a lot of times accessibility is back of mind. As bad as that sounds, it is. 00:39:10 Sweeky Yeah. No, for sure. 00:39:12 Sweeky Sure. Yeah. And I'm just like if just some, I guess if anyone is curious like trends we're seeing with a lot of customers is like this was a great example. There was a lot of extra code that had to be written, extension methods and things like that to just have accessibility support in Xamarin forms, but now with. 00:39:32 Sweeky Net, Maui with a lot of this coming out. 00:39:33 Sweeky Of the box and to I will add using this new handler architecture it is. It is significantly easier. 00:39:41 Sweeky Now to add just basic accessibility features and extend them to the degree that you require, it's not as crazy as it was before. It's much much simpler and just talking about like the. 00:39:54 Sweeky Lesser amount of code being used, I was just talking to another customer and they were telling me how in the migration. 00:40:02 Sweeky Process and they were also kind of doing like an audit of all their custom renderers because they reached that point to like, OK, now we have to move over to handlers. They actually found out that they of they had like maybe 12. 00:40:15 Sweeky Like custom renderers and they were not even using four of those, they just had those code files as hanging around in their app and they were just like we just realized that we don't use this anymore and we didn't even know that. And so it was a good tech deck, clean up situation going on over there. So yeah, I highly recommend. 00:40:34 Sweeky In this like what Anshuman suggested as part of the migration process, as much as you can. 00:40:39 Sweeky Just, just just. 00:40:40 Sweeky Pull that Band-Aid, go straight to handlers. You never know. Like it. It can be as it can simplify your handler code. Your your renderer code. Maybe you don't need it anymore, because maybe that feature is now available to you in net, Maui. So it's a good exercise to do right now. You know, go through it in your apps. Yeah. 00:41:01 Matt And that's how we kind of touched on before we were talking with the Polaris people in our on our previous our customer upgrade update upgrade migration path was it when you're updating upgrading whatever we want to call this process, it's a good time to actually go through and do an inventory of your code and kind of just. 00:41:18 Matt Do some basic. 00:41:20 Matt First date on it I guess and pull that Band-Aid as he said sweetie and. 00:41:24 Matt Just fix things that have been hanging out for a while that maybe you don't even know are there. Maybe you do know are there. Just just take care of it. You're in there anyway. So now's the time. And a lot of times things come out way better so. 00:41:38 Sweeky Yep, Yep. Absolutely. Absolutely. 00:41:40 Matt I'm sure, man. What we're. 00:41:42 Matt All right, you hit F5 or command enter depending on what operating system you're building on here. What happened? Were there any major UI changes? The app is up and running. 00:41:55 Matt What did you think? How did it look the very first time? 00:41:57 Matt You had it running and and it deployed. What did you think? 00:42:01 Matt Any major UI changes you had to go back and make or were you happy the way it looked and like were? 00:42:07 Matt I guess what was your feeling, did you did? 00:42:11 Matt I'll leave it there. How did you feel the first time you saw it actually up and running? 00:42:13 Amsuman Yeah. Yeah. So yeah, so initially the right after we were able to build and deploy the app. So it was a completely different UI. Everything they started like because that was because we were not raising the renders initially. We were just using the controls. 00:42:33 Amsuman So the UI was distorted a lot. There were different issues in the spacing, so I think that. 00:42:39 Amsuman Was a change made by the mall itself. A few controls like grids, tags, etc. The default laying itself changed, so I think that everything all of that was included in the upgrade documentation back then itself. 00:42:54 Amsuman So spacing alignments were the major issues. So few control like few properties that we were setting using the renderer. So app was crashing, the functionality was causing few issues. But right after we used the compatibility renders so it was everything was pretty much fixed like. 00:43:14 Amsuman Not entirely, but most of the issues we were saying I think that would be similar in the Xamarin app as well. If we remove the. 00:43:23 Amsuman Renders that, so I think except the spacing issues and the Android styling I mentioned that controls change from app combat to materials. I think everything else would remain the same. 00:43:35 Amsuman Unless the control is deprecated or say whatever Sanjana was talking about, frames moving from frames to borders, that was one thing. So one more thing was stack layout. So initially we had different alignment options so but if we needed like whatever stack layout. 00:43:55 Amsuman Was providing in XAML, so for the alignment that was not exactly possible. 00:44:00 Amsuman In Xamarin, sorry in net mode because they were pushing for that specific requirement, we moved to crit and we moved from apps relative layout staff, solute layouts. So unless those those changes were made that was made by the net Mau itself just for pushing for better performance or. 00:44:21 Amsuman Better controls. Everything else almost remains the same like, except the spacing for few control. 00:44:28 Sweeky Nice, nice. Sanjana. Anything outside of like the frames that you talked about? Was there any other like you? I think you you remember that was different or any that was like hard to change or hard to fix rather. 00:44:42 Sanjana I think 1 issue which I remember was with the line break mode. 00:44:48 Sanjana I think with. 00:44:50 Sanjana Break mode set as tail truncation. It was not taking up the Max line attribute, so that was again I think a bug which was fixed by Maui and. 00:45:02 Sanjana Yeah. So that's that's one minor issue which I remember apart from the frames control and the renderers. 00:45:09 Amsuman So yes, Vicky, so initially I would say we were facing few issues, not that it was perfectly everything was working perfect. But I think like I think like whatever issues we are facing right now that none of them are open, we either have a work around or it was pushed to dot net. 00:45:27 Amsuman Right. So I think whoever is migrating now should be good in a good state. 00:45:31 Sweeky Awesome. Yes, we did it. 00:45:34 Matt I'm sure, man, I'm gonna put this one out to you to to kind of wrap all this up into a bowl into a with with a bowl. Any tips and tricks that you want to give our listeners as they embark on this journey or as they are on their journey to upgrade their apps to dot net Maui. 00:45:49 Matt That they that you should think that. 00:45:51 Matt The top two. 00:45:52 Matt Points that they should drive home that you want to drive home with our listeners and what they should be doing are keeping in mind as they go through. 00:45:58 Amsuman This process with their own apps, yeah, definitely so one the the first priority I would say is use the upgrade assistant. Do not try it manually. 00:46:09 Amsuman Because that would be very helpful. It would ease out the migration process a lot. Apart from that, I think like most of. 00:46:20 Amsuman Take a cut like other thing I mentioned previously, a tie to directly migrate to handlers. That is going to save a lot of effort. 00:46:30 Amsuman It is going to enhance the performance as well for your app. So those are the two points that I would prioritize over others. So apart from these. 00:46:39 Amsuman I would say like where one while we are migrating this we might like there might be some tech date that is still that was not possible to clear with the Xamarin. So I think that we can look at. 00:46:57 Amsuman How we can clear that with the new Mavi technology? So maybe something that is deprecated your migrating to the Maui even though that is that support is still available. So Maui provides new methods, new functionalities for many such things. So I suggest like directly. 00:47:17 Amsuman Like removing those deprecated methods or packages going to the new functionalities provided by movie using those directly, so that would directly enhance the performer. 00:47:29 Amsuman And make your app future proof. 00:47:33 Matt Cool. And then so Joanna, do you have anything else to add to that tips and tricks for our listeners as they go about in on their on their upgrade journey? 00:47:42 Sanjana I think I'm Truman has majorly covered everything, so I think I will just come back to the frames issue again like that particular control element is kind of deprecated in Maui. So I think moving to border or any other. 00:48:00 Sanjana Control like box view or shapes would be helpful. 00:48:03 Sanjana There, apart from that, I think the yeah, the sync issues with the main page when when you're starting the app that is already fixed in net. So I guess people who are migrating with net eight will not see any issues. 00:48:23 Sanjana There and yeah, one. 00:48:26 Sanjana Another thing which we saw with the web view rendering was with the assets folder being created in Maui which is not happening earlier in Xamarin. So I think that is something you know people might need to take care of that we have as it's folder being created now with net Maui. 00:48:46 Amsuman Yeah. Thanks and sorry. Yeah, I missed to mention one. 00:48:51 Amsuman Point. So this was one exercise we took up in the very early stages of migration. So even though the upgrade assistant will do the namespace renaming and everything, so before we use that, I think it's better for anyone who is migrating. Just list down all the dependencies, all the new get packages they're using. 00:49:12 Amsuman Just for look at the latest versions of those, see if it is that is supported in.net movie.net7.net 8. Otherwise what would be? 00:49:22 Amsuman The better alternatives we can find many in the community toolkits for a specific use case, so try to make a note of that. So then once you upgrade anything that is missing, you will be able to. That will be easier to fix using those details. 00:49:40 Amsuman And one more thing, if you are migrating on both Android and IIS. 00:49:47 Amsuman I think the new Maui project structure is very well refined compared to Xamarin. So we can have all the assets, all the resources in the common project itself now. So in before this we we were having different matches with different resources for both Android and iOS and we had to specifically mention those to be included in the project. 00:50:07 Amsuman I will send everything, but I think now my we. 00:50:12 Amsuman By default, adds anything based on the folder structure. That is very well defined, so that can be made. Use. 00:50:17 Matt Of alright. And it's squeaky. What are your words of wisdom that you want to leave everybody with? 00:50:26 Sweeky Just be inspired by by them, like by this team. They have a very complex app and they just took it on head on and they did it and I think they are. 00:50:38 Sweeky Enjoying the benefits? 00:50:40 Sweeky Of living in the net, Maui world, so yeah. 00:50:44 Sweeky You know, they shared great learnings, great, you know, insights and heads ups. 00:50:51 Sweeky And yeah, the documentation is getting better, the tooling is getting better, there is no better day than today to migrate. So yeah. 00:51:01 Matt Yeah, it's hard not to be inspired by even. It is a very complex app. It's an app used by thousands of people, 10s of thousands of people, if not more. And. 00:51:12 Matt Yeah, it's gone from. 00:51:15 Matt It's been around, as you mentioned, sweet here forever. Now it's up up to date and with itwith.net, Maui and running the latest and greatest so. 00:51:22 Matt Congratulations and thank you very much, Sanjana and I'm Schumann and sweetie. You too. You were definitely involved and all our documentation people and obviously the project team to helping out and getting everything up and running. So amazing work. 00:51:37 Matt All right, so that's this episodeofthe.net Maui podcast, so feel free to follow us everywhere you follow podcast. Follow us more than once, bump up our numbers. We're on iTunes. We're on Spotify. Where so we can. Where else can you follow podcast? Because we want to be followed there. 00:51:52 Sweeky Yeah, everywhere. Yeah, Apple podcasts. Google podcast. 00:51:58 Matt That's right, Google alright everywhere. Alright. Thank you, Sir. Joanna. Thank you. I'm Shannon. We really appreciate it this week. You as always. Thank you so much. And this is the.net Maui podcast. 00:51:58 Sweeky Yeah, anyway.