Algo importante que menciona la documentación es el comportamiento de error.js en rutas anidadas:
- Un archivo error.tsx manejará los errores de todos los segmentos anidados cuando no haya un error.tsx más especifico en dicho nivel anidado.
- Un archivo error.tsx no maneja los errores que puedan producirse en el layout.tsx de su mismo nivel (dado que el error boundary se renderiza dentro del layout como se aprecia en la ilustración).
- Para manejar errores producidos en un layout.tsx especifico, se debe crear un error.tsx en la ruta padre de dicho layout.tsx. Para el caso del root layout, se usa una variación de error.tsx denominada global-error.tsx (este último sí debe estar ubicado en el mismo nivel del root layout).
- El archivo global-error.js envuelve toda la app, el componente que retorna reemplazaría al root layout en un eventual caso incluso teniendo que definir su propio <html> y <body>. De todos modos este escenario sería poco probable dado que el root layout suele ser menos dinámico. Entonces, el archivo global-error.js tiende a manejar errores generales mientras que error.js, cuyo uso es recomendado, permite un control más granular.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?