unoplatform/uno · critical · InvalidOperationException

The Window should be created later in the application lifecy

Error message

The Window should be created later in the application lifecycle.

What it means

Thrown in OnWindowCreate (under HAS_UNO && !HAS_UNO_WINUI) when the app's static Current is null at the moment a Window is created. Uno expects the application singleton to be initialized before any Window is constructed; a Window built too early in the lifecycle violates that ordering.

Source

Thrown at src/SamplesApp/SamplesApp.Shared/App.xaml.cs:361

		private void ActivateMainWindow()
		{
#if DEBUG && (__SKIA__ || __WASM__)
			_mainWindow!.EnableHotReload();
#endif
			// await Task.Delay(15000); // Artificial delay to simulate asynchronous activation
			_mainWindow!.Activate();
			_wasActivated = true;
			MainWindowActivated?.Invoke(this, EventArgs.Empty);
		}

		public event EventHandler? MainWindowActivated;

#if HAS_UNO && !HAS_UNO_WINUI
		protected override void OnWindowCreated(global::Microsoft.UI.Xaml.WindowCreatedEventArgs args)
		{
			if (Current is null)
			{
				throw new InvalidOperationException("The Window should be created later in the application lifecycle.");
			}
		}
#endif

		private void InitializeFrame(string? arguments = null)
		{
			if (_mainWindow is null)
			{
				throw new InvalidOperationException("Main window must be initialized before Frame");
			}

			var rootFrame = _mainWindow.Content as Frame;

			// Do not repeat app initialization when the Window already has content,
			// just ensure that the window is active
			if (rootFrame is null)
			{
				// Create a Frame to act as the navigation context and navigate to the first page

View on GitHub (pinned to 0418340488)

Solutions

  1. Defer all Window construction until after the Application is initialized (OnLaunched or later).
  2. Ensure Current is set (the framework sets it during Application startup) before any new Window().
  3. If you have a custom entry point, call the standard Uno host build that sets Current first.
  4. Move window creation out of static constructors and field initializers.

Example fix

// before - window built in a static/field initializer
public static Window Splash = new Window();
// after - build it in OnLaunched
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
    var splash = new Window();
    splash.Activate();
}
Defensive patterns

Strategy: validation

Validate before calling

if (Application.Current is null) throw new InvalidOperationException("Initialize the Application before creating any Window.");

Prevention

When it happens

Trigger: Constructing a Microsoft.UI.Xaml.Window before the Application instance is fully initialized — e.g. creating a window in a static constructor, before OnLaunched, or during host build before Current is assigned.

Common situations: App startup reordering; creating a splash or secondary window during service registration; custom main() that instantiates Window before Application.Run; refactoring that moved window creation earlier.

Related errors


AI-assisted analysis of unoplatform/uno@0418340488 (2026-08-13). Data as JSON: /api/errors/6878f12d440aa77e. Report an issue: GitHub.