diff --git a/apps/nextjs/app/errors/error.tsx b/apps/nextjs/app/errors/error.tsx
new file mode 100644
index 0000000..0cbf448
--- /dev/null
+++ b/apps/nextjs/app/errors/error.tsx
@@ -0,0 +1,14 @@
+'use client';
+import { useEffect } from 'react';
+import { track } from '@vercel/analytics';
+
+export default function Error({ error }: { error: Error; reset: () => void }) {
+ useEffect(() => {
+ track('thrown-error', {
+ message: error.message,
+ time: new Date().toLocaleString(),
+ });
+ }, [error.message]);
+
+ return
Error
;
+}
diff --git a/apps/nextjs/app/errors/page.tsx b/apps/nextjs/app/errors/page.tsx
new file mode 100644
index 0000000..3de1d5e
--- /dev/null
+++ b/apps/nextjs/app/errors/page.tsx
@@ -0,0 +1,10 @@
+'use client';
+import { useEffect } from 'react';
+
+export default function ErrorPage() {
+ useEffect(() => {
+ throw new Error('Error!');
+ }, []);
+
+ return I should error
;
+}
diff --git a/apps/nextjs/app/layout.tsx b/apps/nextjs/app/layout.tsx
index 27c627c..a15e54f 100644
--- a/apps/nextjs/app/layout.tsx
+++ b/apps/nextjs/app/layout.tsx
@@ -1,3 +1,5 @@
+import { Analytics } from '@vercel/analytics/react';
+
export const metadata = {
title: 'Next.js',
description: 'Generated by Next.js',
@@ -10,6 +12,7 @@ export default function RootLayout({
}) {
return (
+
{children}
);