diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..a45fd52
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+24
diff --git a/package.json b/package.json
index ecb76c3..3768fc1 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
"seed": "NEXT_PUBLIC_USE_EMULATORS=true npx tsx src/lib/seed.ts"
},
"engines": {
- "node": "22.21.x"
+ "node": "24.x"
},
"dependencies": {
"@silk-hq/components": "^0.10.0",
diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx
index 4d5b7a7..f7087a7 100644
--- a/src/app/about/page.tsx
+++ b/src/app/about/page.tsx
@@ -1,8 +1,9 @@
import Image from 'next/image'
+import type { ReactElement } from 'react'
import Footer from '@/components/shared/footer'
import StaticHeader from '@/components/shared/staticHeader'
-const About = (): JSX.Element => {
+const About = (): ReactElement => {
return (
diff --git a/src/app/changelog/[slug]/page.tsx b/src/app/changelog/[slug]/page.tsx
index 50c1721..aea5aec 100644
--- a/src/app/changelog/[slug]/page.tsx
+++ b/src/app/changelog/[slug]/page.tsx
@@ -1,4 +1,5 @@
import { notFound } from 'next/navigation'
+import type { ReactElement } from 'react'
import BlogFooter from '@/components/blog/blogFooter'
import PostFooter from '@/components/blog/postFooter'
import Footer from '@/components/shared/footer'
@@ -10,7 +11,7 @@ interface PageProps {
}>
}
-const ChangelogPost = async ({ params }: PageProps): Promise
=> {
+const ChangelogPost = async ({ params }: PageProps): Promise => {
const { slug } = await params
// For now, redirect to 404 for unknown slugs
diff --git a/src/app/changelog/page.tsx b/src/app/changelog/page.tsx
index 89154bd..d1506db 100644
--- a/src/app/changelog/page.tsx
+++ b/src/app/changelog/page.tsx
@@ -1,12 +1,13 @@
'use client'
import Image from 'next/image'
+import type { ReactElement } from 'react'
import BlogFooter from '@/components/blog/blogFooter'
import PostFooter from '@/components/blog/postFooter'
import Footer from '@/components/shared/footer'
import StaticHeader from '@/components/shared/staticHeader'
-const Changelog = (): JSX.Element => {
+const Changelog = (): ReactElement => {
return (
diff --git a/src/app/emergency/[alertId]/page.tsx b/src/app/emergency/[alertId]/page.tsx
index a4edec3..afdd4fd 100644
--- a/src/app/emergency/[alertId]/page.tsx
+++ b/src/app/emergency/[alertId]/page.tsx
@@ -2,12 +2,12 @@
import Link from 'next/link'
import { useParams } from 'next/navigation'
-import { useEffect, useState } from 'react'
+import { type ReactElement, useEffect, useState } from 'react'
import EmergencyInfo from '@/components/emergency/emergencyInfo'
import Footer from '@/components/shared/footer'
import { useEmergencyUserQuery } from '@/lib/hooks/useEmergencyUserQuery'
-const Emergency = (): JSX.Element => {
+const Emergency = (): ReactElement => {
const [mounted, setMounted] = useState(false)
const params = useParams()
const alertId = params.alertId as string
diff --git a/src/app/emergency/print/page.tsx b/src/app/emergency/print/page.tsx
index 903b70a..bd656c0 100644
--- a/src/app/emergency/print/page.tsx
+++ b/src/app/emergency/print/page.tsx
@@ -1,9 +1,10 @@
'use client'
+import type { ReactElement } from 'react'
import EmergencyCard from '@/components/home/emergencyCard'
import Logo from '@/components/shared/logo'
-export default function Print(): JSX.Element {
+export default function Print(): ReactElement {
// TODO(michael) Could improve this by determining the user on the server side
// and redirecting before hitting this page. Similar to how Lee Robinson explains
// it here https://www.youtube.com/watch?v=NSR_Y_rm_zU
diff --git a/src/app/head.tsx b/src/app/head.tsx
index 3ac37f6..c1d77e3 100644
--- a/src/app/head.tsx
+++ b/src/app/head.tsx
@@ -1,3 +1,5 @@
+import type { ReactElement } from 'react'
+
const googleRichResultsSchema = {
'@context': 'https://schema.org',
'@type': 'Organization',
@@ -5,7 +7,7 @@ const googleRichResultsSchema = {
logo: 'https://hemolog.com/images/hemolog-logo.png',
}
-export default function Head(): JSX.Element {
+export default function Head(): ReactElement {
return (