--- name: install-start description: >- Installs and wires the npm package @rsc-boundary/start into a TanStack Start app (dependencies, root route provider, optional explicit markers). Use when the user wants to add RSC Boundary to a TanStack Start / TanStack Router app, or set up server/client boundary devtools with TanStack. --- # Install RSC Boundary in a TanStack Start app **Package:** `@rsc-boundary/start` on npm. ## Prerequisites - **`@tanstack/react-start`** 1+ - **React** 19+ and **react-dom** 19+ (peer dependencies) If versions are older, say so and recommend upgrading before installing. ## 1. Install the dependency Use the project's package manager: ```bash pnpm add @rsc-boundary/start ``` ```bash npm install @rsc-boundary/start ``` ```bash yarn add @rsc-boundary/start ``` ### Monorepo / local development If the user is working inside this repository and consuming the package from the workspace, use the workspace protocol: ```json "@rsc-boundary/start": "workspace:*" ``` Ensure the packages are built (`pnpm --filter @rsc-boundary/start build`, which also builds core) before the app typechecks against `dist/`. ## 2. Add the provider to the root route Edit the root route file (`app/routes/__root.tsx`). 1. Import the provider: ```tsx import { RscBoundaryProvider } from "@rsc-boundary/start"; ``` 2. Wrap `` (or `{children}`) inside `` with ``. **Minimal pattern:** ```tsx import { RscBoundaryProvider } from "@rsc-boundary/start"; import { Outlet, createRootRoute } from "@tanstack/react-router"; import { Meta, Scripts } from "@tanstack/react-start"; export const Route = createRootRoute({ component: RootComponent, }); function RootComponent() { return ( ); } ``` Preserve existing structure: ``, ``, ``, and any other layout UI stay as they are—only add the provider around the main content as appropriate. ## 3. Behavior to set expectations - **Development:** A small control (pill) appears in the bottom-left; toggling it highlights client vs server regions. No changes are required in individual route components. - **Production:** The provider is a no-op (children only). Devtools never mount in production builds. ## 4. Optional API (only if the user asks) From `@rsc-boundary/start` the app can also use: - `RscServerBoundaryMarker` / `SERVER_BOUNDARY_DATA_ATTR` — explicit server region labels, useful when heuristic detection misses or mislabels a subtree - `RscDevtoolsStart` — advanced mounting without the provider wrapper - `createRscBoundaryProvider` — factory for custom wiring (re-exported from `@rsc-boundary/core`) Prefer `RscBoundaryProvider` unless the user's setup requires splitting these. **Explicit marker example:** ```tsx import { RscServerBoundaryMarker } from "@rsc-boundary/start"; // In a server-rendered component:
...
``` ## 5. Verify - Run `pnpm dev` (or `vinxi dev`). - Open the app in the browser; confirm the RSC Boundary control appears and toggling highlights boundaries. - Navigate between routes; the MutationObserver should re-scan automatically. ## Troubleshooting (brief) - **Peer dependency warnings:** Align `react` and `react-dom` to ^19. - **Types / module not found:** Ensure install completed and, for workspace usage, that packages are built. - **Nothing in production:** Expected; devtools are development-only. - **Framework internals still visible in panel:** Open an issue with the component name so it can be added to the `startAdapter` internals list.