Loading...
Loading...
Makes an AI-generated frontend production-ready by adding loading states, error boundaries, page metadata, and a responsive layout audit at 375px. Framework-agnostic — applies to both Next.js and Vite/React. Called by the vibe-ship orchestrator.
npx skill4agent add chloezhu010/vibe-ship frontend-polishThis skill is called by theorchestrator. Framework-agnostic — applies to both Next.js and Vite/React.vibe-ship
frontend-designloading.tsxpage.tsx// app/dashboard/loading.tsx
export default function Loading() {
return <div className="animate-pulse h-8 bg-gray-200 rounded" />
}const [loading, setLoading] = useState(true)
// set loading to false after data fetch completes
if (loading) return <div className="animate-pulse h-8 bg-gray-200 rounded" />error.tsxpage.tsx'use client'
export default function Error({ error, reset }: { error: Error; reset: () => void }) {
return (
<div>
<p>Something went wrong.</p>
<button onClick={reset}>Try again</button>
</div>
)
}react-error-boundarynpm install react-error-boundaryimport { ErrorBoundary } from 'react-error-boundary'
function FallbackUI({ resetErrorBoundary }: { resetErrorBoundary: () => void }) {
return (
<div>
<p>Something went wrong.</p>
<button onClick={resetErrorBoundary}>Try again</button>
</div>
)
}
// Wrap your routes:
// <ErrorBoundary FallbackComponent={FallbackUI}><YourRoute /></ErrorBoundary>page.tsxexport const metadata = { title: 'Page Title | App Name' }index.html<title><meta name="description" content="...">sm:md:npm run dev