Making UWP splash screen optional

WinUI

6 years ago

UWP apps by default have a splash screen that displays while the app is being loaded. Many UX specialists however argue that this is not the best solution from the user experience standpoint. Fortunately, a new feature Windows Fall Creators Update allows us to make the splash screen optional. Let's see how we can do it.

Prerequisites

It turns out, there are quite strict rules to be able to allow the app to have an optional splash screen. First, we have to make sure the app loads fast. There is no documented benchmark to what "fast" means, but basically the system decides and if it deems the app takes too long to launch, it will display the splash screen anyways. I have experimentally observed that this happens quite often when the app is launched for the first time after restart. The natural consequence of this is that even when our splash screen is optional, it doesn't mean we can leave it without image assets and should still care to make it look good for users. Secondly, optional splash screen is a new feature since Fall Creators Update, and it requires a change to the app's Package.appxmanifest. As a result, your app's minimum target SDK must be 16299.

How to do it

There is no UI yet in Visual Studio that allows setting splash screen to optional, so we have to edit Package.appxmanifest file directly. Open it as XML text file and first we add a namespace declaration to the root element:

<Package
  ...
  xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5">

This way we have added reference to the fifth version of the Windows 10 XML namespace, which adds support for the optional attribute on splash screen declaration. A bit further into the file we can find the Application element and inside is the uap:SplashScreen element. Now we edit it like this:

<uap:SplashScreen ... uap5:Optional="true" />

And we are done!

Summary

Making splash screen in UWP optional is a quick and easy process. There is really no harm in enabling it if you target the FCU SDK and it can only improve the user experience.

Source code

Sample source code for this article is available on my GitHub. Fall Creators Update