diff --git a/app.vue b/app.vue
index 6bb6396c..92eaeadf 100644
--- a/app.vue
+++ b/app.vue
@@ -6,14 +6,14 @@ provideGlobalCommands()
 // We want to trigger rerendering the page when account changes
 const key = computed(() => `${currentUser.value?.server ?? currentServer.value}:${currentUser.value?.account.id || ''}`)
 
-const { params } = useRoute()
+const { params, path } = useRoute()
 </script>
 
 <template>
   <NuxtLoadingIndicator color="repeating-linear-gradient(to right,var(--c-primary) 0%,var(--c-primary-active) 100%)" />
   <NuxtLayout :key="key">
-    <!-- TODO: rework the /[account] routes to remove conditional loading -->
-    <NuxtPage v-if="!params.account || isMastoInitialised" />
+    <!-- TODO: rework the /[account] routes and the /home (for sign in alias) to remove conditional loading -->
+    <NuxtPage v-if="(!params.account && path === '/home') || isMastoInitialised" />
   </NuxtLayout>
   <PWAPrompt />
 </template>
diff --git a/pages/home.vue b/pages/home.vue
index 55827f2c..65cc1a7b 100644
--- a/pages/home.vue
+++ b/pages/home.vue
@@ -1,16 +1,16 @@
 <script setup lang="ts">
 import { useI18n } from 'vue-i18n'
-
 definePageMeta({
   middleware: 'auth',
   alias: ['/signin/callback'],
 })
-
 if (useRoute().path === '/signin/callback') {
   // This only cleans up the URL; page content should stay the same
   useRouter().push('/home')
 }
-
+const paginator = useMasto().timelines.iterateHome()
+const stream = await useMasto().stream.streamUser()
+onBeforeUnmount(() => stream.disconnect())
 const { t } = useI18n()
 useHeadFixed({
   title: () => t('nav_side.home'),
@@ -25,7 +25,9 @@ useHeadFixed({
         <span>{{ $t('nav_side.home') }}</span>
       </NuxtLink>
     </template>
-
-    <TimelineHome v-if="isMastoInitialised" />
+    <slot>
+      <PublishWidget draft-key="home" border="b base" />
+      <TimelinePaginator v-bind="{ paginator, stream }" context="home" />
+    </slot>
   </MainContent>
 </template>