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
|
-
# Flutter
|
|
4
|
-
|
|
5
|
-
Copy page
|
|
6
|
-
|
|
7
|
-
# Flutter - Docs
|
|
3
|
+
# Flutter
|
|
8
4
|
|
|
9
5
|
This is an optional library you can install if you're working with Flutter. It uses an internal queue to make calls fast and non-blocking. It also batches requests and flushes asynchronously, making it perfect to use in any part of your mobile app.
|
|
10
6
|
|
|
@@ -24,14 +20,14 @@ To start, add `posthog_flutter` to your `pubspec.yaml`:
|
|
|
24
20
|
|
|
25
21
|
pubspec.yaml
|
|
26
22
|
|
|
27
|
-
PostHog AI
|
|
28
|
-
|
|
29
23
|
```yaml
|
|
30
24
|
# rest of your code
|
|
25
|
+
|
|
31
26
|
dependencies:
|
|
32
27
|
flutter:
|
|
33
28
|
sdk: flutter
|
|
34
29
|
posthog_flutter: ^5.26.0
|
|
30
|
+
|
|
35
31
|
# rest of your code
|
|
36
32
|
```
|
|
37
33
|
|
|
@@ -49,8 +45,6 @@ Add your PostHog configuration to your `AndroidManifest.xml` file located in the
|
|
|
49
45
|
|
|
50
46
|
android/app/src/main/AndroidManifest.xml
|
|
51
47
|
|
|
52
|
-
PostHog AI
|
|
53
|
-
|
|
54
48
|
```xml
|
|
55
49
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your.package.name">
|
|
56
50
|
<application>
|
|
@@ -69,8 +63,6 @@ Add your PostHog configuration to your `AndroidManifest.xml` file located in the
|
|
|
69
63
|
|
|
70
64
|
android/app/src/main/AndroidManifest.xml
|
|
71
65
|
|
|
72
|
-
PostHog AI
|
|
73
|
-
|
|
74
66
|
```xml
|
|
75
67
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your.package.name">
|
|
76
68
|
<application>
|
|
@@ -84,14 +76,14 @@ In both cases, you'll also need to update the minimum Android SDK version to `23
|
|
|
84
76
|
|
|
85
77
|
android/app/build.gradle
|
|
86
78
|
|
|
87
|
-
PostHog AI
|
|
88
|
-
|
|
89
79
|
```kotlin
|
|
90
80
|
// rest of your config
|
|
81
|
+
|
|
91
82
|
defaultConfig {
|
|
92
83
|
minSdkVersion 23
|
|
93
84
|
// rest of your config
|
|
94
85
|
}
|
|
86
|
+
|
|
95
87
|
// rest of your config
|
|
96
88
|
```
|
|
97
89
|
|
|
@@ -99,7 +91,7 @@ PostHog AI
|
|
|
99
91
|
|
|
100
92
|
There are 2 ways of initializing the SDK, automatically and manually.
|
|
101
93
|
|
|
102
|
-
|
|
94
|
+
The SDK supports both [CocoaPods](https://guides.cocoapods.org/using/getting-started.html) and [Swift Package Manager (SPM)](https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-app-developers). Flutter 3.44 and later enable SPM by default. On earlier versions, or if you disabled SPM, enable it with `flutter config --enable-swift-package-manager`.
|
|
103
95
|
|
|
104
96
|
Automatically:
|
|
105
97
|
|
|
@@ -107,8 +99,6 @@ Add your PostHog configuration to the `Info.plist` file located in the `ios/Runn
|
|
|
107
99
|
|
|
108
100
|
ios/Runner/Info.plist
|
|
109
101
|
|
|
110
|
-
PostHog AI
|
|
111
|
-
|
|
112
102
|
```xml
|
|
113
103
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
114
104
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
@@ -132,8 +122,6 @@ Add your PostHog configuration to the `Info.plist` file located in the `ios/Runn
|
|
|
132
122
|
|
|
133
123
|
ios/Runner/Info.plist
|
|
134
124
|
|
|
135
|
-
PostHog AI
|
|
136
|
-
|
|
137
125
|
```xml
|
|
138
126
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
139
127
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
@@ -146,17 +134,25 @@ PostHog AI
|
|
|
146
134
|
</plist>
|
|
147
135
|
```
|
|
148
136
|
|
|
149
|
-
In both cases, you'll need to set the minimum platform version to iOS 13.0
|
|
137
|
+
In both cases, you'll need to set the minimum platform version to iOS 13.0.
|
|
150
138
|
|
|
151
|
-
|
|
139
|
+
For CocoaPods projects, set it in your `Podfile`:
|
|
152
140
|
|
|
153
|
-
|
|
141
|
+
ios/Podfile
|
|
154
142
|
|
|
155
143
|
```yaml
|
|
156
144
|
platform :ios, '13.0'
|
|
157
145
|
# rest of your config
|
|
158
146
|
```
|
|
159
147
|
|
|
148
|
+
For Swift Package Manager projects without a `Podfile`, set the **Minimum Deployments** version to iOS 13.0 for the `Runner` target in Xcode (**Runner > General > Minimum Deployments**). After you change **Minimum Deployments**, regenerate the iOS project's configuration files:
|
|
149
|
+
|
|
150
|
+
Terminal
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
flutter build ios --config-only
|
|
154
|
+
```
|
|
155
|
+
|
|
160
156
|
#### Dart setup (For manual step only)
|
|
161
157
|
|
|
162
158
|
If you followed the automatic SDK setup, then there's no more configuration needed in Dart.
|
|
@@ -165,11 +161,11 @@ If you followed the manual SDK setup:
|
|
|
165
161
|
|
|
166
162
|
Dart
|
|
167
163
|
|
|
168
|
-
PostHog AI
|
|
169
|
-
|
|
170
164
|
```dart
|
|
171
165
|
import 'package:flutter/material.dart';
|
|
166
|
+
|
|
172
167
|
import 'package:posthog_flutter/posthog_flutter.dart';
|
|
168
|
+
|
|
173
169
|
Future<void> main() async {
|
|
174
170
|
// init WidgetsFlutterBinding if not yet
|
|
175
171
|
WidgetsFlutterBinding.ensureInitialized();
|
|
@@ -184,17 +180,18 @@ Future<void> main() async {
|
|
|
184
180
|
|
|
185
181
|
#### Web setup
|
|
186
182
|
|
|
187
|
-
|
|
183
|
+
If your project has a `web/` directory, this step is required. `Posthog().setup()` is a no-op on web, so a web build without the snippet below captures nothing.
|
|
188
184
|
|
|
189
|
-
web/index.html
|
|
185
|
+
Add your `Web snippet` (which you can find in [your project settings](https://us.posthog.com/settings/project#snippet)) in the `<header>` of your `web/index.html` file. Write your project token into the snippet as a literal string. It's public, the same token ships to every visitor, and it needs no build-time or deploy-time injection:
|
|
190
186
|
|
|
191
|
-
|
|
187
|
+
web/index.html
|
|
192
188
|
|
|
193
189
|
```html
|
|
194
190
|
<!DOCTYPE html>
|
|
195
191
|
<html>
|
|
196
192
|
<head>
|
|
197
193
|
<!-- ... other head elements ... -->
|
|
194
|
+
|
|
198
195
|
<script async>
|
|
199
196
|
!(function (t, e) {
|
|
200
197
|
var o, n, p, r;
|
|
@@ -218,13 +215,23 @@ PostHog AI
|
|
|
218
215
|
for (
|
|
219
216
|
void 0 !== a ? (u = e[a] = []) : (a = "posthog"),
|
|
220
217
|
u.people = u.people || [],
|
|
221
|
-
u
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
218
|
+
Object.defineProperty(u, "toString", {
|
|
219
|
+
configurable: !0,
|
|
220
|
+
enumerable: !0,
|
|
221
|
+
writable: !0,
|
|
222
|
+
value: function (t) {
|
|
223
|
+
var e = "posthog";
|
|
224
|
+
return ("posthog" !== a && (e += "." + a), t || (e += " (stub)"), e);
|
|
225
|
+
},
|
|
226
|
+
}),
|
|
227
|
+
Object.defineProperty(u.people, "toString", {
|
|
228
|
+
configurable: !0,
|
|
229
|
+
enumerable: !0,
|
|
230
|
+
writable: !0,
|
|
231
|
+
value: function () {
|
|
232
|
+
return u.toString(1) + ".people (stub)";
|
|
233
|
+
},
|
|
234
|
+
}),
|
|
228
235
|
o =
|
|
229
236
|
"capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagResult reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys getNextSurveyStep onSessionId".split(
|
|
230
237
|
" ",
|
|
@@ -244,6 +251,7 @@ PostHog AI
|
|
|
244
251
|
});
|
|
245
252
|
</script>
|
|
246
253
|
</head>
|
|
254
|
+
|
|
247
255
|
<!-- other elements -->
|
|
248
256
|
</html>
|
|
249
257
|
```
|
|
@@ -256,8 +264,6 @@ You can send custom events using `capture`:
|
|
|
256
264
|
|
|
257
265
|
Dart
|
|
258
266
|
|
|
259
|
-
PostHog AI
|
|
260
|
-
|
|
261
267
|
```dart
|
|
262
268
|
await Posthog().capture(
|
|
263
269
|
eventName: 'user_signed_up',
|
|
@@ -272,8 +278,6 @@ Optionally, you can include additional information with the event by including a
|
|
|
272
278
|
|
|
273
279
|
Dart
|
|
274
280
|
|
|
275
|
-
PostHog AI
|
|
276
|
-
|
|
277
281
|
```dart
|
|
278
282
|
await Posthog().capture(
|
|
279
283
|
eventName: 'user_signed_up',
|
|
@@ -292,12 +296,16 @@ PostHog autocapture automatically tracks the following events for you:
|
|
|
292
296
|
- **Application Backgrounded** - when the app is sent to the background by the user
|
|
293
297
|
- **Application Installed** - when the app is installed.
|
|
294
298
|
- **Application Updated** - when the app is updated.
|
|
295
|
-
- **$screen** - when the user navigates
|
|
299
|
+
- **$screen** - when the user navigates, once you add the `PosthogObserver`
|
|
296
300
|
- **$exception** - when the app throws exceptions.
|
|
297
301
|
|
|
298
302
|
### Capturing screen views
|
|
299
303
|
|
|
300
|
-
|
|
304
|
+
Screen views aren't captured automatically. Add the `PosthogObserver` to your app yourself. Without it, your app sends no `$screen` events at all.
|
|
305
|
+
|
|
306
|
+
This works with any routing package, not just the plain `Navigator` API. Add the observer wherever your router takes navigator observers, as shown below for `MaterialApp` and `go_router`.
|
|
307
|
+
|
|
308
|
+
> Note: Screen names come from each route's `RouteSettings.name`. Most routing packages set this for you. If yours doesn't, name your routes so `$screen` events are readable.
|
|
301
309
|
|
|
302
310
|
#### Using `navigatorObservers`
|
|
303
311
|
|
|
@@ -305,12 +313,12 @@ Add the `PosthogObserver` to record screen views automatically:
|
|
|
305
313
|
|
|
306
314
|
Dart
|
|
307
315
|
|
|
308
|
-
PostHog AI
|
|
309
|
-
|
|
310
316
|
```dart
|
|
311
317
|
import 'package:flutter/material.dart';
|
|
312
318
|
import 'package:posthog_flutter/posthog_flutter.dart';
|
|
319
|
+
|
|
313
320
|
void main() => runApp(MyApp());
|
|
321
|
+
|
|
314
322
|
class MyApp extends StatelessWidget {
|
|
315
323
|
@override
|
|
316
324
|
Widget build(BuildContext context) {
|
|
@@ -330,8 +338,6 @@ Name your routes:
|
|
|
330
338
|
|
|
331
339
|
Dart
|
|
332
340
|
|
|
333
|
-
PostHog AI
|
|
334
|
-
|
|
335
341
|
```dart
|
|
336
342
|
...
|
|
337
343
|
MaterialPageRoute(builder: (context) => const HomeScreenRoute(),
|
|
@@ -346,12 +352,11 @@ Add the `PosthogObserver` to record screen views automatically:
|
|
|
346
352
|
|
|
347
353
|
Dart
|
|
348
354
|
|
|
349
|
-
PostHog AI
|
|
350
|
-
|
|
351
355
|
```dart
|
|
352
356
|
import 'package:flutter/material.dart';
|
|
353
357
|
import 'package:posthog_flutter/posthog_flutter.dart';
|
|
354
358
|
import 'package:go_router/go_router.dart';
|
|
359
|
+
|
|
355
360
|
// GoRouter configuration
|
|
356
361
|
final _router = GoRouter(
|
|
357
362
|
routes: [
|
|
@@ -360,6 +365,7 @@ final _router = GoRouter(
|
|
|
360
365
|
// The PosthogObserver records screen views automatically
|
|
361
366
|
observers: [PosthogObserver()],
|
|
362
367
|
);
|
|
368
|
+
|
|
363
369
|
class MyApp extends StatelessWidget {
|
|
364
370
|
@override
|
|
365
371
|
Widget build(BuildContext context) {
|
|
@@ -375,8 +381,6 @@ Name your routes:
|
|
|
375
381
|
|
|
376
382
|
Dart
|
|
377
383
|
|
|
378
|
-
PostHog AI
|
|
379
|
-
|
|
380
384
|
```dart
|
|
381
385
|
...
|
|
382
386
|
GoRoute(
|
|
@@ -400,8 +404,6 @@ An `identify` call has the following arguments:
|
|
|
400
404
|
|
|
401
405
|
Dart
|
|
402
406
|
|
|
403
|
-
PostHog AI
|
|
404
|
-
|
|
405
407
|
```dart
|
|
406
408
|
await Posthog().identify(
|
|
407
409
|
userId: emailController.text,
|
|
@@ -428,15 +430,13 @@ In this case, you can use `alias` to assign another distinct ID to the same user
|
|
|
428
430
|
|
|
429
431
|
Dart
|
|
430
432
|
|
|
431
|
-
PostHog AI
|
|
432
|
-
|
|
433
433
|
```dart
|
|
434
434
|
await Posthog().alias(
|
|
435
435
|
alias: 'distinct_id',
|
|
436
436
|
);
|
|
437
437
|
```
|
|
438
438
|
|
|
439
|
-
We strongly recommend reading our docs on [alias](/docs/
|
|
439
|
+
We strongly recommend reading our docs on [alias](/docs/product-analytics/identify.md#alias-assigning-multiple-distinct-ids-to-the-same-user) to best understand how to correctly use this method.
|
|
440
440
|
|
|
441
441
|
## Anonymous vs identified events
|
|
442
442
|
|
|
@@ -476,8 +476,6 @@ For example:
|
|
|
476
476
|
|
|
477
477
|
Dart
|
|
478
478
|
|
|
479
|
-
PostHog AI
|
|
480
|
-
|
|
481
479
|
```dart
|
|
482
480
|
final config = PostHogConfig('<ph_project_token>');
|
|
483
481
|
config.host = 'https://us.i.posthog.com';
|
|
@@ -506,10 +504,9 @@ For example, take a look at the following call:
|
|
|
506
504
|
|
|
507
505
|
Dart
|
|
508
506
|
|
|
509
|
-
PostHog AI
|
|
510
|
-
|
|
511
507
|
```dart
|
|
512
508
|
import 'package:posthog_flutter/posthog_flutter.dart';
|
|
509
|
+
|
|
513
510
|
await Posthog().register("team_id", 22);
|
|
514
511
|
```
|
|
515
512
|
|
|
@@ -523,10 +520,9 @@ Super properties are persisted across sessions so you have to explicitly remove
|
|
|
523
520
|
|
|
524
521
|
Dart
|
|
525
522
|
|
|
526
|
-
PostHog AI
|
|
527
|
-
|
|
528
523
|
```dart
|
|
529
524
|
import 'package:posthog_flutter/posthog_flutter.dart';
|
|
525
|
+
|
|
530
526
|
await Posthog().unregister("team_id");
|
|
531
527
|
```
|
|
532
528
|
|
|
@@ -548,12 +544,11 @@ PostHog's [feature flags](/docs/feature-flags.md) enable you to safely deploy an
|
|
|
548
544
|
|
|
549
545
|
Dart
|
|
550
546
|
|
|
551
|
-
PostHog AI
|
|
552
|
-
|
|
553
547
|
```dart
|
|
554
548
|
final result = await Posthog().getFeatureFlagResult('flag-key');
|
|
555
549
|
if (result != null && result.enabled) {
|
|
556
550
|
// Do something differently for this user
|
|
551
|
+
|
|
557
552
|
// Optional: fetch the payload from the same evaluation result
|
|
558
553
|
final matchedFlagPayload = result.payload;
|
|
559
554
|
}
|
|
@@ -563,12 +558,11 @@ if (result != null && result.enabled) {
|
|
|
563
558
|
|
|
564
559
|
Dart
|
|
565
560
|
|
|
566
|
-
PostHog AI
|
|
567
|
-
|
|
568
561
|
```dart
|
|
569
562
|
final result = await Posthog().getFeatureFlagResult('flag-key');
|
|
570
563
|
if (result != null && result.variant == 'variant-key') { // replace 'variant-key' with the key of your variant
|
|
571
564
|
// Do something differently for this user
|
|
565
|
+
|
|
572
566
|
// Optional: fetch the payload from the same evaluation result
|
|
573
567
|
final matchedFlagPayload = result.payload;
|
|
574
568
|
}
|
|
@@ -586,8 +580,6 @@ To handle this, you can use the `onFeatureFlags` callback in your config to be n
|
|
|
586
580
|
|
|
587
581
|
Dart
|
|
588
582
|
|
|
589
|
-
PostHog AI
|
|
590
|
-
|
|
591
583
|
```dart
|
|
592
584
|
final config = PostHogConfig('<ph_project_token>');
|
|
593
585
|
config.host = 'https://us.i.posthog.com';
|
|
@@ -605,8 +597,6 @@ Feature flag values are cached. If something has changed with your user and you'
|
|
|
605
597
|
|
|
606
598
|
Dart
|
|
607
599
|
|
|
608
|
-
PostHog AI
|
|
609
|
-
|
|
610
600
|
```dart
|
|
611
601
|
await Posthog().reloadFeatureFlags();
|
|
612
602
|
```
|
|
@@ -621,8 +611,6 @@ Set `config.bootstrap` before calling `setup()` to seed identity and flag values
|
|
|
621
611
|
|
|
622
612
|
Dart
|
|
623
613
|
|
|
624
|
-
PostHog AI
|
|
625
|
-
|
|
626
614
|
```dart
|
|
627
615
|
final config = PostHogConfig('<ph_project_token>');
|
|
628
616
|
config.host = 'https://us.i.posthog.com';
|
|
@@ -654,14 +642,13 @@ If a flag targets person or group properties, you can send those properties inli
|
|
|
654
642
|
|
|
655
643
|
Dart
|
|
656
644
|
|
|
657
|
-
PostHog AI
|
|
658
|
-
|
|
659
645
|
```dart
|
|
660
646
|
// Person properties — included in the next flag evaluation request
|
|
661
647
|
await Posthog().setPersonPropertiesForFlags({
|
|
662
648
|
'storefront_country': 'US',
|
|
663
649
|
'is_beta_user': true,
|
|
664
650
|
});
|
|
651
|
+
|
|
665
652
|
// Group properties
|
|
666
653
|
await Posthog().setGroupPropertiesForFlags('company', {'plan': 'enterprise'});
|
|
667
654
|
```
|
|
@@ -710,8 +697,6 @@ You can also configure the flush interval with `flushInterval` (default 30 secon
|
|
|
710
697
|
|
|
711
698
|
Dart
|
|
712
699
|
|
|
713
|
-
PostHog AI
|
|
714
|
-
|
|
715
700
|
```dart
|
|
716
701
|
final config = PostHogConfig('<ph_project_token>');
|
|
717
702
|
config.flushAt = 20;
|
|
@@ -722,8 +707,6 @@ You can also manually flush the queue to start sending events immediately instea
|
|
|
722
707
|
|
|
723
708
|
Dart
|
|
724
709
|
|
|
725
|
-
PostHog AI
|
|
726
|
-
|
|
727
710
|
```dart
|
|
728
711
|
await Posthog().flush();
|
|
729
712
|
```
|
|
@@ -744,8 +727,6 @@ You can disable data collection for a user at any time using the `disable()` met
|
|
|
744
727
|
|
|
745
728
|
Dart
|
|
746
729
|
|
|
747
|
-
PostHog AI
|
|
748
|
-
|
|
749
730
|
```dart
|
|
750
731
|
await Posthog().disable();
|
|
751
732
|
```
|
|
@@ -754,8 +735,6 @@ This prevents any future events from being sent. It doesn't remove events alread
|
|
|
754
735
|
|
|
755
736
|
Dart
|
|
756
737
|
|
|
757
|
-
PostHog AI
|
|
758
|
-
|
|
759
738
|
```dart
|
|
760
739
|
await Posthog().enable();
|
|
761
740
|
```
|
|
@@ -764,8 +743,6 @@ To check if a user is opted out:
|
|
|
764
743
|
|
|
765
744
|
Dart
|
|
766
745
|
|
|
767
|
-
PostHog AI
|
|
768
|
-
|
|
769
746
|
```dart
|
|
770
747
|
await Posthog().isOptOut();
|
|
771
748
|
```
|
|
@@ -780,11 +757,10 @@ Since version 5.13.0, you can provide `beforeSend` callbacks when initializing t
|
|
|
780
757
|
|
|
781
758
|
Dart
|
|
782
759
|
|
|
783
|
-
PostHog AI
|
|
784
|
-
|
|
785
760
|
```dart
|
|
786
761
|
final config = PostHogConfig('<ph_project_token>');
|
|
787
762
|
config.host = 'https://us.i.posthog.com';
|
|
763
|
+
|
|
788
764
|
config.beforeSend = [
|
|
789
765
|
(event) {
|
|
790
766
|
// Redact email from properties
|
|
@@ -794,6 +770,7 @@ config.beforeSend = [
|
|
|
794
770
|
return event;
|
|
795
771
|
},
|
|
796
772
|
];
|
|
773
|
+
|
|
797
774
|
await Posthog().setup(config);
|
|
798
775
|
```
|
|
799
776
|
|
|
@@ -803,8 +780,6 @@ Return `null` from the callback to drop the event:
|
|
|
803
780
|
|
|
804
781
|
Dart
|
|
805
782
|
|
|
806
|
-
PostHog AI
|
|
807
|
-
|
|
808
783
|
```dart
|
|
809
784
|
config.beforeSend = [
|
|
810
785
|
(event) {
|
|
@@ -825,10 +800,9 @@ Because it's just a function, you can filter however you like – an **ignorelis
|
|
|
825
800
|
|
|
826
801
|
Dart
|
|
827
802
|
|
|
828
|
-
PostHog AI
|
|
829
|
-
|
|
830
803
|
```dart
|
|
831
804
|
const ignoredScreens = {'Splash', 'Debug'};
|
|
805
|
+
|
|
832
806
|
config.beforeSend = [
|
|
833
807
|
(event) {
|
|
834
808
|
final screenName = event.properties?['$screen_name'];
|
|
@@ -863,8 +837,6 @@ You can enable debug mode during initialization by setting the `debug` option to
|
|
|
863
837
|
|
|
864
838
|
Dart
|
|
865
839
|
|
|
866
|
-
PostHog AI
|
|
867
|
-
|
|
868
840
|
```dart
|
|
869
841
|
final config = PostHogConfig('<ph_project_token>');
|
|
870
842
|
config.host = 'https://us.i.posthog.com';
|
|
@@ -878,8 +850,6 @@ You can also enable debug by calling the `Posthog().debug()` method in your code
|
|
|
878
850
|
|
|
879
851
|
Dart
|
|
880
852
|
|
|
881
|
-
PostHog AI
|
|
882
|
-
|
|
883
853
|
```dart
|
|
884
854
|
await Posthog().debug(true);
|
|
885
855
|
await Posthog().debug(false);
|