| name | error-pages |
| description | Create custom 404 and 500 error pages with brand styling. Use at project end before release. Triggers on "404", "error pages", "not found", "500 error". |
Error Pages
Create branded 404 and 500 error pages.
Workflow
- Create app/not-found.tsx (404)
- Create app/error.tsx (500)
- Match brand styling from globals.css
- Add i18n support
404 Page (not-found.tsx)
Create at app/not-found.tsx:
import Link from 'next/link'
export default function NotFound() {
return (
<div className="min-h-svh flex items-center justify-center bg-background">
<div className="container text-center">
<h1 className="mb-4">404</h1>
<p className="text-muted-foreground mb-8">
Diese Seite wurde nicht gefunden.
</p>
<Link href="/" className="btn btn-primary">
Zurück zur Startseite
</Link>
</div>
</div>
)
}
500 Page (error.tsx)
Create at app/error.tsx:
'use client'
export default function Error({
error,
reset,
}: {
error: Error & { digest?: string }
reset: () => void
}) {
return (
<div className="min-h-svh flex items-center justify-center bg-background">
<div className="container text-center">
<h1 className="mb-4">Fehler</h1>
<p className="text-muted-foreground mb-8">
Ein unerwarteter Fehler ist aufgetreten.
</p>
<button onClick={reset} className="btn btn-primary">
Erneut versuchen
</button>
</div>
</div>
)
}
i18n Support
Add to messages/de.json and messages/en.json:
{
"error": {
"404": {
"title": "404",
"message": "Diese Seite wurde nicht gefunden.",
"cta": "Zurück zur Startseite"
},
"500": {
"title": "Fehler",
"message": "Ein unerwarteter Fehler ist aufgetreten.",
"cta": "Erneut versuchen"
}
}
}
Checklist
- app/not-found.tsx created
- app/error.tsx created
- Brand styling applied
- i18n text added
- 404 page tested (visit /nonexistent-page)