{"record":{"id":"e56349f603efdf76","repo":"dotnet/maui","slug":"application-e56349","errorCode":null,"errorMessage":"application","messagePattern":"application","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"critical","filePath":"src/Compatibility/Core/src/iOS/FormsApplicationDelegate.cs","lineNumber":135,"sourceCode":"\t\t\t// applicationWillTerminate\n\t\t\t//application.SendTerminate ();\n\t\t}\n\n\t\tprotected override void Dispose(bool disposing)\n\t\t{\n\t\t\tif (disposing && _application != null)\n\t\t\t{\n\t\t\t\t_application.PropertyChanged -= ApplicationOnPropertyChanged;\n\t\t\t\t_application.PropertyChanging -= ApplicationOnPropertyChanging;\n\t\t\t}\n\n\t\t\tbase.Dispose(disposing);\n\t\t}\n\n\t\tprotected void LoadApplication(Application application)\n\t\t{\n\t\t\tif (application == null)\n\t\t\t\tthrow new ArgumentNullException(\"application\");\n\n\t\t\tApplication.SetCurrentApplication(application);\n\t\t\t_application = application;\n\t\t\t(application as IApplicationController)?.SetAppIndexingProvider(new IOSAppIndexingProvider());\n\n\t\t\tapplication.PropertyChanged += ApplicationOnPropertyChanged;\n\t\t\tapplication.PropertyChanging += ApplicationOnPropertyChanging;\n\t\t}\n\n\t\tvoid ApplicationOnPropertyChanging(object sender, PropertyChangingEventArgs args)\n\t\t{\n\t\t\tif (args.PropertyName == nameof(_application.MainPage))\n\t\t\t\tUpdatingMainPage();\n\t\t}\n\n\t\tvoid ApplicationOnPropertyChanged(object sender, PropertyChangedEventArgs args)\n\t\t{\n\t\t\tif (args.PropertyName == \"MainPage\")","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/dotnet/maui/blob/f377ff1c5ee04d334d8a925f50c83a6b7afddf03/src/Compatibility/Core/src/iOS/FormsApplicationDelegate.cs#L117-L153","documentation":"FormsApplicationDelegate.LoadApplication throws ArgumentNullException(\"application\") when given a null Application. The platform cannot bootstrap without an Application instance; rejecting null here fails fast rather than dereferencing it later in property/event wiring.","triggerScenarios":"Calling LoadApplication(null); typically passing a DI-resolved Application that failed to construct, or a constructor expression returning null.","commonSituations":"DI container misconfiguration returning null Application; conditional construction like `LoadApplication(useMock ? null : new App())`; app-builder logic that has not built the Application yet.","solutions":["Construct a valid Application instance before passing it to LoadApplication.","Audit DI registration for the Application type.","Add a null check at the call site to surface configuration errors earlier with a clearer message."],"exampleFix":"// before\nLoadApplication(_container.GetInstance<Application>());\n// after\nvar app = _container.GetInstance<Application>()\n    ?? throw new InvalidOperationException(\"DI failed to resolve Application.\");\nLoadApplication(app);","handlingStrategy":"validation","validationCode":"if (application == null)\n    throw new InvalidOperationException(\"Application instance is null; check DI/constructor.\");\nLoadApplication(application);","typeGuard":"static bool IsValidApplication(Application a) => a != null;","tryCatchPattern":null,"preventionTips":["Validate DI registration for Application.","Construct Application before LoadApplication.","Null-check at the call site to surface config errors clearly."],"tags":["maui","xamarin-forms","ios","appdelegate","argument-validation","startup"],"backgroundTag":null,"analyzedSha":"f377ff1c5ee04d334d8a925f50c83a6b7afddf03","analyzedAt":"2026-08-13T14:26:18.069Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}