vybekiit 0.7.26 → 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.
Files changed (232) hide show
  1. package/dist/bin.js +3891 -1301
  2. package/dist/global-skills/aws-cdk/SKILL.md +19 -5
  3. package/dist/global-skills/aws-cdk/references/fast-deployments.md +191 -0
  4. package/dist/global-skills/aws-cdk/references/troubleshooting-deployment.md +16 -0
  5. package/dist/global-skills/aws-cloudformation/SKILL.md +16 -26
  6. package/dist/global-skills/aws-cloudformation/references/check-cloudformation-template-compliance.script.md +7 -3
  7. package/dist/global-skills/aws-cloudformation/references/cloudformation-language-server.md +177 -0
  8. package/dist/global-skills/aws-cloudformation/references/cloudformation-pre-deploy-validation.script.md +8 -2
  9. package/dist/global-skills/aws-cloudformation/references/persist-template-context.script.md +5 -8
  10. package/dist/global-skills/aws-cloudformation/references/retrieve-template-context.script.md +1 -1
  11. package/dist/global-skills/aws-cloudformation/references/security-considerations.md +51 -0
  12. package/dist/global-skills/aws-cloudformation/references/troubleshoot-failed-stack.script.md +138 -0
  13. package/dist/global-skills/aws-cloudformation/references/{validate-cloudformation-template.script.md → validate-with-cfn-lint.script.md} +15 -27
  14. package/dist/global-skills/aws-cloudformation/references/validate-with-cloudformation-validate.script.md +181 -0
  15. package/dist/global-skills/aws-cloudformation/references/validation-tool-selection.md +44 -0
  16. package/dist/global-skills/aws-serverless/SKILL.md +9 -1
  17. package/dist/global-skills/aws-serverless/references/architecture.md +3 -1
  18. package/dist/global-skills/aws-serverless/references/lambda.md +3 -1
  19. package/dist/global-skills/aws-serverless/references/orchestration.md +1 -0
  20. package/dist/global-skills/better-auth-best-practices/SKILL.md +18 -8
  21. package/dist/global-skills/eas-app-stores/SKILL.md +31 -15
  22. package/dist/global-skills/eas-app-stores/agents/openai.yaml +2 -2
  23. package/dist/global-skills/eas-app-stores/references/ios-app-store.md +37 -32
  24. package/dist/global-skills/eas-app-stores/references/native-ios.md +167 -0
  25. package/dist/global-skills/eas-app-stores/references/play-store.md +3 -7
  26. package/dist/global-skills/eas-app-stores/references/testflight.md +39 -35
  27. package/dist/global-skills/eas-simulator/SKILL.md +48 -26
  28. package/dist/global-skills/eas-simulator/references/controllers.md +32 -3
  29. package/dist/global-skills/eas-simulator/references/run-your-app.md +34 -4
  30. package/dist/global-skills/eas-simulator/references/troubleshooting.md +8 -4
  31. package/dist/global-skills/eas-update/SKILL.md +146 -0
  32. package/dist/global-skills/eas-update/agents/openai.yaml +4 -0
  33. package/dist/global-skills/expo-animation/RECIPES.md +2 -2
  34. package/dist/global-skills/expo-animation/SKILL.md +9 -2
  35. package/dist/global-skills/expo-brownfield/SKILL.md +18 -11
  36. package/dist/global-skills/expo-brownfield/agents/openai.yaml +2 -2
  37. package/dist/global-skills/expo-brownfield/references/brownfield-integrated.md +94 -69
  38. package/dist/global-skills/expo-brownfield/references/brownfield-isolated.md +40 -42
  39. package/dist/global-skills/expo-brownfield/references/comparison.md +5 -5
  40. package/dist/global-skills/expo-brownfield/references/feature-integration.md +163 -0
  41. package/dist/global-skills/expo-brownfield/references/troubleshooting.md +17 -17
  42. package/dist/global-skills/expo-brownfield/references/version-compatibility.md +40 -0
  43. package/dist/global-skills/expo-data-fetching/SKILL.md +27 -6
  44. package/dist/global-skills/expo-design-system/SKILL.md +27 -7
  45. package/dist/global-skills/expo-design-system/references/audit.md +7 -2
  46. package/dist/global-skills/expo-design-system/references/native-slop.md +74 -0
  47. package/dist/global-skills/expo-examples/SKILL.md +0 -1
  48. package/dist/global-skills/expo-examples/references/catalog.md +1 -1
  49. package/dist/global-skills/expo-migrate-module/SKILL.md +21 -10
  50. package/dist/global-skills/expo-migrate-module/references/compatibility.md +80 -23
  51. package/dist/global-skills/expo-migrate-module/references/migration-map.md +162 -11
  52. package/dist/global-skills/expo-native-ui/SKILL.md +25 -16
  53. package/dist/global-skills/expo-native-ui/agents/openai.yaml +2 -2
  54. package/dist/global-skills/expo-native-ui/references/controls.md +5 -46
  55. package/dist/global-skills/expo-native-ui/references/icons.md +21 -2
  56. package/dist/global-skills/expo-native-ui/references/media.md +15 -20
  57. package/dist/global-skills/expo-native-ui/references/visual-effects.md +12 -11
  58. package/dist/global-skills/expo-overview/SKILL.md +17 -12
  59. package/dist/global-skills/expo-router/SKILL.md +5 -3
  60. package/dist/global-skills/expo-router/references/tabs.md +5 -5
  61. package/dist/global-skills/expo-upgrade/SKILL.md +3 -1
  62. package/dist/global-skills/expo-web-to-native/references/false-friends.md +2 -2
  63. package/dist/global-skills/expo-web-to-native/references/native-patterns.md +1 -1
  64. package/dist/global-skills/firebase-ai-logic-basics/SKILL.md +13 -16
  65. package/dist/global-skills/firebase-ai-logic-basics/references/ios_setup.md +4 -5
  66. package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_android.md +4 -4
  67. package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_web.md +3 -3
  68. package/dist/global-skills/firebase-auth-basics/SKILL.md +11 -6
  69. package/dist/global-skills/firebase-auth-basics/references/client_sdk_android.md +4 -5
  70. package/dist/global-skills/firebase-auth-basics/references/client_sdk_web.md +3 -3
  71. package/dist/global-skills/firebase-auth-basics/references/flutter_setup.md +24 -25
  72. package/dist/global-skills/firebase-auth-basics/references/security_rules.md +4 -2
  73. package/dist/global-skills/firebase-crashlytics/references/android_setup.md +7 -4
  74. package/dist/global-skills/firebase-crashlytics/references/ios_setup.md +2 -3
  75. package/dist/global-skills/firebase-data-connect/SKILL.md +2 -1
  76. package/dist/global-skills/firebase-data-connect/examples.md +4 -4
  77. package/dist/global-skills/firebase-data-connect/reference/config.md +5 -4
  78. package/dist/global-skills/firebase-data-connect/reference/realtime.md +1 -2
  79. package/dist/global-skills/firebase-data-connect/reference/sdk_flutter.md +2 -2
  80. package/dist/global-skills/firebase-data-connect/reference/sdk_ios.md +2 -2
  81. package/dist/global-skills/firebase-data-connect/reference/sdk_web.md +17 -6
  82. package/dist/global-skills/firebase-data-connect/reference/security.md +5 -5
  83. package/dist/global-skills/firebase-data-connect/templates.md +2 -1
  84. package/dist/global-skills/firebase-firestore/SKILL.md +20 -8
  85. package/dist/global-skills/firebase-firestore/references/enterprise/android_sdk_usage.md +5 -4
  86. package/dist/global-skills/firebase-firestore/references/enterprise/data_model.md +12 -3
  87. package/dist/global-skills/firebase-firestore/references/enterprise/indexes.md +16 -18
  88. package/dist/global-skills/firebase-firestore/references/enterprise/provisioning.md +1 -1
  89. package/dist/global-skills/firebase-firestore/references/enterprise/python_sdk_usage.md +5 -1
  90. package/dist/global-skills/firebase-firestore/references/enterprise/web_sdk_usage.md +7 -7
  91. package/dist/global-skills/firebase-firestore/references/standard/android_sdk_usage.md +5 -5
  92. package/dist/global-skills/firebase-firestore/references/standard/flutter_setup.md +4 -4
  93. package/dist/global-skills/firebase-firestore/references/standard/indexes.md +16 -18
  94. package/dist/global-skills/firebase-firestore/references/standard/provisioning.md +1 -1
  95. package/dist/global-skills/firebase-remote-config-basics/SKILL.md +0 -5
  96. package/dist/global-skills/firebase-remote-config-basics/references/android_setup.md +36 -8
  97. package/dist/global-skills/firebase-remote-config-basics/references/ios_setup.md +1 -7
  98. package/dist/global-skills/firebase-security-rules-auditor/SKILL.md +17 -6
  99. package/dist/global-skills/{firebase-firestore/references/standard/security_rules.md → firestore-rules-creation/SKILL.md} +24 -13
  100. package/dist/global-skills/grow-my-customers/SKILL.md +23 -0
  101. package/dist/global-skills/instrument-feature-flags/SKILL.md +25 -25
  102. package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +141 -285
  103. package/dist/global-skills/instrument-feature-flags/references/android.md +6 -15
  104. package/dist/global-skills/instrument-feature-flags/references/api.md +4 -11
  105. package/dist/global-skills/instrument-feature-flags/references/best-practices.md +1 -13
  106. package/dist/global-skills/instrument-feature-flags/references/django.md +14 -27
  107. package/dist/global-skills/instrument-feature-flags/references/dotnet.md +20 -79
  108. package/dist/global-skills/instrument-feature-flags/references/elixir.md +1 -9
  109. package/dist/global-skills/instrument-feature-flags/references/flask.md +13 -13
  110. package/dist/global-skills/instrument-feature-flags/references/flutter.md +3 -24
  111. package/dist/global-skills/instrument-feature-flags/references/go.md +3 -15
  112. package/dist/global-skills/instrument-feature-flags/references/ios.md +4 -17
  113. package/dist/global-skills/instrument-feature-flags/references/java.md +5 -13
  114. package/dist/global-skills/instrument-feature-flags/references/laravel.md +13 -17
  115. package/dist/global-skills/instrument-feature-flags/references/next-js.md +25 -32
  116. package/dist/global-skills/instrument-feature-flags/references/nodejs.md +8 -15
  117. package/dist/global-skills/instrument-feature-flags/references/php.md +1 -15
  118. package/dist/global-skills/instrument-feature-flags/references/python.md +2 -15
  119. package/dist/global-skills/instrument-feature-flags/references/react-native.md +13 -15
  120. package/dist/global-skills/instrument-feature-flags/references/react.md +17 -21
  121. package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +37 -83
  122. package/dist/global-skills/instrument-feature-flags/references/ruby.md +2 -15
  123. package/dist/global-skills/instrument-feature-flags/references/rust.md +13 -25
  124. package/dist/global-skills/instrument-feature-flags/references/usage.md +14 -63
  125. package/dist/global-skills/instrument-feature-flags/references/web.md +9 -14
  126. package/dist/global-skills/instrument-product-analytics/SKILL.md +29 -29
  127. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-hybrid.md +3 -1
  128. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-ssr.md +3 -1
  129. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-static.md +3 -1
  130. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-view-transitions.md +3 -1
  131. package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby-on-rails.md +3 -1
  132. package/dist/global-skills/instrument-product-analytics/references/android.md +72 -107
  133. package/dist/global-skills/instrument-product-analytics/references/angular.md +26 -28
  134. package/dist/global-skills/instrument-product-analytics/references/astro.md +13 -24
  135. package/dist/global-skills/instrument-product-analytics/references/configuration.md +45 -63
  136. package/dist/global-skills/instrument-product-analytics/references/django.md +14 -27
  137. package/dist/global-skills/instrument-product-analytics/references/dotnet.md +20 -79
  138. package/dist/global-skills/instrument-product-analytics/references/elixir.md +47 -49
  139. package/dist/global-skills/instrument-product-analytics/references/flask.md +13 -13
  140. package/dist/global-skills/instrument-product-analytics/references/flutter.md +60 -90
  141. package/dist/global-skills/instrument-product-analytics/references/go.md +17 -56
  142. package/dist/global-skills/instrument-product-analytics/references/identify-users.md +15 -15
  143. package/dist/global-skills/instrument-product-analytics/references/ios.md +11 -15
  144. package/dist/global-skills/instrument-product-analytics/references/laravel.md +13 -17
  145. package/dist/global-skills/instrument-product-analytics/references/next-js.md +25 -32
  146. package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +13 -27
  147. package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +14 -28
  148. package/dist/global-skills/instrument-product-analytics/references/php.md +33 -84
  149. package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +229 -9
  150. package/dist/global-skills/instrument-product-analytics/references/python.md +415 -106
  151. package/dist/global-skills/instrument-product-analytics/references/react-native.md +161 -155
  152. package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +12 -33
  153. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +15 -33
  154. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +12 -33
  155. package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +26 -41
  156. package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +37 -83
  157. package/dist/global-skills/instrument-product-analytics/references/ruby.md +48 -108
  158. package/dist/global-skills/instrument-product-analytics/references/svelte.md +18 -24
  159. package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +17 -19
  160. package/dist/global-skills/instrument-product-analytics/references/usage.md +14 -63
  161. package/dist/global-skills/instrument-product-analytics/references/vue-js.md +29 -28
  162. package/dist/global-skills/manifest.json +8 -2
  163. package/dist/global-skills/mongodb-search-and-ai/SKILL.md +28 -37
  164. package/dist/global-skills/mongodb-search-and-ai/references/automated-embedding.md +438 -0
  165. package/dist/global-skills/mongodb-search-and-ai/references/hybrid-search.md +60 -4
  166. package/dist/global-skills/mongodb-search-and-ai/references/vector-search.md +46 -108
  167. package/dist/global-skills/neon/SKILL.md +207 -213
  168. package/dist/global-skills/neon/references/auth.md +12 -0
  169. package/dist/global-skills/neon/references/claimable-neon.md +10 -14
  170. package/dist/global-skills/neon/references/function-triggers.md +53 -0
  171. package/dist/global-skills/neon/references/logs-loki.md +61 -0
  172. package/dist/global-skills/neon/references/parse-env.md +32 -0
  173. package/dist/global-skills/neon/references/sdk.md +7 -0
  174. package/dist/global-skills/neon-ai-gateway/SKILL.md +14 -16
  175. package/dist/global-skills/neon-auth/SKILL.md +155 -0
  176. package/dist/global-skills/neon-auth/references/managed-auth.md +173 -0
  177. package/dist/global-skills/neon-auth/references/self-managed.md +25 -0
  178. package/dist/global-skills/neon-functions/SKILL.md +159 -84
  179. package/dist/global-skills/neon-functions/references/ai-sdk.md +4 -6
  180. package/dist/global-skills/neon-functions/references/function-triggers.md +249 -0
  181. package/dist/global-skills/neon-functions/references/mastra-studio.md +3 -3
  182. package/dist/global-skills/neon-functions/references/mcp.md +1 -1
  183. package/dist/global-skills/neon-functions/references/production-hardening.md +340 -0
  184. package/dist/global-skills/neon-functions/references/sse.md +8 -5
  185. package/dist/global-skills/neon-object-storage/SKILL.md +10 -11
  186. package/dist/global-skills/neon-postgres/SKILL.md +120 -17
  187. package/dist/global-skills/neon-postgres/references/full-text-search.md +99 -0
  188. package/dist/global-skills/neon-postgres/references/hybrid-search.md +90 -0
  189. package/dist/global-skills/neon-postgres/references/lakebase-search-drizzle.md +172 -0
  190. package/dist/global-skills/neon-postgres/references/vector-search.md +137 -0
  191. package/dist/global-skills/neon-postgres-branches/SKILL.md +3 -3
  192. package/dist/global-skills/neon-postgres-egress-optimizer/SKILL.md +1 -1
  193. package/dist/global-skills/onboarding/SKILL.md +8 -6
  194. package/dist/global-skills/resend/SKILL.md +4 -2
  195. package/dist/global-skills/resend/references/broadcasts.md +6 -1
  196. package/dist/global-skills/resend/references/receiving.md +29 -10
  197. package/dist/global-skills/resend/references/sending/email-management.md +14 -4
  198. package/dist/global-skills/resend/references/topics.md +9 -6
  199. package/dist/global-skills/resend/references/usage.md +117 -0
  200. package/dist/global-skills/resend/references/webhooks.md +59 -2
  201. package/dist/global-skills/stripe-best-practices/SKILL.md +35 -29
  202. package/dist/global-skills/stripe-best-practices/references/billing.md +9 -2
  203. package/dist/global-skills/stripe-best-practices/references/payments.md +4 -2
  204. package/dist/global-skills/stripe-best-practices/references/security.md +3 -1
  205. package/dist/global-skills/stripe-best-practices/references/tax.md +39 -20
  206. package/dist/global-skills/supabase/SKILL.md +6 -0
  207. package/dist/global-skills/use-railway/SKILL.md +42 -22
  208. package/dist/global-skills/use-railway/references/analyze-db.md +7 -6
  209. package/dist/global-skills/use-railway/references/cloud-agents.md +70 -0
  210. package/dist/global-skills/use-railway/references/configure.md +17 -2
  211. package/dist/global-skills/use-railway/references/databases.md +107 -0
  212. package/dist/global-skills/use-railway/references/deploy.md +5 -5
  213. package/dist/global-skills/use-railway/references/feature-flags.md +25 -13
  214. package/dist/global-skills/use-railway/references/iac.md +66 -77
  215. package/dist/global-skills/use-railway/references/operate.md +26 -3
  216. package/dist/global-skills/use-railway/references/request.md +31 -23
  217. package/dist/global-skills/use-railway/references/setup.md +16 -5
  218. package/dist/global-skills/use-railway/references/tracing.md +261 -0
  219. package/dist/global-skills/use-railway/references/usage.md +52 -0
  220. package/dist/global-skills/validate-my-idea/SKILL.md +54 -0
  221. package/dist/global-skills/{feedback → vybekiit-feedback}/SKILL.md +16 -12
  222. package/dist/global-skills/watch-my-app/SKILL.md +53 -0
  223. package/dist/global-skills/workers-best-practices/SKILL.md +36 -103
  224. package/dist/global-skills/workers-best-practices/references/configuration.md +139 -0
  225. package/dist/global-skills/workers-best-practices/references/platform-apis.md +51 -0
  226. package/dist/global-skills/workers-best-practices/references/{rules.md → runtime-patterns.md} +13 -137
  227. package/dist/global-skills/wrangler/SKILL.md +48 -901
  228. package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Sources/main.swift +19 -15
  229. package/package.json +9 -8
  230. package/dist/global-skills/expo-native-ui/references/animations.md +0 -220
  231. package/dist/global-skills/firebase-firestore/references/enterprise/security_rules.md +0 -577
  232. 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 - Docs
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
- You'll need to have [Cocoapods](https://guides.cocoapods.org/using/getting-started.html) installed.
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 in your Podfile:
137
+ In both cases, you'll need to set the minimum platform version to iOS 13.0.
150
138
 
151
- ios/Podfile
139
+ For CocoaPods projects, set it in your `Podfile`:
152
140
 
153
- PostHog AI
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
- For Web, 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:
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
- PostHog AI
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.toString = function (t) {
222
- var e = "posthog";
223
- return ("posthog" !== a && (e += "." + a), t || (e += " (stub)"), e);
224
- },
225
- u.people.toString = function () {
226
- return u.toString(1) + ".people (stub)";
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 (if using [navigatorObservers](https://docs.flutter.dev/ui/navigation) or [go\_router](https://pub.dev/packages/go_router). You'd need to set up the `PosthogObserver` manually.)
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
- > Note: Your routes should be named. Otherwise, they won't be recorded.
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/data/identify.md#alias-assigning-multiple-distinct-ids-to-the-same-user) to best understand how to correctly use this method.
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);