diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index e9c44110caa5304ff18326f5611ac6ad4cc06a34..93f03748c41d61c47df0793dac14991dffd34e11 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -73,6 +73,8 @@ dependencies {
   implementation(libs.androidx.activity)
   implementation(libs.androidx.activity.compose)
 
+  implementation(libs.androidx.splashscreen)
+
   implementation(libs.androidx.compose.animation)
   implementation(libs.androidx.compose.compiler)
   implementation(libs.androidx.compose.foundation)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9cd15e022abd46dfcd485724ffc606d111d563f3..8f3c4ae0b7802375e36e5acc930c88d30597358f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,12 +9,11 @@
     android:icon="@mipmap/ic_launcher"
     android:label="@string/application_name"
     android:supportsRtl="true"
-    android:theme="@style/Theme.Meteroid"
     android:usesCleartextTraffic="true">
     <activity
       android:name=".MainActivity"
       android:exported="true"
-      android:theme="@style/Theme.Meteroid">
+      android:theme="@style/Theme.Meteroid.SplashScreen">
       <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <action android:name="android.intent.action.VIEW" />
diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/MainActivity.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/MainActivity.kt
index 81f13ca2bf9b138c8f9ca0ccc5065e386e6ca016..9bfc7b9f2aa9078ac1c1085b7d7a631c207c9fe9 100644
--- a/app/src/main/kotlin/de/chaosdorf/meteroid/MainActivity.kt
+++ b/app/src/main/kotlin/de/chaosdorf/meteroid/MainActivity.kt
@@ -27,18 +27,29 @@ package de.chaosdorf.meteroid
 import android.os.Bundle
 import androidx.activity.ComponentActivity
 import androidx.activity.compose.setContent
+import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.get
 import dagger.hilt.android.AndroidEntryPoint
 import de.chaosdorf.meteroid.ui.AppRouter
+import de.chaosdorf.meteroid.ui.AppViewModel
 import de.chaosdorf.meteroid.ui.theme.MeteroidTheme
 
+
 @AndroidEntryPoint
 class MainActivity : ComponentActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
+    val viewModelProvider = ViewModelProvider(this)
+    val viewModel = viewModelProvider.get<AppViewModel>()
+
+    installSplashScreen().setKeepOnScreenCondition {
+      viewModel.initState.value == AppViewModel.InitState.LOADING
+    }
 
     setContent {
       MeteroidTheme {
-        AppRouter()
+        AppRouter(viewModel)
       }
     }
   }
diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/AppRouter.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/AppRouter.kt
index 8dadcc4530733e3152e9307c031e47f9ced33d4f..b450fb48a889fa0b592c9574262c9ca238e6456a 100644
--- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/AppRouter.kt
+++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/AppRouter.kt
@@ -58,18 +58,13 @@ import de.chaosdorf.meteroid.ui.wrapped.WrappedViewModel
 import kotlinx.coroutines.launch
 
 @Composable
-fun AppRouter(viewModel: AppViewModel = viewModel()) {
+fun AppRouter(viewModel: AppViewModel) {
   val scope = rememberCoroutineScope()
   val navController = rememberNavController()
   val initState by viewModel.initState.collectAsState()
 
   LaunchedEffect(initState) {
     when (initState) {
-      AppViewModel.InitState.LOADING -> navController.navigate(
-        Routes.Init,
-        NavOptions.Builder().setPopUpTo(Routes.Init, true).build()
-      )
-
       AppViewModel.InitState.CREATE_SERVER -> navController.navigate(
         Routes.Servers.Add,
         NavOptions.Builder().setPopUpTo(Routes.Servers.Add, true).build()
@@ -89,19 +84,11 @@ fun AppRouter(viewModel: AppViewModel = viewModel()) {
         Routes.Home.Root,
         NavOptions.Builder().setPopUpTo(Routes.Home.Root, true).build()
       )
+      else -> Unit
     }
   }
 
-  NavHost(navController, startDestination = Routes.Init) {
-    composable(route = Routes.Init) { _ ->
-      Box(Modifier.fillMaxSize()) {
-        Column(Modifier.align(Alignment.Center)) {
-          CircularProgressIndicator()
-          Text("Loading")
-        }
-      }
-    }
-
+  NavHost(navController, startDestination = Routes.Servers.Root) {
     navigation(route = Routes.Servers.Root, startDestination = Routes.Servers.List) {
       composable(Routes.Servers.List) { _ ->
         ServerListScreen(
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index a30012cd0ce22a2aa64c1094647dfa0b45aa9868..37bf28c89a74f94745d6c5dffff7fe11d9429a36 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -15,4 +15,10 @@
     <item name="android:windowMinWidthMajor">100%</item>
     <item name="android:windowMinWidthMinor">100%</item>
   </style>
+
+  <style name="Theme.Meteroid.SplashScreen" parent="Theme.SplashScreen">
+    <item name="windowSplashScreenBackground">#003984</item>
+    <item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash</item>
+    <item name="postSplashScreenTheme">@style/Theme.Meteroid</item>
+  </style>
 </resources>
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 25ea8c9b8d705f693154d2c4971d74e8f084a3f1..fa65f024757f1b0cc8110c256bcefc87c3d126a7 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -34,7 +34,7 @@ androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", versi
 androidx-compose-animation = { group = "androidx.compose.animation", name = "animation" }
 androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" }
 androidx-compose-foundation-layout = { group = "androidx.compose.foundation", name = "foundation-layout" }
-androidx-compose-material-icons = { group = "androidx.compose.material", name = "material-icons-extended", version = "1.6.0-alpha08" }
+androidx-compose-material-icons = { group = "androidx.compose.material", name = "material-icons-extended", version = "1.6.0-beta01" }
 androidx-compose-material = { group = "androidx.compose.material3", name = "material3", version.ref = "androidx-compose-material3" }
 androidx-compose-material-windowSizeClass = { group = "androidx.compose.material3", name = "material3-window-size-class", version.ref = "androidx-compose-material3" }
 androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime" }
@@ -46,6 +46,8 @@ androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-toolin
 androidx-compose-ui-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "androidx-compose-tooling" }
 androidx-compose-ui-util = { group = "androidx.compose.ui", name = "ui-util" }
 
+androidx-splashscreen = { module = "androidx.core:core-splashscreen", version = "1.0.1" }
+
 androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "androidx-datastore" }
 
 androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "androidx-room" }