v0で作ったUIをNext.jsへ組み込むときは、生成されたpageを丸ごとコピーするより、既存projectのrouting、component、data flow、依存関係に合わせて必要な部品を小さく統合します。既存repositoryをv0で扱える条件が揃っているなら、GitHubからimportして現在のcodebase上で作業する方法もあります。どちらを選んでも、画面がPreviewで表示されたことだけでは統合完了になりません。
最初に確認するのは、App RouterかPages Routerか、共通layoutはどこか、どの処理がserver側で行われ、どの操作がbrowser上のstateを必要とするかです。ここが曖昧なままpage全体を置き換えると、navigation、認証、データ取得まで変わり、見た目の修正が思わぬ障害につながります。以下では、既存一覧へ検索と詳細UIを加えるケースを例に、受け入れ前の確認順をまとめます。
目次
先に既存routeとデータ契約を読む
対象routeのpage、layout、共通componentを確認し、同じ画面で使う型やデータ取得関数を探します。URLの命名、query parameter、戻る操作、breadcrumb、エラー表示などは既存の約束に合わせます。生成側に仮のURLやサンプルページがあるなら、公開routeへ置き換え、存在しないpathへ飛ばないか確認します。
一覧へ検索欄を追加する例では、一覧データがどこで取得され、既にfilterやpaginationがあるかを見ます。検索してからページ分割するのか、現在のページだけで検索するのかで結果が変わります。画面からrouteだけを見て判断せず、データの全件・部分取得も把握してください。APIがページ単位の結果しか返さない場合に、ブラウザー側だけで全件検索できるとは限りません。
既存repositoryをv0へimportするなら、対象repository、branch、connected projectを操作画面で確かめます。公式v0 DocsはGitHub repositoryを使うcodebase workflowを案内していますが、実際の権限や接続先はアカウント設定に依存します。未保存の変更がある場合は先に差分を確認します。別projectでUIを生成して移植する場合は、使用package、参照asset、環境変数名、想定APIを一覧化します。
pageごと移さず統合境界を選ぶ
生成されたpageをそのまま置き換える前に、受け入れるUIを特定します。既存のdata fetchingや認証は残し、検索欄・結果行・詳細drawerだけを取り込めるか検討します。page全体を移すと、既存のloading、permission、breadcrumb、error状態が意図せず置き換わることがあります。
componentの分け方は再利用、独立状態、別々の検証が必要かで決めます。生成側の小さなcomponentを全て残す必要はありませんが、一つの巨大な画面へ戻すのも扱いにくくなります。既存のbutton、form、design tokenがあるなら、似た見た目の部品を二重に維持しないようにします。共通componentを変える場合は使用routeを調べてから影響を確認します。
ServerとClientの責務を切り分ける
検索入力やmodalの開閉など、browser操作に必要な状態だけをclient側に置く考え方がありますが、具体的な境界は既存architectureを優先します。生成codeがブラウザーAPIやevent handlerを使っていないか確認し、必要のない親pageまでclient化しないようにします。データ取得や認証がserver側にあるなら、その処理をUI都合でclientから直接呼ぶ構造に変えません。
clientへ渡すデータにも注意します。秘密値や利用者に許可されていないデータがbundleへ含まれないか、環境変数の接頭辞だけでなく実際にどこへ渡るかを追います。認証、個人情報、API tokenが関わる場合は、UIの移植とは別にsecurity上の検証が必要です。サンプル値と本番データを混同しないよう、mock dataを使う画面はpreview限定か、画面にサンプルと分かる表示を置きます。
data shapeと状態を合わせる
生成UIが想定するfield名や型と、既存APIのresponseを比較します。例としてUI側がnameやstatusを期待しても、APIがdisplayNameやstateを返す場合があります。型エラーをanyで消すのではなく、実データのshape、null、欠損fieldを確認し、必要なら明確な変換境界を置きます。
空配列、loading、通信失敗、権限不足は別々の状態です。データが0件なら次に登録や条件解除を案内できるかもしれません。通信に失敗した場合は再試行が必要です。権限不足では管理者への依頼が次の行動になります。これらを同じ「データなし」表示にまとめると、利用者の判断を誤らせます。
mock dataは画面の骨格と操作を確認するために使えますが、接続後に残っていないか確認します。実データへ置き換える際はfield、日付、単位、並び順、検索対象を確かめ、仮値が実績のように表示されないようにします。
まずは使ってみる
記事の文脈に合うToolへ進めます。報酬の有無で見た目は変えていません。
v0
dependencyと既存UIを整理する
v0がchart、icon、formなどのpackageを追加した場合、package.jsonとlockfileの変更を確認します。既存projectに同等のlibraryがあるなら、新規依存を足す理由を見ます。依存を増やすとbundle、保守、更新の負担が増えるため、デザイン差だけなら既存部品に寄せる選択肢があります。
生成されたCSSやstyleが共通tokenを無視して固定色・固定幅を追加していないかも確認します。ページ一つでは問題なく見えても、長い日本語、利用者名、エラー文、画面幅で崩れることがあります。design systemへ合わせる変更と、既存の一部routeだけに閉じる変更を分けて判断します。
Next.js統合用の確認表
表は横にスクロールできます
| 確認箇所 | 先に見ること | 失敗例 |
|---|---|---|
| route | 直URL、内部リンク、query | 404や条件の消失 |
| component | 再利用と責務 | headerやformの二重表示 |
| data | field、型、null、0件 | mock値が本番に残る |
| state | loading、error、submit | 古い結果が残る |
| security | 認証、権限、秘密値 | clientへ不要データを渡す |
| style | token、長文、小画面 | overflow、button clipping |
| build | type、lint、test、export | Previewだけ動いてbuild失敗 |
この表は確認漏れを防ぐためのものです。全projectで全checkが必要という意味ではなく、既存CIと変更の範囲に合わせて実施します。
Diff・Preview・testを順に回す
差分では対象component以外にlayout、route、environment variable、middleware、API handlerが変わっていないか見ます。GitHub連携が変更をbranchへまとめても、その内容をreviewする必要は残ります。不要なファイル変更があるなら理由を調べ、今回の目的に必要なものだけを残します。
Previewでは正常データだけでなく、長い文字、0件、API失敗、画面幅、直接URLを確認します。既存画面から遷移する場合と、routeを直接開く場合の両方を試します。Preview上の環境変数にだけ依存していないか、production相当buildで再確認します。
テストはrepositoryの既存scriptとCIを基準に選びます。検索なら一致、0件、解除、既存filterとの併用、paginationとの順序が確認対象です。見た目だけの修正でも、type、lint、buildのうち関係する検査を通します。実行していない検査は完了済みと書かず、未確認として残します。
AIものさしの判断
v0 UIは既存Next.jsアプリの設計を置き換える正本ではありません。受け入れ側のroute、data contract、server/client境界、design systemを優先し、必要な部品を選んで統合します。
公開前の完了条件は、表示だけではなく、主要操作が既存データと契約に合い、空・loading・errorも扱え、必要なtype・test・build確認が終わった状態です。URLや権限、認証の変更が必要ならUI統合に混ぜず、影響を把握してから別判断にします。
統合後に確認するユーザーの流れ
画面を直接開いて表示を確認したあと、一覧から検索、結果選択、詳細表示、戻る操作まで一続きで試します。検索条件がURLに保存される設計なら、再読込や共有後も条件が保たれるかを確認します。条件が保存されない仕様なら、戻る操作でどの状態へ戻るかを明確にします。ここは生成画面の見栄えでは判断できない、既存routeとの接点です。
本番データや権限が関わる確認はpreviewだけで済ませず、既存の安全な検証環境と手順を使います。
引用・データ出典
公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。
確認日:2026-10-08
v0 Docs:GitHub https://api2.v0.dev/docs/github(新しいタブで開く)
v0 Docs:Code editing https://v0.app/docs/code-editing(新しいタブで開く)
v0 Docs:Projects https://api2.v0.dev/docs/projects(新しいタブで開く)
