vybekiit 0.7.25 → 0.7.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +3891 -1301
- package/dist/global-skills/aws-cdk/SKILL.md +19 -5
- package/dist/global-skills/aws-cdk/references/fast-deployments.md +191 -0
- package/dist/global-skills/aws-cdk/references/troubleshooting-deployment.md +16 -0
- package/dist/global-skills/aws-cloudformation/SKILL.md +16 -26
- package/dist/global-skills/aws-cloudformation/references/check-cloudformation-template-compliance.script.md +7 -3
- package/dist/global-skills/aws-cloudformation/references/cloudformation-language-server.md +177 -0
- package/dist/global-skills/aws-cloudformation/references/cloudformation-pre-deploy-validation.script.md +8 -2
- package/dist/global-skills/aws-cloudformation/references/persist-template-context.script.md +5 -8
- package/dist/global-skills/aws-cloudformation/references/retrieve-template-context.script.md +1 -1
- package/dist/global-skills/aws-cloudformation/references/security-considerations.md +51 -0
- package/dist/global-skills/aws-cloudformation/references/troubleshoot-failed-stack.script.md +138 -0
- package/dist/global-skills/aws-cloudformation/references/{validate-cloudformation-template.script.md → validate-with-cfn-lint.script.md} +15 -27
- package/dist/global-skills/aws-cloudformation/references/validate-with-cloudformation-validate.script.md +181 -0
- package/dist/global-skills/aws-cloudformation/references/validation-tool-selection.md +44 -0
- package/dist/global-skills/aws-serverless/SKILL.md +9 -1
- package/dist/global-skills/aws-serverless/references/architecture.md +3 -1
- package/dist/global-skills/aws-serverless/references/lambda.md +3 -1
- package/dist/global-skills/aws-serverless/references/orchestration.md +1 -0
- package/dist/global-skills/better-auth-best-practices/SKILL.md +18 -8
- package/dist/global-skills/eas-app-stores/SKILL.md +31 -15
- package/dist/global-skills/eas-app-stores/agents/openai.yaml +2 -2
- package/dist/global-skills/eas-app-stores/references/ios-app-store.md +37 -32
- package/dist/global-skills/eas-app-stores/references/native-ios.md +167 -0
- package/dist/global-skills/eas-app-stores/references/play-store.md +3 -7
- package/dist/global-skills/eas-app-stores/references/testflight.md +39 -35
- package/dist/global-skills/eas-simulator/SKILL.md +48 -26
- package/dist/global-skills/eas-simulator/references/controllers.md +32 -3
- package/dist/global-skills/eas-simulator/references/run-your-app.md +34 -4
- package/dist/global-skills/eas-simulator/references/troubleshooting.md +8 -4
- package/dist/global-skills/eas-update/SKILL.md +146 -0
- package/dist/global-skills/eas-update/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-animation/RECIPES.md +2 -2
- package/dist/global-skills/expo-animation/SKILL.md +9 -2
- package/dist/global-skills/expo-brownfield/SKILL.md +18 -11
- package/dist/global-skills/expo-brownfield/agents/openai.yaml +2 -2
- package/dist/global-skills/expo-brownfield/references/brownfield-integrated.md +94 -69
- package/dist/global-skills/expo-brownfield/references/brownfield-isolated.md +40 -42
- package/dist/global-skills/expo-brownfield/references/comparison.md +5 -5
- package/dist/global-skills/expo-brownfield/references/feature-integration.md +163 -0
- package/dist/global-skills/expo-brownfield/references/troubleshooting.md +17 -17
- package/dist/global-skills/expo-brownfield/references/version-compatibility.md +40 -0
- package/dist/global-skills/expo-data-fetching/SKILL.md +27 -6
- package/dist/global-skills/expo-design-system/SKILL.md +27 -7
- package/dist/global-skills/expo-design-system/references/audit.md +7 -2
- package/dist/global-skills/expo-design-system/references/native-slop.md +74 -0
- package/dist/global-skills/expo-examples/SKILL.md +0 -1
- package/dist/global-skills/expo-examples/references/catalog.md +1 -1
- package/dist/global-skills/expo-migrate-module/SKILL.md +21 -10
- package/dist/global-skills/expo-migrate-module/references/compatibility.md +80 -23
- package/dist/global-skills/expo-migrate-module/references/migration-map.md +162 -11
- package/dist/global-skills/expo-native-ui/SKILL.md +25 -16
- package/dist/global-skills/expo-native-ui/agents/openai.yaml +2 -2
- package/dist/global-skills/expo-native-ui/references/controls.md +5 -46
- package/dist/global-skills/expo-native-ui/references/icons.md +21 -2
- package/dist/global-skills/expo-native-ui/references/media.md +15 -20
- package/dist/global-skills/expo-native-ui/references/visual-effects.md +12 -11
- package/dist/global-skills/expo-overview/SKILL.md +17 -12
- package/dist/global-skills/expo-router/SKILL.md +5 -3
- package/dist/global-skills/expo-router/references/tabs.md +5 -5
- package/dist/global-skills/expo-skill-eval/scripts/check-static.sh +0 -0
- package/dist/global-skills/expo-skill-eval/scripts/clean-fixture.sh +0 -0
- package/dist/global-skills/expo-skill-eval/scripts/latest-sdk.sh +0 -0
- package/dist/global-skills/expo-skill-eval/scripts/make-fixture.sh +0 -0
- package/dist/global-skills/expo-skill-eval/scripts/make-workspace.sh +0 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-android.sh +0 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-ios.sh +0 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-web.sh +0 -0
- package/dist/global-skills/expo-upgrade/SKILL.md +3 -1
- package/dist/global-skills/expo-web-to-native/references/false-friends.md +2 -2
- package/dist/global-skills/expo-web-to-native/references/native-patterns.md +1 -1
- package/dist/global-skills/firebase-ai-logic-basics/SKILL.md +13 -16
- package/dist/global-skills/firebase-ai-logic-basics/references/ios_setup.md +4 -5
- package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_android.md +4 -4
- package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_web.md +3 -3
- package/dist/global-skills/firebase-auth-basics/SKILL.md +11 -6
- package/dist/global-skills/firebase-auth-basics/references/client_sdk_android.md +4 -5
- package/dist/global-skills/firebase-auth-basics/references/client_sdk_web.md +3 -3
- package/dist/global-skills/firebase-auth-basics/references/flutter_setup.md +24 -25
- package/dist/global-skills/firebase-auth-basics/references/security_rules.md +4 -2
- package/dist/global-skills/firebase-crashlytics/references/android_setup.md +7 -4
- package/dist/global-skills/firebase-crashlytics/references/ios_setup.md +2 -3
- package/dist/global-skills/firebase-data-connect/SKILL.md +2 -1
- package/dist/global-skills/firebase-data-connect/examples.md +4 -4
- package/dist/global-skills/firebase-data-connect/reference/config.md +5 -4
- package/dist/global-skills/firebase-data-connect/reference/realtime.md +1 -2
- package/dist/global-skills/firebase-data-connect/reference/sdk_flutter.md +2 -2
- package/dist/global-skills/firebase-data-connect/reference/sdk_ios.md +2 -2
- package/dist/global-skills/firebase-data-connect/reference/sdk_web.md +17 -6
- package/dist/global-skills/firebase-data-connect/reference/security.md +5 -5
- package/dist/global-skills/firebase-data-connect/templates.md +2 -1
- package/dist/global-skills/firebase-firestore/SKILL.md +20 -8
- package/dist/global-skills/firebase-firestore/references/enterprise/android_sdk_usage.md +5 -4
- package/dist/global-skills/firebase-firestore/references/enterprise/data_model.md +12 -3
- package/dist/global-skills/firebase-firestore/references/enterprise/indexes.md +16 -18
- package/dist/global-skills/firebase-firestore/references/enterprise/provisioning.md +1 -1
- package/dist/global-skills/firebase-firestore/references/enterprise/python_sdk_usage.md +5 -1
- package/dist/global-skills/firebase-firestore/references/enterprise/web_sdk_usage.md +7 -7
- package/dist/global-skills/firebase-firestore/references/standard/android_sdk_usage.md +5 -5
- package/dist/global-skills/firebase-firestore/references/standard/flutter_setup.md +4 -4
- package/dist/global-skills/firebase-firestore/references/standard/indexes.md +16 -18
- package/dist/global-skills/firebase-firestore/references/standard/provisioning.md +1 -1
- package/dist/global-skills/firebase-remote-config-basics/SKILL.md +0 -5
- package/dist/global-skills/firebase-remote-config-basics/references/android_setup.md +36 -8
- package/dist/global-skills/firebase-remote-config-basics/references/ios_setup.md +1 -7
- package/dist/global-skills/firebase-security-rules-auditor/SKILL.md +17 -6
- package/dist/global-skills/{firebase-firestore/references/standard/security_rules.md → firestore-rules-creation/SKILL.md} +24 -13
- package/dist/global-skills/grow-my-customers/SKILL.md +23 -0
- package/dist/global-skills/instrument-feature-flags/SKILL.md +25 -25
- package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +141 -285
- package/dist/global-skills/instrument-feature-flags/references/android.md +6 -15
- package/dist/global-skills/instrument-feature-flags/references/api.md +4 -11
- package/dist/global-skills/instrument-feature-flags/references/best-practices.md +1 -13
- package/dist/global-skills/instrument-feature-flags/references/django.md +14 -27
- package/dist/global-skills/instrument-feature-flags/references/dotnet.md +20 -79
- package/dist/global-skills/instrument-feature-flags/references/elixir.md +1 -9
- package/dist/global-skills/instrument-feature-flags/references/flask.md +13 -13
- package/dist/global-skills/instrument-feature-flags/references/flutter.md +3 -24
- package/dist/global-skills/instrument-feature-flags/references/go.md +3 -15
- package/dist/global-skills/instrument-feature-flags/references/ios.md +4 -17
- package/dist/global-skills/instrument-feature-flags/references/java.md +5 -13
- package/dist/global-skills/instrument-feature-flags/references/laravel.md +13 -17
- package/dist/global-skills/instrument-feature-flags/references/next-js.md +25 -32
- package/dist/global-skills/instrument-feature-flags/references/nodejs.md +8 -15
- package/dist/global-skills/instrument-feature-flags/references/php.md +1 -15
- package/dist/global-skills/instrument-feature-flags/references/python.md +2 -15
- package/dist/global-skills/instrument-feature-flags/references/react-native.md +13 -15
- package/dist/global-skills/instrument-feature-flags/references/react.md +17 -21
- package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +37 -83
- package/dist/global-skills/instrument-feature-flags/references/ruby.md +2 -15
- package/dist/global-skills/instrument-feature-flags/references/rust.md +13 -25
- package/dist/global-skills/instrument-feature-flags/references/usage.md +14 -63
- package/dist/global-skills/instrument-feature-flags/references/web.md +9 -14
- package/dist/global-skills/instrument-product-analytics/SKILL.md +29 -29
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-hybrid.md +3 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-ssr.md +3 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-static.md +3 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-view-transitions.md +3 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby-on-rails.md +3 -1
- package/dist/global-skills/instrument-product-analytics/references/android.md +72 -107
- package/dist/global-skills/instrument-product-analytics/references/angular.md +26 -28
- package/dist/global-skills/instrument-product-analytics/references/astro.md +13 -24
- package/dist/global-skills/instrument-product-analytics/references/configuration.md +45 -63
- package/dist/global-skills/instrument-product-analytics/references/django.md +14 -27
- package/dist/global-skills/instrument-product-analytics/references/dotnet.md +20 -79
- package/dist/global-skills/instrument-product-analytics/references/elixir.md +47 -49
- package/dist/global-skills/instrument-product-analytics/references/flask.md +13 -13
- package/dist/global-skills/instrument-product-analytics/references/flutter.md +60 -90
- package/dist/global-skills/instrument-product-analytics/references/go.md +17 -56
- package/dist/global-skills/instrument-product-analytics/references/identify-users.md +15 -15
- package/dist/global-skills/instrument-product-analytics/references/ios.md +11 -15
- package/dist/global-skills/instrument-product-analytics/references/laravel.md +13 -17
- package/dist/global-skills/instrument-product-analytics/references/next-js.md +25 -32
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +13 -27
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +14 -28
- package/dist/global-skills/instrument-product-analytics/references/php.md +33 -84
- package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +229 -9
- package/dist/global-skills/instrument-product-analytics/references/python.md +415 -106
- package/dist/global-skills/instrument-product-analytics/references/react-native.md +161 -155
- package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +12 -33
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +15 -33
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +12 -33
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +26 -41
- package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +37 -83
- package/dist/global-skills/instrument-product-analytics/references/ruby.md +48 -108
- package/dist/global-skills/instrument-product-analytics/references/svelte.md +18 -24
- package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +17 -19
- package/dist/global-skills/instrument-product-analytics/references/usage.md +14 -63
- package/dist/global-skills/instrument-product-analytics/references/vue-js.md +29 -28
- package/dist/global-skills/manifest.json +8 -2
- package/dist/global-skills/mongodb-search-and-ai/SKILL.md +28 -37
- package/dist/global-skills/mongodb-search-and-ai/references/automated-embedding.md +438 -0
- package/dist/global-skills/mongodb-search-and-ai/references/hybrid-search.md +60 -4
- package/dist/global-skills/mongodb-search-and-ai/references/vector-search.md +46 -108
- package/dist/global-skills/neon/SKILL.md +207 -213
- package/dist/global-skills/neon/references/auth.md +12 -0
- package/dist/global-skills/neon/references/claimable-neon.md +10 -14
- package/dist/global-skills/neon/references/function-triggers.md +53 -0
- package/dist/global-skills/neon/references/logs-loki.md +61 -0
- package/dist/global-skills/neon/references/parse-env.md +32 -0
- package/dist/global-skills/neon/references/sdk.md +7 -0
- package/dist/global-skills/neon-ai-gateway/SKILL.md +14 -16
- package/dist/global-skills/neon-auth/SKILL.md +155 -0
- package/dist/global-skills/neon-auth/references/managed-auth.md +173 -0
- package/dist/global-skills/neon-auth/references/self-managed.md +25 -0
- package/dist/global-skills/neon-functions/SKILL.md +159 -84
- package/dist/global-skills/neon-functions/references/ai-sdk.md +4 -6
- package/dist/global-skills/neon-functions/references/function-triggers.md +249 -0
- package/dist/global-skills/neon-functions/references/mastra-studio.md +3 -3
- package/dist/global-skills/neon-functions/references/mcp.md +1 -1
- package/dist/global-skills/neon-functions/references/production-hardening.md +340 -0
- package/dist/global-skills/neon-functions/references/sse.md +8 -5
- package/dist/global-skills/neon-object-storage/SKILL.md +10 -11
- package/dist/global-skills/neon-postgres/SKILL.md +120 -17
- package/dist/global-skills/neon-postgres/references/full-text-search.md +99 -0
- package/dist/global-skills/neon-postgres/references/hybrid-search.md +90 -0
- package/dist/global-skills/neon-postgres/references/lakebase-search-drizzle.md +172 -0
- package/dist/global-skills/neon-postgres/references/vector-search.md +137 -0
- package/dist/global-skills/neon-postgres-branches/SKILL.md +3 -3
- package/dist/global-skills/neon-postgres-egress-optimizer/SKILL.md +1 -1
- package/dist/global-skills/onboarding/SKILL.md +8 -6
- package/dist/global-skills/resend/SKILL.md +4 -2
- package/dist/global-skills/resend/references/broadcasts.md +6 -1
- package/dist/global-skills/resend/references/receiving.md +29 -10
- package/dist/global-skills/resend/references/sending/email-management.md +14 -4
- package/dist/global-skills/resend/references/topics.md +9 -6
- package/dist/global-skills/resend/references/usage.md +117 -0
- package/dist/global-skills/resend/references/webhooks.md +59 -2
- package/dist/global-skills/stripe-best-practices/SKILL.md +35 -29
- package/dist/global-skills/stripe-best-practices/references/billing.md +9 -2
- package/dist/global-skills/stripe-best-practices/references/payments.md +4 -2
- package/dist/global-skills/stripe-best-practices/references/security.md +3 -1
- package/dist/global-skills/stripe-best-practices/references/tax.md +39 -20
- package/dist/global-skills/supabase/SKILL.md +6 -0
- package/dist/global-skills/use-railway/SKILL.md +42 -22
- package/dist/global-skills/use-railway/references/analyze-db.md +7 -6
- package/dist/global-skills/use-railway/references/cloud-agents.md +70 -0
- package/dist/global-skills/use-railway/references/configure.md +17 -2
- package/dist/global-skills/use-railway/references/databases.md +107 -0
- package/dist/global-skills/use-railway/references/deploy.md +5 -5
- package/dist/global-skills/use-railway/references/feature-flags.md +25 -13
- package/dist/global-skills/use-railway/references/iac.md +66 -77
- package/dist/global-skills/use-railway/references/operate.md +26 -3
- package/dist/global-skills/use-railway/references/request.md +31 -23
- package/dist/global-skills/use-railway/references/setup.md +16 -5
- package/dist/global-skills/use-railway/references/tracing.md +261 -0
- package/dist/global-skills/use-railway/references/usage.md +52 -0
- package/dist/global-skills/use-railway/scripts/analyze-mongo.py +0 -0
- package/dist/global-skills/use-railway/scripts/analyze-mysql.py +0 -0
- package/dist/global-skills/use-railway/scripts/analyze-postgres.py +0 -0
- package/dist/global-skills/use-railway/scripts/analyze-redis.py +0 -0
- package/dist/global-skills/use-railway/scripts/enable-pg-stats.py +0 -0
- package/dist/global-skills/use-railway/scripts/pg-extensions.py +0 -0
- package/dist/global-skills/use-railway/scripts/railway-api.sh +0 -0
- package/dist/global-skills/validate-my-idea/SKILL.md +54 -0
- package/dist/global-skills/{feedback → vybekiit-feedback}/SKILL.md +16 -12
- package/dist/global-skills/watch-my-app/SKILL.md +53 -0
- package/dist/global-skills/workers-best-practices/SKILL.md +36 -103
- package/dist/global-skills/workers-best-practices/references/configuration.md +139 -0
- package/dist/global-skills/workers-best-practices/references/platform-apis.md +51 -0
- package/dist/global-skills/workers-best-practices/references/{rules.md → runtime-patterns.md} +13 -137
- package/dist/global-skills/wrangler/SKILL.md +48 -901
- package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Sources/main.swift +19 -15
- package/package.json +22 -22
- package/dist/global-skills/expo-native-ui/references/animations.md +0 -220
- package/dist/global-skills/firebase-firestore/references/enterprise/security_rules.md +0 -577
- package/dist/global-skills/workers-best-practices/references/review.md +0 -174
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt
|
|
2
2
|
|
|
3
|
-
# React Router V6
|
|
4
|
-
|
|
5
|
-
Copy page
|
|
6
|
-
|
|
7
|
-
# React Router V6 - Docs
|
|
3
|
+
# React Router V6
|
|
8
4
|
|
|
9
5
|
This guide walks you through setting up PostHog for React Router V6. If you're using React Router v7, find the guide for that mode in the [React Router page](/docs/libraries/react-router.md). If you're using React with another framework, go to the [React integration guide](/docs/libraries/react.md).
|
|
10
6
|
|
|
@@ -16,8 +12,6 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
16
12
|
|
|
17
13
|
First, you'll need to install [`posthog-js`](https://github.com/posthog/posthog-js) and `@posthog/react` using your package manager. These packages allow you to capture **client-side** events.
|
|
18
14
|
|
|
19
|
-
PostHog AI
|
|
20
|
-
|
|
21
15
|
### npm
|
|
22
16
|
|
|
23
17
|
```bash
|
|
@@ -44,8 +38,6 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
44
38
|
|
|
45
39
|
> **If your site sets a Content-Security-Policy**, it needs to allow PostHog. This applies to the snippet and to package installs alike: the SDK lazy-loads extra bundles (session replay, surveys) from PostHog's CDN, and sends events to the ingestion host. PostHog serves from subdomains of `posthog.com` that change over time, so allow the wildcard:
|
|
46
40
|
>
|
|
47
|
-
> PostHog AI
|
|
48
|
-
>
|
|
49
41
|
> ```
|
|
50
42
|
> script-src 'self' https://*.posthog.com;
|
|
51
43
|
> connect-src 'self' https://*.posthog.com;
|
|
@@ -64,8 +56,6 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
64
56
|
|
|
65
57
|
.env.local
|
|
66
58
|
|
|
67
|
-
PostHog AI
|
|
68
|
-
|
|
69
59
|
```shell
|
|
70
60
|
VITE_POSTHOG_PROJECT_TOKEN=<ph_project_token>
|
|
71
61
|
VITE_POSTHOG_HOST=https://us.i.posthog.com
|
|
@@ -81,20 +71,22 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
81
71
|
|
|
82
72
|
src/main.tsx
|
|
83
73
|
|
|
84
|
-
PostHog AI
|
|
85
|
-
|
|
86
74
|
```jsx
|
|
87
75
|
import { StrictMode } from "react";
|
|
88
76
|
import ReactDOM from "react-dom/client";
|
|
89
77
|
import { BrowserRouter, Routes, Route } from "react-router";
|
|
78
|
+
|
|
90
79
|
import posthog from 'posthog-js';
|
|
91
80
|
import { PostHogErrorBoundary, PostHogProvider } from '@posthog/react'
|
|
81
|
+
|
|
92
82
|
// Initialize PostHog
|
|
93
83
|
posthog.init(import.meta.env.VITE_POSTHOG_PROJECT_TOKEN, {
|
|
94
84
|
api_host: import.meta.env.VITE_POSTHOG_HOST,
|
|
95
85
|
defaults: '2026-05-30',
|
|
96
86
|
});
|
|
87
|
+
|
|
97
88
|
const root = document.getElementById("root");
|
|
89
|
+
|
|
98
90
|
ReactDOM.createRoot(root).render(
|
|
99
91
|
<StrictMode>
|
|
100
92
|
{/* Pass PostHog client through PostHogProvider */}
|
|
@@ -121,11 +113,10 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
121
113
|
|
|
122
114
|
React
|
|
123
115
|
|
|
124
|
-
PostHog AI
|
|
125
|
-
|
|
126
116
|
```jsx
|
|
127
117
|
useEffect(() => {
|
|
128
118
|
posthog?.capture('test') // using optional chaining (recommended)
|
|
119
|
+
|
|
129
120
|
if (posthog) {
|
|
130
121
|
posthog.capture('test') // using an if statement
|
|
131
122
|
}
|
|
@@ -146,10 +137,9 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
146
137
|
|
|
147
138
|
TSX
|
|
148
139
|
|
|
149
|
-
PostHog AI
|
|
150
|
-
|
|
151
140
|
```jsx
|
|
152
141
|
import { usePostHog } from '@posthog/react'
|
|
142
|
+
|
|
153
143
|
function App() {
|
|
154
144
|
const posthog = usePostHog()
|
|
155
145
|
return <button onClick={() => posthog?.capture('button_clicked')}>Click me</button>
|
|
@@ -168,10 +158,9 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
168
158
|
|
|
169
159
|
TSX
|
|
170
160
|
|
|
171
|
-
PostHog AI
|
|
172
|
-
|
|
173
161
|
```jsx
|
|
174
162
|
import { usePostHog } from '@posthog/react'
|
|
163
|
+
|
|
175
164
|
function App() {
|
|
176
165
|
const posthog = usePostHog()
|
|
177
166
|
return <button onClick={() => posthog?.capture('button_clicked')}>Click me</button>
|
|
@@ -192,15 +181,15 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
192
181
|
|
|
193
182
|
TSX
|
|
194
183
|
|
|
195
|
-
PostHog AI
|
|
196
|
-
|
|
197
184
|
```jsx
|
|
198
185
|
export default function Login() {
|
|
199
186
|
const { user, login } = useAuth();
|
|
200
187
|
const posthog = usePostHog();
|
|
188
|
+
|
|
201
189
|
const handleLogin = async (e: React.FormEvent) => {
|
|
202
190
|
// existing code to handle login...
|
|
203
191
|
const user = await login({ email, password });
|
|
192
|
+
|
|
204
193
|
posthog?.identify(user.email,
|
|
205
194
|
{
|
|
206
195
|
email: user.email,
|
|
@@ -209,6 +198,7 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
209
198
|
);
|
|
210
199
|
posthog?.capture('user_logged_in');
|
|
211
200
|
};
|
|
201
|
+
|
|
212
202
|
return (
|
|
213
203
|
<div>
|
|
214
204
|
{/* ... existing code ... */}
|
|
@@ -230,8 +220,6 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
230
220
|
|
|
231
221
|
TSX
|
|
232
222
|
|
|
233
|
-
PostHog AI
|
|
234
|
-
|
|
235
223
|
```jsx
|
|
236
224
|
ReactDOM.createRoot(root).render(
|
|
237
225
|
<StrictMode>
|
|
@@ -266,10 +254,9 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
266
254
|
|
|
267
255
|
React
|
|
268
256
|
|
|
269
|
-
PostHog AI
|
|
270
|
-
|
|
271
257
|
```jsx
|
|
272
258
|
import { PostHogCaptureOnViewed } from '@posthog/react'
|
|
259
|
+
|
|
273
260
|
function App() {
|
|
274
261
|
return (
|
|
275
262
|
<PostHogCaptureOnViewed name="hero-banner">
|
|
@@ -285,8 +272,6 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
285
272
|
|
|
286
273
|
React
|
|
287
274
|
|
|
288
|
-
PostHog AI
|
|
289
|
-
|
|
290
275
|
```jsx
|
|
291
276
|
<PostHogCaptureOnViewed
|
|
292
277
|
name="product-card"
|
|
@@ -306,8 +291,6 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
306
291
|
|
|
307
292
|
React
|
|
308
293
|
|
|
309
|
-
PostHog AI
|
|
310
|
-
|
|
311
294
|
```jsx
|
|
312
295
|
<PostHogCaptureOnViewed
|
|
313
296
|
name="product-gallery"
|
|
@@ -328,8 +311,6 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
328
311
|
|
|
329
312
|
React
|
|
330
313
|
|
|
331
|
-
PostHog AI
|
|
332
|
-
|
|
333
314
|
```jsx
|
|
334
315
|
<PostHogCaptureOnViewed
|
|
335
316
|
name="footer"
|
|
@@ -356,8 +337,6 @@ This guide walks you through setting up PostHog for React Router V6. If you're u
|
|
|
356
337
|
|
|
357
338
|
TSX
|
|
358
339
|
|
|
359
|
-
PostHog AI
|
|
360
|
-
|
|
361
340
|
```jsx
|
|
362
341
|
posthog.init(import.meta.env.VITE_POSTHOG_PROJECT_TOKEN, {
|
|
363
342
|
api_host: import.meta.env.VITE_POSTHOG_HOST,
|
package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt
|
|
2
2
|
|
|
3
|
-
# React Router V7 data mode
|
|
4
|
-
|
|
5
|
-
Copy page
|
|
6
|
-
|
|
7
|
-
# React Router V7 data mode - Docs
|
|
3
|
+
# React Router V7 data mode
|
|
8
4
|
|
|
9
5
|
This guide walks you through setting up PostHog for React Router V7 in data mode. If you're using React Router in another mode, find the guide for that mode in the [React Router page](/docs/libraries/react-router.md). If you're using React with another framework, go to the [React integration guide](/docs/libraries/react.md).
|
|
10
6
|
|
|
@@ -16,8 +12,6 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
16
12
|
|
|
17
13
|
First, you'll need to install [`posthog-js`](https://github.com/posthog/posthog-js) and `@posthog/react` using your package manager. These packages allow you to capture **client-side** events.
|
|
18
14
|
|
|
19
|
-
PostHog AI
|
|
20
|
-
|
|
21
15
|
### npm
|
|
22
16
|
|
|
23
17
|
```bash
|
|
@@ -44,8 +38,6 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
44
38
|
|
|
45
39
|
> **If your site sets a Content-Security-Policy**, it needs to allow PostHog. This applies to the snippet and to package installs alike: the SDK lazy-loads extra bundles (session replay, surveys) from PostHog's CDN, and sends events to the ingestion host. PostHog serves from subdomains of `posthog.com` that change over time, so allow the wildcard:
|
|
46
40
|
>
|
|
47
|
-
> PostHog AI
|
|
48
|
-
>
|
|
49
41
|
> ```
|
|
50
42
|
> script-src 'self' https://*.posthog.com;
|
|
51
43
|
> connect-src 'self' https://*.posthog.com;
|
|
@@ -64,8 +56,6 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
64
56
|
|
|
65
57
|
.env.local
|
|
66
58
|
|
|
67
|
-
PostHog AI
|
|
68
|
-
|
|
69
59
|
```shell
|
|
70
60
|
VITE_POSTHOG_PROJECT_TOKEN=<ph_project_token>
|
|
71
61
|
VITE_POSTHOG_HOST=https://us.i.posthog.com
|
|
@@ -81,20 +71,22 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
81
71
|
|
|
82
72
|
app/index.tsx
|
|
83
73
|
|
|
84
|
-
PostHog AI
|
|
85
|
-
|
|
86
74
|
```jsx
|
|
87
75
|
import { StrictMode } from "react";
|
|
88
76
|
import { createRoot } from "react-dom/client";
|
|
89
77
|
import { createBrowserRouter, RouterProvider } from "react-router";
|
|
90
78
|
import Root, { RootErrorBoundary } from "./app/root";
|
|
79
|
+
|
|
91
80
|
import posthog from 'posthog-js';
|
|
92
81
|
import { PostHogProvider } from '@posthog/react'
|
|
82
|
+
|
|
93
83
|
posthog.init(import.meta.env.VITE_POSTHOG_PROJECT_TOKEN, {
|
|
94
84
|
api_host: import.meta.env.VITE_POSTHOG_HOST,
|
|
95
85
|
defaults: '2026-05-30',
|
|
96
86
|
});
|
|
87
|
+
|
|
97
88
|
const router = createBrowserRouter([...]);
|
|
89
|
+
|
|
98
90
|
createRoot(document.getElementById("root")!).render(
|
|
99
91
|
<StrictMode>
|
|
100
92
|
{/* Pass PostHog client through PostHogProvider */}
|
|
@@ -115,11 +107,10 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
115
107
|
|
|
116
108
|
React
|
|
117
109
|
|
|
118
|
-
PostHog AI
|
|
119
|
-
|
|
120
110
|
```jsx
|
|
121
111
|
useEffect(() => {
|
|
122
112
|
posthog?.capture('test') // using optional chaining (recommended)
|
|
113
|
+
|
|
123
114
|
if (posthog) {
|
|
124
115
|
posthog.capture('test') // using an if statement
|
|
125
116
|
}
|
|
@@ -140,10 +131,9 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
140
131
|
|
|
141
132
|
TSX
|
|
142
133
|
|
|
143
|
-
PostHog AI
|
|
144
|
-
|
|
145
134
|
```jsx
|
|
146
135
|
import { usePostHog } from '@posthog/react'
|
|
136
|
+
|
|
147
137
|
function App() {
|
|
148
138
|
const posthog = usePostHog()
|
|
149
139
|
return <button onClick={() => posthog?.capture('button_clicked')}>Click me</button>
|
|
@@ -162,10 +152,9 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
162
152
|
|
|
163
153
|
TSX
|
|
164
154
|
|
|
165
|
-
PostHog AI
|
|
166
|
-
|
|
167
155
|
```jsx
|
|
168
156
|
import { usePostHog } from '@posthog/react'
|
|
157
|
+
|
|
169
158
|
function App() {
|
|
170
159
|
const posthog = usePostHog()
|
|
171
160
|
return <button onClick={() => posthog?.capture('button_clicked')}>Click me</button>
|
|
@@ -186,15 +175,15 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
186
175
|
|
|
187
176
|
TSX
|
|
188
177
|
|
|
189
|
-
PostHog AI
|
|
190
|
-
|
|
191
178
|
```jsx
|
|
192
179
|
export default function Login() {
|
|
193
180
|
const { user, login } = useAuth();
|
|
194
181
|
const posthog = usePostHog();
|
|
182
|
+
|
|
195
183
|
const handleLogin = async (e: React.FormEvent) => {
|
|
196
184
|
// existing code to handle login...
|
|
197
185
|
const user = await login({ email, password });
|
|
186
|
+
|
|
198
187
|
posthog?.identify(user.email,
|
|
199
188
|
{
|
|
200
189
|
email: user.email,
|
|
@@ -203,6 +192,7 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
203
192
|
);
|
|
204
193
|
posthog?.capture('user_logged_in');
|
|
205
194
|
};
|
|
195
|
+
|
|
206
196
|
return (
|
|
207
197
|
<div>
|
|
208
198
|
{/* ... existing code ... */}
|
|
@@ -224,16 +214,17 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
224
214
|
|
|
225
215
|
app/root.tsx
|
|
226
216
|
|
|
227
|
-
PostHog AI
|
|
228
|
-
|
|
229
217
|
```jsx
|
|
230
218
|
import { usePostHog } from '@posthog/react'
|
|
219
|
+
|
|
231
220
|
export function RootErrorBoundary() {
|
|
232
221
|
const error = useRouteError();
|
|
222
|
+
|
|
233
223
|
const posthog = usePostHog();
|
|
234
224
|
if (error) {
|
|
235
225
|
posthog.captureException(error);
|
|
236
226
|
}
|
|
227
|
+
|
|
237
228
|
// other error handling code...
|
|
238
229
|
}
|
|
239
230
|
```
|
|
@@ -254,10 +245,9 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
254
245
|
|
|
255
246
|
React
|
|
256
247
|
|
|
257
|
-
PostHog AI
|
|
258
|
-
|
|
259
248
|
```jsx
|
|
260
249
|
import { PostHogCaptureOnViewed } from '@posthog/react'
|
|
250
|
+
|
|
261
251
|
function App() {
|
|
262
252
|
return (
|
|
263
253
|
<PostHogCaptureOnViewed name="hero-banner">
|
|
@@ -273,8 +263,6 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
273
263
|
|
|
274
264
|
React
|
|
275
265
|
|
|
276
|
-
PostHog AI
|
|
277
|
-
|
|
278
266
|
```jsx
|
|
279
267
|
<PostHogCaptureOnViewed
|
|
280
268
|
name="product-card"
|
|
@@ -294,8 +282,6 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
294
282
|
|
|
295
283
|
React
|
|
296
284
|
|
|
297
|
-
PostHog AI
|
|
298
|
-
|
|
299
285
|
```jsx
|
|
300
286
|
<PostHogCaptureOnViewed
|
|
301
287
|
name="product-gallery"
|
|
@@ -316,8 +302,6 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
316
302
|
|
|
317
303
|
React
|
|
318
304
|
|
|
319
|
-
PostHog AI
|
|
320
|
-
|
|
321
305
|
```jsx
|
|
322
306
|
<PostHogCaptureOnViewed
|
|
323
307
|
name="footer"
|
|
@@ -344,8 +328,6 @@ This guide walks you through setting up PostHog for React Router V7 in data mode
|
|
|
344
328
|
|
|
345
329
|
TSX
|
|
346
330
|
|
|
347
|
-
PostHog AI
|
|
348
|
-
|
|
349
331
|
```jsx
|
|
350
332
|
posthog.init(import.meta.env.VITE_POSTHOG_PROJECT_TOKEN, {
|
|
351
333
|
api_host: import.meta.env.VITE_POSTHOG_HOST,
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt
|
|
2
2
|
|
|
3
|
-
# React Router V7 declarative mode
|
|
4
|
-
|
|
5
|
-
Copy page
|
|
6
|
-
|
|
7
|
-
# React Router V7 declarative mode - Docs
|
|
3
|
+
# React Router V7 declarative mode
|
|
8
4
|
|
|
9
5
|
This guide walks you through setting up PostHog for React Router V7 in declarative mode. If you're using React Router in another mode, find the guide for that mode in the [React Router page](/docs/libraries/react-router.md). If you're using React with another framework, go to the [React integration guide](/docs/libraries/react.md).
|
|
10
6
|
|
|
@@ -16,8 +12,6 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
16
12
|
|
|
17
13
|
First, you'll need to install [`posthog-js`](https://github.com/posthog/posthog-js) and `@posthog/react` using your package manager. These packages allow you to capture **client-side** events.
|
|
18
14
|
|
|
19
|
-
PostHog AI
|
|
20
|
-
|
|
21
15
|
### npm
|
|
22
16
|
|
|
23
17
|
```bash
|
|
@@ -44,8 +38,6 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
44
38
|
|
|
45
39
|
> **If your site sets a Content-Security-Policy**, it needs to allow PostHog. This applies to the snippet and to package installs alike: the SDK lazy-loads extra bundles (session replay, surveys) from PostHog's CDN, and sends events to the ingestion host. PostHog serves from subdomains of `posthog.com` that change over time, so allow the wildcard:
|
|
46
40
|
>
|
|
47
|
-
> PostHog AI
|
|
48
|
-
>
|
|
49
41
|
> ```
|
|
50
42
|
> script-src 'self' https://*.posthog.com;
|
|
51
43
|
> connect-src 'self' https://*.posthog.com;
|
|
@@ -64,8 +56,6 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
64
56
|
|
|
65
57
|
.env.local
|
|
66
58
|
|
|
67
|
-
PostHog AI
|
|
68
|
-
|
|
69
59
|
```shell
|
|
70
60
|
VITE_POSTHOG_PROJECT_TOKEN=<ph_project_token>
|
|
71
61
|
VITE_POSTHOG_HOST=https://us.i.posthog.com
|
|
@@ -81,20 +71,22 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
81
71
|
|
|
82
72
|
src/main.tsx
|
|
83
73
|
|
|
84
|
-
PostHog AI
|
|
85
|
-
|
|
86
74
|
```jsx
|
|
87
75
|
import { StrictMode } from "react";
|
|
88
76
|
import ReactDOM from "react-dom/client";
|
|
89
77
|
import { BrowserRouter, Routes, Route } from "react-router";
|
|
78
|
+
|
|
90
79
|
import posthog from 'posthog-js';
|
|
91
80
|
import { PostHogErrorBoundary, PostHogProvider } from '@posthog/react'
|
|
81
|
+
|
|
92
82
|
// Initialize PostHog
|
|
93
83
|
posthog.init(import.meta.env.VITE_POSTHOG_PROJECT_TOKEN, {
|
|
94
84
|
api_host: import.meta.env.VITE_POSTHOG_HOST,
|
|
95
85
|
defaults: '2026-05-30',
|
|
96
86
|
});
|
|
87
|
+
|
|
97
88
|
const root = document.getElementById("root");
|
|
89
|
+
|
|
98
90
|
ReactDOM.createRoot(root).render(
|
|
99
91
|
<StrictMode>
|
|
100
92
|
{/* Pass PostHog client through PostHogProvider */}
|
|
@@ -121,11 +113,10 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
121
113
|
|
|
122
114
|
React
|
|
123
115
|
|
|
124
|
-
PostHog AI
|
|
125
|
-
|
|
126
116
|
```jsx
|
|
127
117
|
useEffect(() => {
|
|
128
118
|
posthog?.capture('test') // using optional chaining (recommended)
|
|
119
|
+
|
|
129
120
|
if (posthog) {
|
|
130
121
|
posthog.capture('test') // using an if statement
|
|
131
122
|
}
|
|
@@ -146,10 +137,9 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
146
137
|
|
|
147
138
|
TSX
|
|
148
139
|
|
|
149
|
-
PostHog AI
|
|
150
|
-
|
|
151
140
|
```jsx
|
|
152
141
|
import { usePostHog } from '@posthog/react'
|
|
142
|
+
|
|
153
143
|
function App() {
|
|
154
144
|
const posthog = usePostHog()
|
|
155
145
|
return <button onClick={() => posthog?.capture('button_clicked')}>Click me</button>
|
|
@@ -168,10 +158,9 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
168
158
|
|
|
169
159
|
TSX
|
|
170
160
|
|
|
171
|
-
PostHog AI
|
|
172
|
-
|
|
173
161
|
```jsx
|
|
174
162
|
import { usePostHog } from '@posthog/react'
|
|
163
|
+
|
|
175
164
|
function App() {
|
|
176
165
|
const posthog = usePostHog()
|
|
177
166
|
return <button onClick={() => posthog?.capture('button_clicked')}>Click me</button>
|
|
@@ -192,15 +181,15 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
192
181
|
|
|
193
182
|
TSX
|
|
194
183
|
|
|
195
|
-
PostHog AI
|
|
196
|
-
|
|
197
184
|
```jsx
|
|
198
185
|
export default function Login() {
|
|
199
186
|
const { user, login } = useAuth();
|
|
200
187
|
const posthog = usePostHog();
|
|
188
|
+
|
|
201
189
|
const handleLogin = async (e: React.FormEvent) => {
|
|
202
190
|
// existing code to handle login...
|
|
203
191
|
const user = await login({ email, password });
|
|
192
|
+
|
|
204
193
|
posthog?.identify(user.email,
|
|
205
194
|
{
|
|
206
195
|
email: user.email,
|
|
@@ -209,6 +198,7 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
209
198
|
);
|
|
210
199
|
posthog?.capture('user_logged_in');
|
|
211
200
|
};
|
|
201
|
+
|
|
212
202
|
return (
|
|
213
203
|
<div>
|
|
214
204
|
{/* ... existing code ... */}
|
|
@@ -230,8 +220,6 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
230
220
|
|
|
231
221
|
TSX
|
|
232
222
|
|
|
233
|
-
PostHog AI
|
|
234
|
-
|
|
235
223
|
```jsx
|
|
236
224
|
ReactDOM.createRoot(root).render(
|
|
237
225
|
<StrictMode>
|
|
@@ -266,10 +254,9 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
266
254
|
|
|
267
255
|
React
|
|
268
256
|
|
|
269
|
-
PostHog AI
|
|
270
|
-
|
|
271
257
|
```jsx
|
|
272
258
|
import { PostHogCaptureOnViewed } from '@posthog/react'
|
|
259
|
+
|
|
273
260
|
function App() {
|
|
274
261
|
return (
|
|
275
262
|
<PostHogCaptureOnViewed name="hero-banner">
|
|
@@ -285,8 +272,6 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
285
272
|
|
|
286
273
|
React
|
|
287
274
|
|
|
288
|
-
PostHog AI
|
|
289
|
-
|
|
290
275
|
```jsx
|
|
291
276
|
<PostHogCaptureOnViewed
|
|
292
277
|
name="product-card"
|
|
@@ -306,8 +291,6 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
306
291
|
|
|
307
292
|
React
|
|
308
293
|
|
|
309
|
-
PostHog AI
|
|
310
|
-
|
|
311
294
|
```jsx
|
|
312
295
|
<PostHogCaptureOnViewed
|
|
313
296
|
name="product-gallery"
|
|
@@ -328,8 +311,6 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
328
311
|
|
|
329
312
|
React
|
|
330
313
|
|
|
331
|
-
PostHog AI
|
|
332
|
-
|
|
333
314
|
```jsx
|
|
334
315
|
<PostHogCaptureOnViewed
|
|
335
316
|
name="footer"
|
|
@@ -356,8 +337,6 @@ This guide walks you through setting up PostHog for React Router V7 in declarati
|
|
|
356
337
|
|
|
357
338
|
TSX
|
|
358
339
|
|
|
359
|
-
PostHog AI
|
|
360
|
-
|
|
361
340
|
```jsx
|
|
362
341
|
posthog.init(import.meta.env.VITE_POSTHOG_PROJECT_TOKEN, {
|
|
363
342
|
api_host: import.meta.env.VITE_POSTHOG_HOST,
|