next-app
作者: contentstack
App Router structure, React components, client vs server, and rendering patterns in kickstart-next.
npx skills add https://github.com/contentstack/kickstart-next --skill next-appNext.js app – kickstart-next
When to use
- You are adding or changing routes, layouts, or UI components.
- You are deciding client vs server components or how preview mode loads data.
Instructions
App Router
- app/layout.tsx is the root layout; app/page.tsx is the home route.
- app/page.tsx is an async Server Component when not in preview: it calls
getPage("/")and passes the result to the default import from@/components/Page.
Preview path (client)
- components/Preview.tsx is a Client Component (
"use client"). It initializes live preview inuseEffect, subscribes toContentstackLivePreview.onEntryChange, and refetches viagetPage(path)when the URL path changes.
Page UI component
- components/Page.tsx default export is imported elsewhere as
Page(import Page from "@/components/Page"). The function implementing it is namedContentDisplayinside the file; treat the public name asPagewhen wiring props. - It renders title, description,
next/imagefor assets, sanitized rich HTML viaisomorphic-dompurifyanddangerouslySetInnerHTML, and modular blocks withVB_EmptyBlockParentClassfor empty Visual Builder state. - Spread
page?.$/ block$attributes onto DOM nodes so Live Preview can bind fields.
Images
- Use
next/imagefor remote images. Remote hostnames must stay allowed in next.config.mjs (images.remotePatternsand optional env hostname).
Imports
- Path alias
@/*maps to the repo root per tsconfig.json (e.g.@/lib/contentstack,@/components/Page).