Improvement

Skeleton loading states everywhere

We've replaced spinners and blank screens with skeleton loaders across every page in the dashboard.

Instead of staring at a loading spinner, you now see content-shaped placeholders that smoothly transition to real content once it's ready.

Where you'll notice it

  • Project list — card-shaped skeletons

  • Post list — row-shaped placeholders with category badge outlines

  • Editor — toolbar and content area placeholders

  • Settings — form field skeletons

  • Subscribers — table row placeholders

This makes the app feel significantly faster, even on slower connections.

Skeleton components are built with the shadcn/ui Skeleton primitive and animate with a subtle pulse effect.