setup-flows-auth

MUST be used when migrating an existing React app to Flows, or when no Flows auth is wired up. Detects classic vs Apps API flow from `app.json` `infra` field, installs the right packages, and wires up the entry file. No-op when a valid auth setup is already in place. Triggers: migrate to Flows, add

By cognitedata · 1,885 installs

npx skills add cognitedata/builder-skills --skill setup-flows-auth

Source repository · Upstream listing

Set Up Flows Authentication Wire a React app for Flows auth so it can talk to CDF inside Fusion. Two flows exist; pick one based on app.json . Pick the flow Read app.json if present: app.json infra Flow Auth source Extra package "appsApi" Apps API (new Fusion app host) connectToHostApp from @cognite/app sdk @cognite/app sdk missing / other Classic (legacy Files API) DuneAuthProvider + useDune() from @cognite/dune — No app.json ? Ask the user. Default to Apps API — it's the default for npx @cognite/cli@latest apps create . Step 1 — Read state, decide whether to act Read package.json , src/main.tsx (or src/index.tsx ), vite.config.ts , app.json . A valid setup already exists if any of these is true — in which case do nothing and report no op: Classic : <DuneAuthProvider from @cognite/dune wraps <App / in the entry file. Apps API, provider pattern : <CogniteSdkProvider from @cognite/app sdk/react wraps the app (in App.tsx or main.tsx ), and nested components consume the client via useCogniteSdk() . Requires @cognite/app sdk = 0.5.1 . Detect the package manager from the lock file ( pnpm lock.yaml → pnpm, yarn.lock → yarn, otherwise npm). Step 2 — Install missing deps Classic flow: Package Type @cognite/dune runtime @cognite/sdk runtime @tanstack/react query runtime vite plugin mkcert dev Apps API flow: Package Type @cognite/app sdk runtime @cognite/sdk runtime @tanstack/react query runtime vite plugin mkcert dev Skip anything already in package.json . Use the detected package manager ( pnpm add , npm install , yarn add ; D / save dev for dev deps). Step 3 — Vite config Add only what's missing. Don't remove existing plugins. Classic flow Apps API flow base: "./" — required for Fusion iframe deployment. mkcert() — provides HTTPS for the dev server (the Fusion parent is HTTPS). fusionOpenPlugin() — opens the dev URL inside Fusion automatically. manifestCspPlugin() (Apps API only) — enforces the CSP declared in manifest.json ; must be first. server.port: 3001 — convention; the plugin falls back to 3001 if no port is set. Step 4 — Wire up the entry file and component Classic flow src/main.tsx : In components, use useDune() : Apps API flow (generator default, @cognite/app sdk = 0.5.1 ) src/main.tsx does not wrap in any auth provider — auth is handled inside App.tsx : src/App.tsx uses CogniteSdkProvider from @cognite/app sdk/react . The provider handles the Comlink handshake, loading, and error states internally. Nested components read the client via useCogniteSdk() : useCogniteSdk() throws if called outside CogniteSdkProvider — always nest it inside. Step 5 — Clean up superseded code Remove only what's now redundant: Custom CDF auth providers/hooks Manual CogniteClient instantiation OIDC/token management code CDF env vars ( VITE CDF PROJECT , VITE CDF CLUSTER , etc.) — Flows/the host provide these If unsure, leave it and flag to the user.