+ Node view debug panel
+ Consent: {`${consent}`}
+ Profile ID: {profileId}
+ Node view events seen: {nodeViewEventsSeen}
+ Node target present: {`${targetSnapshot !== undefined}`}
+ Matching node elements: {runtimeSnapshot.matchingNodeElementsCount}
+ autoTrackNodeInteraction.views: {`${runtimeSnapshot.autoTrackNodeInteractionViews}`}
+ nodeViewRuntime started: {`${runtimeSnapshot.runtimeStarted}`}
+ nodeId: {targetSnapshot?.nodeId}
+ entityId: {targetSnapshot?.entityId}
+ entityKind: {targetSnapshot?.entityKind}
+ optimizationId: {targetSnapshot?.optimizationId}
+ variant: {targetSnapshot?.variant}
+
+ Last blocked:{' '}
+ {latestBlockedNodeView && `${latestBlockedNodeView.method}:${latestBlockedNodeView.reason}`}
+
+ Last exo_view viewId: {latestNodeViewEvent?.viewId}
+ Last exo_view duration: {latestNodeViewEvent?.viewDurationMs}ms
+ Insights events are queued by the SDK; network emission can lag behind event detection.
+
+ )
+}
diff --git a/implementations/react-web-sdk/src/config/routes.ts b/implementations/react-web-sdk/src/config/routes.ts
index 27c95c63..516c92c8 100644
--- a/implementations/react-web-sdk/src/config/routes.ts
+++ b/implementations/react-web-sdk/src/config/routes.ts
@@ -1,2 +1,3 @@
export const HOME_PATH = '/'
+export const EXO_PATH = '/exo'
export const PAGE_TWO_PATH = '/page-two'
diff --git a/implementations/react-web-sdk/src/main.tsx b/implementations/react-web-sdk/src/main.tsx
index 03c6378d..16b1c450 100644
--- a/implementations/react-web-sdk/src/main.tsx
+++ b/implementations/react-web-sdk/src/main.tsx
@@ -5,7 +5,8 @@ import { type ReactElement, StrictMode, useState } from 'react'
import { createRoot } from 'react-dom/client'
import { createBrowserRouter, Navigate, Outlet, RouterProvider } from 'react-router-dom'
import App from './App'
-import { HOME_PATH } from './config/routes'
+import { EXO_PATH, HOME_PATH } from './config/routes'
+import { ExoPage } from './pages/ExoPage'
import { HomePage } from './pages/HomePage'
import { PageTwoPage } from './pages/PageTwoPage'
import { getContentfulClient } from './services/contentfulClient'
@@ -66,6 +67,7 @@ function RootLayout(): ReactElement {
experienceBaseUrl: EXPERIENCE_BASE_URL,
}}
trackEntryInteraction={{ views: true, clicks: true, hovers: true }}
+ autoTrackNodeInteraction={{ views: true }}
logLevel={resolveLogLevel()}
app={{
name: 'ContentfulOptimization SDK - React Web SDK Reference',
@@ -89,6 +91,7 @@ const router = createBrowserRouter([
element: