Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 19 additions & 10 deletions apps/web-roo-code/src/components/providers/providers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,27 @@
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
import { ThemeProvider } from "next-themes"

import { PostHogProvider } from "./posthog-provider"
// Lazily load PostHog on the client only so its ~40-60 KB bundle is
// split into a separate chunk that is fetched *after* the critical UI.
// This keeps the main bundle lean and improves First Contentful Paint.
import dynamic from "next/dynamic"

const PostHogProvider = dynamic(() => import("./posthog-provider").then((m) => m.PostHogProvider), {
// Disable SSR – analytics only runs in the browser.
ssr: false,
})

const queryClient = new QueryClient()

export const Providers = ({ children }: { children: React.ReactNode }) => {
return (
<QueryClientProvider client={queryClient}>
<PostHogProvider>
<ThemeProvider attribute="class" defaultTheme="dark" enableSystem={false}>
{children}
</ThemeProvider>
</PostHogProvider>
</QueryClientProvider>
)
return (
<QueryClientProvider client={queryClient}>
{/* PostHog loads on demand in a separate chunk */}
<PostHogProvider>
<ThemeProvider attribute="class" defaultTheme="dark" enableSystem={false}>
{children}
</ThemeProvider>
</PostHogProvider>
</QueryClientProvider>
)
}