๐ฏ Poin-Poin Utama Modul Ini:
loading.tsxsecara otomatis membungkus Halaman dengan React Suspense boundaryerror.tsxbertindak sebagai Error Boundary (wajib Client Component'use client')not-found.tsxmenampilkan halaman 404 kustom dan bisa dipicu via fungsinotFound()
โก Konvensi File Spesial UI Next.js 16
Next.js menyediakan berkas deklaratif untuk menangani status loading & error tanpa mengotori logika komponen utama:
loading.tsx: Menampilkan Skeleton UI atau Spinner secara instan saat data server sedang di-fetch.error.tsx: Menangkap runtime error pada child component & menyediakan tombol recovery "Try Again".not-found.tsx: Tampilan khusus jika resource tidak ditemukan.
๐ป Contoh error.tsx Boundary
app/events/error.tsx
"use client"; // Error boundary WAJIB berupa Client Component
import { useEffect } from "react";
export default function ErrorBoundary({
error,
reset,
}: {
error: Error & { digest?: string };
reset: () => void;
}) {
useEffect(() => {
console.error("Caught error:", error);
}, [error]);
return (
<div className="p-8 text-center">
<h2 className="text-xl font-bold text-red-500">Terjadi Kesalahan System!</h2>
<button
onClick={() => reset()}
className="mt-4 bg-gray-800 text-white px-4 py-2 rounded-md"
>
Coba Lagi ๐
</button>
</div>
);
}