diff --git a/src/components/bucket-list/my-list-skeleton.tsx b/src/components/bucket-list/my-list-skeleton.tsx
index e788bf0..d7d9469 100644
--- a/src/components/bucket-list/my-list-skeleton.tsx
+++ b/src/components/bucket-list/my-list-skeleton.tsx
@@ -9,17 +9,24 @@ export function MyListSkeleton() {
-
- {[1, 2, 3].map((row) => (
-
+ );
+}
+
+/** Row placeholders only, so the page heading and add field can paint first. */
+export function MyListRowsSkeleton({ className = 'mt-7' }: { className?: string }) {
+ return (
+
+ {[1, 2, 3].map((row) => (
+
+
+ ))}
);
}
diff --git a/src/components/bucket-list/my-list.tsx b/src/components/bucket-list/my-list.tsx
index ce5edec..15920ca 100644
--- a/src/components/bucket-list/my-list.tsx
+++ b/src/components/bucket-list/my-list.tsx
@@ -6,7 +6,7 @@ import { useEffect, useRef, useState } from 'react';
import { StorageModeProvider, StorageModeStatus } from '~/components/storage-mode-provider';
import { normalizeDreamTitle } from '~/lib/dream-atlas';
import { ManualItemInput } from './manual-item-input';
-import { MyListSkeleton } from './my-list-skeleton';
+import { MyListRowsSkeleton } from './my-list-skeleton';
import {
localMyListStorage,
serverMyListStorage,
@@ -140,7 +140,6 @@ export function MyList({
/>
) : null;
- if (!loaded && !error) return ;
function row(item: MyListItem) {
return (
@@ -170,7 +169,9 @@ export function MyList({
My list
- {active.length} still calling · {lived.length} lived
+ {loaded
+ ? `${active.length} still calling · ${lived.length} lived`
+ : 'Opening your list…'}
@@ -208,7 +209,13 @@ export function MyList({
.
)}
-
{active.map(row)}
+ {!loaded && !error ? (
+
+
+
+ ) : (
+
{active.map(row)}
+ )}
{lived.length > 0 && (