# rsc-kit > React Server Components as a Vite plugin — deploy to Bun, Node, Workers, Vercel or Deno. Index: https://docs.rsc-kit.dev/llms.txt # Coming from Next.js > What carries over unchanged, what to rename, and what is different on purpose. Source: https://docs.rsc-kit.dev/coming-from-next/ · Markdown: https://docs.rsc-kit.dev/coming-from-next/index.md Most of a Next.js app directory moves over as it is. This page is the rest, in the order a port meets it. ## What is the same The `app/` conventions are the same conventions: `layout.tsx`, `page.tsx`, `loading.tsx`, `error.tsx`, `not-found.tsx`, `route.ts`, `[slug]`, `[...path]`, `(group)`, `@slot` and `(.)intercept`. `"use client"` and `"use server"` mean what they mean in React. `cookies()` and `headers()` are async and have the same names. `redirect()`, `notFound()`, `generateStaticParams()` and `export const metadata` all exist. Streaming through `` works the same way, because it is React doing it. Copy `src/app` across first and fix imports second. Most files need only the imports. ## Imports | Next.js | here | | --- | --- | | `next/link` | `@rsc-kit/core/Link` — `href` is typed to your routes, and `search` to the page's schema | | `useRouter().push(url)` | `visit(url)` from `@rsc-kit/core/router`; `replace: true` for `.replace()` | | `useRouter().refresh()` | `refresh()` from `@rsc-kit/core/router` — or better, `revalidate()` from the action | | `usePathname()` | `@rsc-kit/core/usePathname` | | `useSearchParams()` | `@rsc-kit/core/useSearchParams`, or [nuqs](/guides/routing#search-params-as-state) with our adapter | | `useParams()` | the page's `params` prop, passed down | | `cookies()`, `headers()` from `next/headers` | the same names from `@rsc-kit/core/request` | | `redirect()` from `next/navigation` | `@rsc-kit/core/redirect` | | `notFound()` | `@rsc-kit/core/not-found` | | `revalidatePath()`, `revalidateTag()` | `revalidate('tag')` from `@rsc-kit/core/revalidate` — see below, it is narrower | | `Metadata` from `next` | `@rsc-kit/core/metadata` — `metadataBase`, `openGraph`, `twitter`, `icons` as you had them | | `next/font` | [Fontsource](/guides/fonts): install the font, import its CSS | | `next/image` | [unpic](/guides/images) for a CDN, `vite-imagetools` for files in the repo | | `next/script` | [a `