ローディングの作成
loading.tsxの作成
frontend/src/app/loading.tsx
const Loading = () => {
  return (
    <>
      <div className="flex min-h-screen items-center justify-center">
        <div className="h-12 w-12 animate-spin rounded-full border-t-4 border-blue-500"></div>
      </div>
    </>
  );
};
export default Loading;
layout.tsxにタグを追加 
frontend/src/app/layout.tsx
import type { Metadata } from 'next';
import { Geist, Geist_Mono } from 'next/font/google';
import './globals.css';
import Header from './components/Header';
import Footer from './components/Footer';
import { Suspense } from 'react'; // <- 追加
import Loading from './loading'; // <- 追加
...(略)...
export default function RootLayout({
...(略)...
  return (
...(略)...
        <div className="flex min-h-screen flex-col">
          <Header />
          <main className="flex-grow">
            <Suspense fallback={<Loading />}>{children}</Suspense> {/* <- 修正 */}
          </main>
          <Footer />
        </div>
...(略)...
  );
}
ローディングの確認
frontend/src/services/movies/getMovie.ts
...(略)...
const getMovie = async (movieId: number): Promise<{ movie: Movie }> => {
  await new Promise((resolve) => setTimeout(resolve, 1000)); // <- 追加
  return await fetcher(`${context.apiRootUrl?.replace(/\/$/g, '')}/movies/${movieId}/`, {
...(略)...
  });
};
export default getMovie;
ブラウザで下記URLにアクセスすると、ページが読み込まれるまでの間、ローディングのアニメーションが表示されます。
確認できたら、追加した行は削除してください。
参考
- 【Next.js13】最新バージョンのNext.js13をマイクロブログ構築しながら基礎と本質を学ぶ講座 | Udemy
    
- ローディング用ページを作成して遅延した際のローディングを実装してみよう
 
 - Suspense – React
 - Routing: Loading UI and Streaming | Next.js