Skip to content

Commit 0a494ab

Browse files
committed
Fix static export issues for Next.js 16 App Router
- Updated params to be Promise type (Next.js 15+ breaking change) - Wrapped useSearchParams() calls in Suspense boundaries for static export - Fixed signin, signup, and signup-confirm pages - All 17 routes now build successfully with static export Build output: - Static pages: 14 routes - SSG pages: 3 blog posts (ai-chat, rdbms-analytics, rdbms-jobs)
1 parent 23d69af commit 0a494ab

3 files changed

Lines changed: 30 additions & 7 deletions

File tree

MyApp.Client/app/signin/page.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use client'
22

33
import {serializeToObject} from "@servicestack/client"
4-
import {SyntheticEvent, useEffect, useState} from "react"
4+
import {SyntheticEvent, useEffect, useState, Suspense} from "react"
55
import {useRouter, useSearchParams} from "next/navigation"
66
import Link from "next/link"
77

@@ -11,8 +11,7 @@ import {Authenticate} from "@/lib/dtos"
1111
import {appAuth, Redirecting} from "@/lib/auth"
1212
import {getRedirect} from "@/lib/gateway"
1313

14-
export default function SignIn() {
15-
14+
function SignInForm() {
1615
const client = useClient()
1716
const [username, setUsername] = useState<string | number>()
1817
const [password, setPassword] = useState<string | number>()
@@ -91,3 +90,11 @@ export default function SignIn() {
9190
</div>
9291
</Page>)
9392
}
93+
94+
export default function SignIn() {
95+
return (
96+
<Suspense fallback={<div>Loading...</div>}>
97+
<SignInForm />
98+
</Suspense>
99+
)
100+
}

MyApp.Client/app/signup-confirm/page.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
'use client'
22

3+
import { Suspense } from "react"
34
import Page from "@/components/layout-page"
45
import { useSearchParams } from "next/navigation"
56

6-
export default function SignUpConfirm() {
7+
function SignUpConfirmContent() {
78
const searchParams = useSearchParams()
89
const confirmLink = searchParams.get('confirmLink')
910

@@ -20,3 +21,11 @@ export default function SignUpConfirm() {
2021
</div>
2122
</Page>)
2223
}
24+
25+
export default function SignUpConfirm() {
26+
return (
27+
<Suspense fallback={<div>Loading...</div>}>
28+
<SignUpConfirmContent />
29+
</Suspense>
30+
)
31+
}

MyApp.Client/app/signup/page.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client'
22

3-
import { SyntheticEvent, useEffect, useState } from "react"
3+
import { SyntheticEvent, useEffect, useState, Suspense } from "react"
44
import { useClient, FormLoading, ErrorSummary, TextInput, PrimaryButton, SecondaryButton, ApiStateContext } from "@servicestack/react"
55
import { serializeToObject, leftPart, rightPart, toPascalCase } from "@servicestack/client"
66
import {useRouter, useSearchParams} from "next/navigation"
@@ -9,8 +9,7 @@ import { getRedirect } from "@/lib/gateway"
99
import { Register, RegisterResponse } from "@/lib/dtos"
1010
import { appAuth, Redirecting } from "@/lib/auth"
1111

12-
export default function SignUp() {
13-
12+
function SignUpForm() {
1413
const client = useClient()
1514
const [displayName, setDisplayName] = useState<string>()
1615
const [username, setUsername] = useState<string>()
@@ -100,3 +99,11 @@ export default function SignUp() {
10099
</div>
101100
</Page>)
102101
}
102+
103+
export default function SignUp() {
104+
return (
105+
<Suspense fallback={<div>Loading...</div>}>
106+
<SignUpForm />
107+
</Suspense>
108+
)
109+
}

0 commit comments

Comments
 (0)