History

Wrap useSearchParams consumers in Suspense boundaries

Next.js requires components using useSearchParams to be wrapped in a Suspense boundary for static page generation. Fixes build failure on /approvals (and preemptively /organization).

Rhys Sullivan committed 9 months ago

Commit 002c0ef1 parent 86d54b02 files · +13 −4Browse files

Unified · Split

2 files
  1. executor/apps/web/src/app/organization/page.tsx +6 −1
  2. executor/apps/web/src/components/app-shell.tsx +7 −3
executor/apps/web/src/app/organization/page.tsx+6−1
@@ -1,5 +1,10 @@
1import { Suspense } from "react";
1import { OrganizationSettingsView } from "@/components/organization-settings-view";2import { OrganizationSettingsView } from "@/components/organization-settings-view";
2 3
3export default function OrganizationPage() {4export default function OrganizationPage() {
4 return <OrganizationSettingsView />;5 return (
6 <Suspense>
7 <OrganizationSettingsView />
8 </Suspense>
9 );
5}10}
executor/apps/web/src/components/app-shell.tsx+7−3
@@ -1,6 +1,6 @@
1"use client";1"use client";
2 2
3import { useEffect, useMemo, useState, type FormEvent } from "react";3import { Suspense, useEffect, useMemo, useState, type FormEvent } from "react";
4import Link from "next/link";4import Link from "next/link";
5import { usePathname, useRouter, useSearchParams } from "next/navigation";5import { usePathname, useRouter, useSearchParams } from "next/navigation";
6import { useMutation } from "convex/react";6import { useMutation } from "convex/react";
@@ -513,7 +513,9 @@ function Sidebar() { · 506 unmodified lines
513 <NavLinks />513 <NavLinks />
514 </div>514 </div>
515 <div className="pb-4">515 <div className="pb-4">
516 <SessionInfo />516 <Suspense>
517 <SessionInfo />
518 </Suspense>
517 </div>519 </div>
518 </aside>520 </aside>
519 );521 );
@@ -542,7 +544,9 @@ function MobileHeader() { · 22 unmodified lines
542 <NavLinks onClick={() => setOpen(false)} />544 <NavLinks onClick={() => setOpen(false)} />
543 </div>545 </div>
544 <div className="mt-auto pb-4">546 <div className="mt-auto pb-4">
545 <SessionInfo />547 <Suspense>
548 <SessionInfo />
549 </Suspense>
546 </div>550 </div>
547 </SheetContent>551 </SheetContent>
548 </Sheet>552 </Sheet>