Loading...
Loading...
MUST be used when migrating an existing React app to Dune, or when DuneAuthProvider is missing from the app. This skill installs the @cognite/dune package, wraps the app in DuneAuthProvider, configures the Vite plugin, and sets up the useDune hook. Triggers: migrate to Dune, add Dune auth, DuneAuthProvider, useDune, Dune setup, setup auth, missing auth provider, CDF authentication, Fusion iframe auth.
npx skill4agent add cognitedata/dune-skills setup-dune-authDuneAuthProviderpackage.jsonpackageManagersrc/main.tsxsrc/index.tsxsrc/main.tsvite.config.tsvite.config.jssrc/App.tsx@cognite/dunepackage.jsonDuneAuthProviderfusionOpenPlugin@tanstack/react-querypackage.json| Package | Purpose |
|---|---|
| Auth provider, useDune hook, Vite plugin |
| CogniteClient for CDF API access |
| Required peer dependency for Dune |
| Package | Purpose |
|---|---|
| HTTPS in local dev (required for Fusion iframe auth) |
pnpm add @cognite/dune @cognite/sdk @tanstack/react-query && pnpm add -D vite-plugin-mkcertnpm install @cognite/dune @cognite/sdk @tanstack/react-query && npm install -D vite-plugin-mkcertyarn add @cognite/dune @cognite/sdk @tanstack/react-query && yarn add -D vite-plugin-mkcertvite.config.tsfusionOpenPluginmkcertimport { fusionOpenPlugin } from "@cognite/dune/vite";
import mkcert from "vite-plugin-mkcert";mkcert()fusionOpenPlugin()pluginsexport default defineConfig({
base: "./",
plugins: [react(), mkcert(), fusionOpenPlugin(), /* ...other plugins */],
server: {
port: 3001,
},
worker: {
format: "es",
},
});base: "./"mkcert()fusionOpenPlugin()pnpm devserver.port: 3001worker.format: "es"src/main.tsxDuneAuthProviderQueryClientProviderimport { DuneAuthProvider } from "@cognite/dune";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.tsx";
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 5 * 60 * 1000,
gcTime: 10 * 60 * 1000,
},
},
});
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<QueryClientProvider client={queryClient}>
<DuneAuthProvider>
<App />
</DuneAuthProvider>
</QueryClientProvider>
</React.StrictMode>
);DuneAuthProviderQueryClientProviderDuneAuthProvider<App />DuneAuthProviderQueryClientProviderQueryClientProviderDuneAuthProviderDuneAuthProvidernew CogniteClient(...)useDuneimport { useDune } from "@cognite/dune";
function MyComponent() {
const { sdk, isLoading, error } = useDune();
if (isLoading) return <div>Loading...</div>;
if (error) return <div>Error: {error}</div>;
// sdk is an authenticated CogniteClient — use it directly
// e.g. sdk.timeseries.list(), sdk.assets.list(), etc.
}| Field | Type | Description |
|---|---|---|
| | Authenticated Cognite SDK instance |
| | |
| | Error message if auth fails |
DuneAuthProvideruseDuneCogniteClientDuneAuthProviderVITE_CDF_PROJECTVITE_CDF_CLUSTER@cognite/dune@cognite/sdk@tanstack/react-queryDuneAuthProviderfusionOpenPlugin()mkcert()useDune()CogniteClientpnpm dev