vybekiit 0.7.33 → 0.7.35
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 +818 -92
- package/dist/global-skills/eas-app-stores/SKILL.md +2 -2
- package/dist/global-skills/eas-hosting/SKILL.md +2 -2
- package/dist/global-skills/eas-observe/SKILL.md +7 -15
- package/dist/global-skills/eas-observe/references/queries.md +51 -10
- package/dist/global-skills/eas-observe/references/setup.md +60 -7
- package/dist/global-skills/eas-simulator/SKILL.md +2 -2
- package/dist/global-skills/eas-simulator/references/run-your-app.md +2 -0
- package/dist/global-skills/eas-update/SKILL.md +2 -2
- package/dist/global-skills/eas-update-insights/SKILL.md +2 -2
- package/dist/global-skills/eas-workflows/SKILL.md +2 -2
- package/dist/global-skills/expo-animation/SKILL.md +2 -2
- package/dist/global-skills/expo-app-clip/SKILL.md +2 -2
- package/dist/global-skills/expo-brownfield/SKILL.md +2 -2
- package/dist/global-skills/expo-data-fetching/SKILL.md +2 -2
- package/dist/global-skills/expo-design-system/SKILL.md +2 -2
- package/dist/global-skills/expo-dev-client/SKILL.md +4 -2
- package/dist/global-skills/expo-dom/SKILL.md +2 -2
- package/dist/global-skills/expo-examples/SKILL.md +2 -2
- package/dist/global-skills/expo-migrate-module/SKILL.md +2 -2
- package/dist/global-skills/expo-module/SKILL.md +2 -2
- package/dist/global-skills/expo-native-ui/SKILL.md +2 -2
- package/dist/global-skills/expo-overview/SKILL.md +9 -4
- package/dist/global-skills/expo-overview/references/launch-without-dev-menu.md +24 -0
- package/dist/global-skills/expo-project-structure/SKILL.md +2 -2
- package/dist/global-skills/expo-router/SKILL.md +2 -2
- package/dist/global-skills/expo-ui/SKILL.md +2 -2
- package/dist/global-skills/expo-upgrade/SKILL.md +2 -2
- package/dist/global-skills/expo-web-to-native/SKILL.md +2 -2
- package/dist/global-skills/expo-web-to-native/references/verify-on-device.md +1 -1
- package/dist/global-skills/firebase-app-hosting-basics/SKILL.md +16 -3
- package/dist/global-skills/firebase-app-hosting-basics/references/cli_commands.md +10 -12
- package/dist/global-skills/firebase-app-hosting-basics/references/configuration.md +2 -1
- package/dist/global-skills/firebase-basics/SKILL.md +6 -4
- package/dist/global-skills/firebase-basics/references/web_setup.md +3 -3
- package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +81 -333
- package/dist/global-skills/instrument-feature-flags/references/android.md +19 -13
- package/dist/global-skills/instrument-feature-flags/references/api.md +17 -13
- package/dist/global-skills/instrument-feature-flags/references/best-practices.md +35 -35
- package/dist/global-skills/instrument-feature-flags/references/django.md +120 -72
- package/dist/global-skills/instrument-feature-flags/references/dotnet.md +48 -102
- package/dist/global-skills/instrument-feature-flags/references/elixir.md +4 -10
- package/dist/global-skills/instrument-feature-flags/references/flask.md +55 -39
- package/dist/global-skills/instrument-feature-flags/references/flutter.md +19 -13
- package/dist/global-skills/instrument-feature-flags/references/go.md +21 -13
- package/dist/global-skills/instrument-feature-flags/references/ios.md +19 -13
- package/dist/global-skills/instrument-feature-flags/references/java.md +4 -12
- package/dist/global-skills/instrument-feature-flags/references/laravel.md +18 -16
- package/dist/global-skills/instrument-feature-flags/references/next-js.md +44 -54
- package/dist/global-skills/instrument-feature-flags/references/nodejs.md +21 -13
- package/dist/global-skills/instrument-feature-flags/references/php.md +21 -13
- package/dist/global-skills/instrument-feature-flags/references/python.md +22 -14
- package/dist/global-skills/instrument-feature-flags/references/react-native.md +18 -13
- package/dist/global-skills/instrument-feature-flags/references/react.md +21 -14
- package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +31 -68
- package/dist/global-skills/instrument-feature-flags/references/ruby.md +21 -13
- package/dist/global-skills/instrument-feature-flags/references/rust.md +10 -34
- package/dist/global-skills/instrument-feature-flags/references/usage.md +94 -114
- package/dist/global-skills/instrument-feature-flags/references/web.md +21 -13
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-android.md +7 -7
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-expo.md +2 -2
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-fastapi.md +1 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-flask.md +1 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-laravel.md +2 -2
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-php.md +1 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-python.md +1 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby.md +1 -1
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-swift.md +4 -4
- package/dist/global-skills/instrument-product-analytics/references/android.md +64 -109
- package/dist/global-skills/instrument-product-analytics/references/angular.md +32 -28
- package/dist/global-skills/instrument-product-analytics/references/astro.md +29 -34
- package/dist/global-skills/instrument-product-analytics/references/configuration.md +27 -42
- package/dist/global-skills/instrument-product-analytics/references/django.md +120 -72
- package/dist/global-skills/instrument-product-analytics/references/dotnet.md +48 -102
- package/dist/global-skills/instrument-product-analytics/references/elixir.md +25 -50
- package/dist/global-skills/instrument-product-analytics/references/flask.md +55 -39
- package/dist/global-skills/instrument-product-analytics/references/flutter.md +94 -96
- package/dist/global-skills/instrument-product-analytics/references/go.md +39 -77
- package/dist/global-skills/instrument-product-analytics/references/identify-users.md +24 -26
- package/dist/global-skills/instrument-product-analytics/references/ios.md +22 -22
- package/dist/global-skills/instrument-product-analytics/references/laravel.md +18 -16
- package/dist/global-skills/instrument-product-analytics/references/next-js.md +44 -54
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +32 -34
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +36 -36
- package/dist/global-skills/instrument-product-analytics/references/php.md +42 -87
- package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +15 -12
- package/dist/global-skills/instrument-product-analytics/references/python.md +106 -154
- package/dist/global-skills/instrument-product-analytics/references/react-native.md +97 -176
- package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +29 -40
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +29 -38
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +29 -40
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +32 -37
- package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +31 -68
- package/dist/global-skills/instrument-product-analytics/references/ruby.md +40 -96
- package/dist/global-skills/instrument-product-analytics/references/svelte.md +34 -34
- package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +19 -19
- package/dist/global-skills/instrument-product-analytics/references/usage.md +94 -114
- package/dist/global-skills/instrument-product-analytics/references/vue-js.md +33 -45
- package/dist/global-skills/manifest.json +2 -1
- package/dist/global-skills/mongodb-search-and-ai/SKILL.md +40 -22
- package/dist/global-skills/mongodb-search-and-ai/references/automated-embedding.md +8 -2
- package/dist/global-skills/mongodb-search-and-ai/references/quick-start.md +725 -0
- package/dist/global-skills/mongodb-search-and-ai/scripts/quickstart_complete.py +386 -0
- package/dist/global-skills/neon/SKILL.md +15 -10
- package/dist/global-skills/neon/references/claimable-neon.md +2 -0
- package/dist/global-skills/neon-functions/SKILL.md +12 -11
- package/dist/global-skills/neon-functions/references/sse.md +2 -2
- package/dist/global-skills/neon-object-storage/SKILL.md +5 -4
- package/dist/global-skills/neon-postgres/SKILL.md +4 -1
- package/dist/global-skills/neon-realtime/SKILL.md +207 -0
- package/dist/global-skills/neon-realtime/references/mutations.md +743 -0
- package/dist/global-skills/neon-realtime/references/queries.md +509 -0
- package/dist/global-skills/neon-realtime/references/reactivity.md +407 -0
- package/dist/global-skills/neon-realtime/references/ssr.md +695 -0
- package/dist/global-skills/neon-realtime/references/subscribing.md +485 -0
- package/dist/global-skills/resend/SKILL.md +4 -2
- package/dist/global-skills/resend/references/inboxes.md +377 -0
- package/dist/global-skills/resend/references/webhooks.md +9 -0
- package/dist/global-skills/stripe-best-practices/SKILL.md +1 -1
- package/dist/global-skills/stripe-best-practices/references/connect.md +1 -1
- package/dist/global-skills/stripe-best-practices/references/security.md +9 -9
- package/dist/global-skills/vybekiitReferences/backend/AGENTS.md +1 -1
- package/dist/global-skills/vybekiitReferences/backend/agent/goal-routes.json +303 -18
- package/dist/global-skills/vybekiitReferences/extension/AGENTS.md +1 -1
- package/dist/global-skills/vybekiitReferences/extension/agent/goal-routes.json +352 -18
- package/dist/global-skills/vybekiitReferences/mobile/AGENTS.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/agent/goal-routes.json +413 -22
- package/dist/global-skills/vybekiitReferences/spa/AGENTS.md +1 -1
- package/dist/global-skills/vybekiitReferences/spa/agent/goal-routes.json +391 -21
- package/dist/global-skills/vybekiitReferences/web/AGENTS.md +14 -2
- package/dist/global-skills/vybekiitReferences/web/agent/goal-routes.json +490 -32
- package/package.json +8 -8
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
# React Native Feature Flags installation
|
|
4
4
|
|
|
5
|
+
Canonical URL: https://posthog.com/docs/feature-flags/installation/react-native
|
|
6
|
+
|
|
7
|
+
> **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.i.posthog.com` instead of `https://us.i.posthog.com` (ingestion host).
|
|
8
|
+
|
|
9
|
+
## On this page
|
|
10
|
+
|
|
11
|
+
- [Install the package](#install-the-package)
|
|
12
|
+
- [Configure PostHog](#configure-posthog)
|
|
13
|
+
- [Send events](#send-events)
|
|
14
|
+
- [Use feature flags](#use-feature-flags)
|
|
15
|
+
- [Running experiments](#running-experiments)
|
|
16
|
+
- [Next steps](#next-steps)
|
|
17
|
+
|
|
5
18
|
1. 1
|
|
6
19
|
|
|
7
20
|
## Install the package
|
|
@@ -155,16 +168,8 @@
|
|
|
155
168
|
|
|
156
169
|
| Resource | Description |
|
|
157
170
|
| --- | --- |
|
|
158
|
-
| [Creating a feature flag](/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog |
|
|
159
|
-
| [Adding feature flag code](/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms |
|
|
160
|
-
| [Framework-specific guides](/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks |
|
|
161
|
-
| [How to do a phased rollout](/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk |
|
|
162
|
-
| [More tutorials](/docs/feature-flags/tutorials.md) | Other real-world examples and use cases |
|
|
163
|
-
|
|
164
|
-
### Still have questions?
|
|
165
|
-
|
|
166
|
-
Ask PostHog AI
|
|
167
|
-
|
|
168
|
-
### Was this page useful?
|
|
169
|
-
|
|
170
|
-
HelpfulCould be better
|
|
171
|
+
| [Creating a feature flag](https://posthog.com/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog |
|
|
172
|
+
| [Adding feature flag code](https://posthog.com/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms |
|
|
173
|
+
| [Framework-specific guides](https://posthog.com/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks |
|
|
174
|
+
| [How to do a phased rollout](https://posthog.com/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk |
|
|
175
|
+
| [More tutorials](https://posthog.com/docs/feature-flags/tutorials.md) | Other real-world examples and use cases |
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
# React Feature Flags installation
|
|
4
4
|
|
|
5
|
+
Canonical URL: https://posthog.com/docs/feature-flags/installation/react
|
|
6
|
+
|
|
7
|
+
> **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.i.posthog.com` instead of `https://us.i.posthog.com` (ingestion host).
|
|
8
|
+
|
|
9
|
+
## On this page
|
|
10
|
+
|
|
11
|
+
- [Install the package](#install-the-package)
|
|
12
|
+
- [Add environment variables](#add-environment-variables)
|
|
13
|
+
- [Initialize PostHog](#initialize-posthog)
|
|
14
|
+
- [Accessing PostHog in your code](#accessing-posthog-in-your-code)
|
|
15
|
+
- [Send events](#send-events)
|
|
16
|
+
- [Use feature flags](#use-feature-flags)
|
|
17
|
+
- [Running experiments](#running-experiments)
|
|
18
|
+
- [Next steps](#next-steps)
|
|
19
|
+
|
|
5
20
|
1. 1
|
|
6
21
|
|
|
7
22
|
## Install the package
|
|
@@ -82,7 +97,7 @@
|
|
|
82
97
|
|
|
83
98
|
**defaults option**
|
|
84
99
|
|
|
85
|
-
The `defaults` option automatically configures PostHog with recommended settings for new projects. See [SDK defaults](/docs/libraries/js.md#sdk-defaults) for details.
|
|
100
|
+
The `defaults` option automatically configures PostHog with recommended settings for new projects. See [SDK defaults](https://posthog.com/docs/libraries/js.md#sdk-defaults) for details.
|
|
86
101
|
|
|
87
102
|
4. 4
|
|
88
103
|
|
|
@@ -289,16 +304,8 @@
|
|
|
289
304
|
|
|
290
305
|
| Resource | Description |
|
|
291
306
|
| --- | --- |
|
|
292
|
-
| [Creating a feature flag](/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog |
|
|
293
|
-
| [Adding feature flag code](/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms |
|
|
294
|
-
| [Framework-specific guides](/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks |
|
|
295
|
-
| [How to do a phased rollout](/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk |
|
|
296
|
-
| [More tutorials](/docs/feature-flags/tutorials.md) | Other real-world examples and use cases |
|
|
297
|
-
|
|
298
|
-
### Still have questions?
|
|
299
|
-
|
|
300
|
-
Ask PostHog AI
|
|
301
|
-
|
|
302
|
-
### Was this page useful?
|
|
303
|
-
|
|
304
|
-
HelpfulCould be better
|
|
307
|
+
| [Creating a feature flag](https://posthog.com/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog |
|
|
308
|
+
| [Adding feature flag code](https://posthog.com/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms |
|
|
309
|
+
| [Framework-specific guides](https://posthog.com/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks |
|
|
310
|
+
| [How to do a phased rollout](https://posthog.com/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk |
|
|
311
|
+
| [More tutorials](https://posthog.com/docs/feature-flags/tutorials.md) | Other real-world examples and use cases |
|
|
@@ -2,18 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
# Ruby on Rails
|
|
4
4
|
|
|
5
|
+
Canonical URL: https://posthog.com/docs/libraries/ruby-on-rails
|
|
6
|
+
|
|
7
|
+
> **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.i.posthog.com` instead of `https://us.i.posthog.com` (ingestion host), and use `https://eu.posthog.com` instead of `https://us.posthog.com` (app host for links).
|
|
8
|
+
|
|
9
|
+
## On this page
|
|
10
|
+
|
|
11
|
+
- [Beta: integration via LLM](#beta-integration-via-llm)
|
|
12
|
+
- [Features](#features)
|
|
13
|
+
- [Installation](#installation)
|
|
14
|
+
- [Identifying users](#identifying-users)
|
|
15
|
+
- [Configuration](#configuration)
|
|
16
|
+
- [Capturing events](#capturing-events)
|
|
17
|
+
- [Request context](#request-context)
|
|
18
|
+
- [Logs](#logs)
|
|
19
|
+
- [Error tracking](#error-tracking)
|
|
20
|
+
- [Feature flags](#feature-flags)
|
|
21
|
+
- [Testing](#testing)
|
|
22
|
+
- [Configuration reference](#configuration-reference)
|
|
23
|
+
- [Troubleshooting](#troubleshooting)
|
|
24
|
+
- [Next steps](#next-steps)
|
|
25
|
+
|
|
5
26
|
PostHog makes it easy to get data about traffic and usage of your Ruby on Rails app. Integrating PostHog enables analytics, custom event capture, feature flags, and automatic exception tracking.
|
|
6
27
|
|
|
7
28
|
This guide walks you through integrating PostHog into your Rails app using the [posthog-rails gem](https://github.com/PostHog/posthog-ruby/tree/main/posthog-rails).
|
|
8
29
|
|
|
9
30
|
## Beta: integration via LLM
|
|
10
31
|
|
|
11
|
-
Install PostHog for Rails in seconds with our wizard by running this prompt with [LLM coding agents](/blog/envoy-wizard-llm-agent.md) like Cursor and Bolt, or by running it in your terminal.
|
|
32
|
+
Install PostHog for Rails in seconds with our wizard by running this prompt with [LLM coding agents](https://posthog.com/blog/envoy-wizard-llm-agent.md) like Cursor and Bolt, or by running it in your terminal.
|
|
12
33
|
|
|
13
34
|
`npx @posthog/wizard`
|
|
14
35
|
|
|
15
|
-
[Learn more](/wizard.md)
|
|
16
|
-
|
|
17
36
|
Or, to integrate manually, continue with the rest of this guide.
|
|
18
37
|
|
|
19
38
|
## Features
|
|
@@ -24,7 +43,7 @@ Or, to integrate manually, continue with the rest of this guide.
|
|
|
24
43
|
- **Smart filtering** – Excludes common Rails exceptions (404s, etc.) by default
|
|
25
44
|
- **Request context** – Adds request metadata and optional PostHog tracing header identity/session context to captured events
|
|
26
45
|
- **Rails 7.0+ error reporter** – Integrates with Rails' built-in error reporting
|
|
27
|
-
- **Log forwarding** – Optionally forwards `Rails.logger` output to [PostHog Logs](/docs/logs.md) over OpenTelemetry, automatically correlated with request context (Ruby 3.3+)
|
|
46
|
+
- **Log forwarding** – Optionally forwards `Rails.logger` output to [PostHog Logs](https://posthog.com/docs/logs.md) over OpenTelemetry, automatically correlated with request context (Ruby 3.3+)
|
|
28
47
|
|
|
29
48
|
## Installation
|
|
30
49
|
|
|
@@ -39,24 +58,20 @@ gem 'posthog-rails'
|
|
|
39
58
|
|
|
40
59
|
Then run:
|
|
41
60
|
|
|
42
|
-
Terminal
|
|
43
|
-
|
|
44
61
|
```bash
|
|
45
62
|
bundle install
|
|
46
63
|
```
|
|
47
64
|
|
|
48
65
|
## Identifying users
|
|
49
66
|
|
|
50
|
-
> **Identifying users is required.** Backend events need a `distinct_id` that matches the ID your frontend uses when calling `posthog.identify()`. Without this, backend events are orphaned — they can't be linked to frontend event captures, [session replays](/docs/session-replay.md), [LLM traces](/docs/ai-engineering.md), or [error tracking](/docs/error-tracking.md).
|
|
67
|
+
> **Identifying users is required.** Backend events need a `distinct_id` that matches the ID your frontend uses when calling `posthog.identify()`. Without this, backend events are orphaned — they can't be linked to frontend event captures, [session replays](https://posthog.com/docs/session-replay.md), [LLM traces](https://posthog.com/docs/ai-engineering.md), or [error tracking](https://posthog.com/docs/error-tracking.md).
|
|
51
68
|
>
|
|
52
|
-
> See our guide on [identifying users](/docs/getting-started/identify-users.md) for how to set this up.
|
|
69
|
+
> See our guide on [identifying users](https://posthog.com/docs/getting-started/identify-users.md) for how to set this up.
|
|
53
70
|
|
|
54
71
|
### Generate the initializer
|
|
55
72
|
|
|
56
73
|
Run the install generator to create the PostHog initializer:
|
|
57
74
|
|
|
58
|
-
Terminal
|
|
59
|
-
|
|
60
75
|
```bash
|
|
61
76
|
rails generate posthog:install
|
|
62
77
|
```
|
|
@@ -130,8 +145,6 @@ You can find your project token and instance address in [your project settings](
|
|
|
130
145
|
|
|
131
146
|
> **Tip:** Use [`Rails.application.credentials`](https://guides.rubyonrails.org/security.html#custom-credentials) to avoid hardcoding API keys. First, add your keys and then reference them in your initializer:
|
|
132
147
|
>
|
|
133
|
-
> Terminal
|
|
134
|
-
>
|
|
135
148
|
> ```bash
|
|
136
149
|
> rails credentials:edit
|
|
137
150
|
> ```
|
|
@@ -157,8 +170,6 @@ You can find your project token and instance address in [your project settings](
|
|
|
157
170
|
|
|
158
171
|
Track custom events anywhere in your Rails app:
|
|
159
172
|
|
|
160
|
-
Ruby
|
|
161
|
-
|
|
162
173
|
```ruby
|
|
163
174
|
PostHog.capture({
|
|
164
175
|
distinct_id: current_user.id,
|
|
@@ -169,8 +180,6 @@ PostHog.capture({
|
|
|
169
180
|
|
|
170
181
|
Identify a user and set their person properties:
|
|
171
182
|
|
|
172
|
-
Ruby
|
|
173
|
-
|
|
174
183
|
```ruby
|
|
175
184
|
PostHog.identify({
|
|
176
185
|
distinct_id: current_user.id,
|
|
@@ -189,32 +198,28 @@ PostHog Rails automatically applies request-scoped context to events captured du
|
|
|
189
198
|
|
|
190
199
|
When `use_tracing_headers` is enabled, PostHog tracing headers (`X-PostHog-Distinct-Id` and `X-PostHog-Session-Id`) are also used as default `distinct_id` and `$session_id` values. Explicit `distinct_id` and properties passed to `PostHog.capture` always take precedence.
|
|
191
200
|
|
|
192
|
-
If you're using [PostHog JS](/docs/libraries/js.md) on the frontend, configure [`tracing_headers`](/docs/libraries/js/config.md#tracing-headers) for your Rails backend hostname so browser requests include the session and distinct ID headers.
|
|
201
|
+
If you're using [PostHog JS](https://posthog.com/docs/libraries/js.md) on the frontend, configure [`tracing_headers`](https://posthog.com/docs/libraries/js/config.md#tracing-headers) for your Rails backend hostname so browser requests include the session and distinct ID headers.
|
|
193
202
|
|
|
194
203
|
Tracing headers are client-controlled analytics context, not authentication or authorization. Pass an authenticated `distinct_id` explicitly for security-sensitive server-side decisions.
|
|
195
204
|
|
|
196
205
|
Disable tracing header identity/session capture if you do not want client-supplied tracing headers used for server-side events. Request metadata is still captured:
|
|
197
206
|
|
|
198
|
-
Ruby
|
|
199
|
-
|
|
200
207
|
```ruby
|
|
201
208
|
PostHog::Rails.config.use_tracing_headers = false
|
|
202
209
|
```
|
|
203
210
|
|
|
204
211
|
## Logs
|
|
205
212
|
|
|
206
|
-
To set up [PostHog Logs](/docs/logs.md) in your Rails app, follow the [Ruby on Rails logs installation guide](/docs/logs/installation/ruby-on-rails.md). The integration forwards `Rails.logger` output to PostHog Logs over OpenTelemetry, automatically correlated with each request's distinct ID and session ID. Requires Ruby 3.3+.
|
|
213
|
+
To set up [PostHog Logs](https://posthog.com/docs/logs.md) in your Rails app, follow the [Ruby on Rails logs installation guide](https://posthog.com/docs/logs/installation/ruby-on-rails.md). The integration forwards `Rails.logger` output to PostHog Logs over OpenTelemetry, automatically correlated with each request's distinct ID and session ID. Requires Ruby 3.3+.
|
|
207
214
|
|
|
208
215
|
## Error tracking
|
|
209
216
|
|
|
210
|
-
For full details on setting up error tracking with Rails, see our [Rails error tracking installation guide](/docs/error-tracking/installation/ruby-on-rails.md).
|
|
217
|
+
For full details on setting up error tracking with Rails, see our [Rails error tracking installation guide](https://posthog.com/docs/error-tracking/installation/ruby-on-rails.md).
|
|
211
218
|
|
|
212
219
|
### Automatic exception tracking
|
|
213
220
|
|
|
214
221
|
When `auto_capture_exceptions` is enabled, exceptions are automatically captured:
|
|
215
222
|
|
|
216
|
-
Ruby
|
|
217
|
-
|
|
218
223
|
```ruby
|
|
219
224
|
class PostsController < ApplicationController
|
|
220
225
|
def show
|
|
@@ -230,8 +235,6 @@ end
|
|
|
230
235
|
|
|
231
236
|
You can also manually capture exceptions:
|
|
232
237
|
|
|
233
|
-
Ruby
|
|
234
|
-
|
|
235
238
|
```ruby
|
|
236
239
|
PostHog.capture_exception(
|
|
237
240
|
exception,
|
|
@@ -242,8 +245,6 @@ PostHog.capture_exception(
|
|
|
242
245
|
|
|
243
246
|
If you evaluated feature flags for the request, pass the same snapshot to include matching flag properties on the exception event:
|
|
244
247
|
|
|
245
|
-
Ruby
|
|
246
|
-
|
|
247
248
|
```ruby
|
|
248
249
|
flags = PostHog.evaluate_flags(current_user.id)
|
|
249
250
|
|
|
@@ -259,8 +260,6 @@ PostHog.capture_exception(
|
|
|
259
260
|
|
|
260
261
|
When `auto_instrument_active_job` is enabled, ActiveJob exceptions are automatically captured with job context:
|
|
261
262
|
|
|
262
|
-
Ruby
|
|
263
|
-
|
|
264
263
|
```ruby
|
|
265
264
|
class EmailJob < ApplicationJob
|
|
266
265
|
def perform(user_id)
|
|
@@ -275,8 +274,6 @@ end
|
|
|
275
274
|
|
|
276
275
|
By default, PostHog extracts a `distinct_id` from job arguments by looking for a `user_id` key in hash arguments:
|
|
277
276
|
|
|
278
|
-
Ruby
|
|
279
|
-
|
|
280
277
|
```ruby
|
|
281
278
|
# PostHog will automatically use options[:user_id] as the distinct_id
|
|
282
279
|
ProcessOrderJob.perform_later(order.id, user_id: current_user.id)
|
|
@@ -284,8 +281,6 @@ ProcessOrderJob.perform_later(order.id, user_id: current_user.id)
|
|
|
284
281
|
|
|
285
282
|
For more control, use the `posthog_distinct_id` class method. The proc or block receives the same arguments as `perform`:
|
|
286
283
|
|
|
287
|
-
Ruby
|
|
288
|
-
|
|
289
284
|
```ruby
|
|
290
285
|
class SendWelcomeEmailJob < ApplicationJob
|
|
291
286
|
posthog_distinct_id ->(user, _options) { user.id }
|
|
@@ -298,8 +293,6 @@ end
|
|
|
298
293
|
|
|
299
294
|
You can also use a block:
|
|
300
295
|
|
|
301
|
-
Ruby
|
|
302
|
-
|
|
303
296
|
```ruby
|
|
304
297
|
class ProcessOrderJob < ApplicationJob
|
|
305
298
|
posthog_distinct_id do |_order, notify_user_id|
|
|
@@ -316,8 +309,6 @@ end
|
|
|
316
309
|
|
|
317
310
|
PostHog integrates with Rails' built-in error reporting:
|
|
318
311
|
|
|
319
|
-
Ruby
|
|
320
|
-
|
|
321
312
|
```ruby
|
|
322
313
|
# These errors are automatically sent to PostHog
|
|
323
314
|
Rails.error.handle do
|
|
@@ -335,8 +326,6 @@ PostHog Rails automatically captures authenticated user information from your co
|
|
|
335
326
|
|
|
336
327
|
If your user method has a different name, configure it:
|
|
337
328
|
|
|
338
|
-
Ruby
|
|
339
|
-
|
|
340
329
|
```ruby
|
|
341
330
|
PostHog::Rails.config.current_user_method = :logged_in_user
|
|
342
331
|
```
|
|
@@ -355,16 +344,12 @@ It also checks hash-like users for `id`, `pk`, and `uuid` keys.
|
|
|
355
344
|
|
|
356
345
|
You can configure a specific method:
|
|
357
346
|
|
|
358
|
-
Ruby
|
|
359
|
-
|
|
360
347
|
```ruby
|
|
361
348
|
PostHog::Rails.config.user_id_method = :email
|
|
362
349
|
```
|
|
363
350
|
|
|
364
351
|
Or define a method on your User model:
|
|
365
352
|
|
|
366
|
-
Ruby
|
|
367
|
-
|
|
368
353
|
```ruby
|
|
369
354
|
class User < ApplicationRecord
|
|
370
355
|
def posthog_distinct_id
|
|
@@ -393,8 +378,6 @@ The following exceptions are not reported by default (common 4xx errors):
|
|
|
393
378
|
|
|
394
379
|
Add more with:
|
|
395
380
|
|
|
396
|
-
Ruby
|
|
397
|
-
|
|
398
381
|
```ruby
|
|
399
382
|
PostHog::Rails.config.excluded_exceptions = ['MyException']
|
|
400
383
|
```
|
|
@@ -403,8 +386,6 @@ PostHog::Rails.config.excluded_exceptions = ['MyException']
|
|
|
403
386
|
|
|
404
387
|
Evaluate flags once for the current user, then read values from the returned snapshot:
|
|
405
388
|
|
|
406
|
-
Ruby
|
|
407
|
-
|
|
408
389
|
```ruby
|
|
409
390
|
class PostsController < ApplicationController
|
|
410
391
|
def show
|
|
@@ -421,8 +402,6 @@ end
|
|
|
421
402
|
|
|
422
403
|
For multivariate flags and experiments, use `get_flag`:
|
|
423
404
|
|
|
424
|
-
Ruby
|
|
425
|
-
|
|
426
405
|
```ruby
|
|
427
406
|
flags = PostHog.evaluate_flags(current_user.id)
|
|
428
407
|
variant = flags.get_flag('checkout-experiment')
|
|
@@ -434,8 +413,6 @@ end
|
|
|
434
413
|
|
|
435
414
|
When capturing an event after branching on a flag, pass the same `flags` snapshot so the event includes the exact flag values used by your code:
|
|
436
415
|
|
|
437
|
-
Ruby
|
|
438
|
-
|
|
439
416
|
```ruby
|
|
440
417
|
flags = PostHog.evaluate_flags(current_user.id)
|
|
441
418
|
|
|
@@ -448,13 +425,11 @@ PostHog.capture({
|
|
|
448
425
|
|
|
449
426
|
For local evaluation, ensure you've set `personal_api_key`:
|
|
450
427
|
|
|
451
|
-
Ruby
|
|
452
|
-
|
|
453
428
|
```ruby
|
|
454
429
|
config.personal_api_key = Rails.application.credentials.posthog[:personal_api_key]
|
|
455
430
|
```
|
|
456
431
|
|
|
457
|
-
See our [Ruby SDK docs](/docs/libraries/ruby.md#local-evaluation) for details on local evaluation with Puma and Unicorn servers.
|
|
432
|
+
See our [Ruby SDK docs](https://posthog.com/docs/libraries/ruby.md#local-evaluation) for details on local evaluation with Puma and Unicorn servers.
|
|
458
433
|
|
|
459
434
|
> **Note:** `PostHog.is_feature_enabled`, `PostHog.get_feature_flag`, `PostHog.get_feature_flag_result`, `PostHog.get_feature_flag_payload`, and `PostHog.capture({ ..., send_feature_flags: true })` still work during the migration period, but they're deprecated. Prefer `PostHog.evaluate_flags` for new code.
|
|
460
435
|
|
|
@@ -500,7 +475,7 @@ end
|
|
|
500
475
|
| `feature_flag_request_timeout_seconds` | Integer | `3` | Timeout, in seconds, for feature flag requests. |
|
|
501
476
|
| `before_send` | Proc | `nil` | Callback that receives the event hash before it is queued or sent. Return a modified event hash, or `nil` to drop the event. |
|
|
502
477
|
|
|
503
|
-
The `PostHog.init` block supports the options above. Less common core options like `batch_size`, `disable_singleton_warning`, `skip_ssl_verification`, and `flag_definition_cache_provider` can be passed as an options hash to `PostHog.init(...)`; see the [Ruby SDK docs](/docs/libraries/ruby.md#configuration) for details.
|
|
478
|
+
The `PostHog.init` block supports the options above. Less common core options like `batch_size`, `disable_singleton_warning`, `skip_ssl_verification`, and `flag_definition_cache_provider` can be passed as an options hash to `PostHog.init(...)`; see the [Ruby SDK docs](https://posthog.com/docs/libraries/ruby.md#configuration) for details.
|
|
504
479
|
|
|
505
480
|
### Rails-specific options
|
|
506
481
|
|
|
@@ -523,8 +498,6 @@ Configure these via `PostHog::Rails.configure` or `PostHog::Rails.config`:
|
|
|
523
498
|
|
|
524
499
|
1. Verify PostHog is initialized:
|
|
525
500
|
|
|
526
|
-
Ruby
|
|
527
|
-
|
|
528
501
|
```ruby
|
|
529
502
|
Rails.console
|
|
530
503
|
> PostHog.initialized?
|
|
@@ -535,8 +508,6 @@ Configure these via `PostHog::Rails.configure` or `PostHog::Rails.config`:
|
|
|
535
508
|
|
|
536
509
|
3. Verify middleware is installed:
|
|
537
510
|
|
|
538
|
-
Ruby
|
|
539
|
-
|
|
540
511
|
```ruby
|
|
541
512
|
Rails.application.middleware
|
|
542
513
|
```
|
|
@@ -553,12 +524,4 @@ Ensure you've set `personal_api_key` in your configuration.
|
|
|
553
524
|
|
|
554
525
|
## Next steps
|
|
555
526
|
|
|
556
|
-
For any technical questions for how to integrate specific PostHog features into Rails (such as analytics, feature flags, A/B testing, etc.), have a look at our [Ruby SDK docs](/docs/libraries/ruby.md).
|
|
557
|
-
|
|
558
|
-
### Still have questions?
|
|
559
|
-
|
|
560
|
-
Ask PostHog AI
|
|
561
|
-
|
|
562
|
-
### Was this page useful?
|
|
563
|
-
|
|
564
|
-
HelpfulCould be better
|
|
527
|
+
For any technical questions for how to integrate specific PostHog features into Rails (such as analytics, feature flags, A/B testing, etc.), have a look at our [Ruby SDK docs](https://posthog.com/docs/libraries/ruby.md).
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
# Ruby Feature Flags installation
|
|
4
4
|
|
|
5
|
+
Canonical URL: https://posthog.com/docs/feature-flags/installation/ruby
|
|
6
|
+
|
|
7
|
+
> **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.i.posthog.com` instead of `https://us.i.posthog.com` (ingestion host).
|
|
8
|
+
|
|
9
|
+
## On this page
|
|
10
|
+
|
|
11
|
+
- [Install the gem](#install-the-gem)
|
|
12
|
+
- [Configure PostHog](#configure-posthog)
|
|
13
|
+
- [Send events](#send-events)
|
|
14
|
+
- [Evaluate boolean feature flags](#evaluate-boolean-feature-flags)
|
|
15
|
+
- [Evaluate multivariate feature flags](#evaluate-multivariate-feature-flags)
|
|
16
|
+
- [Include feature flag information in events](#include-feature-flag-information-in-events)
|
|
17
|
+
- [Override server properties](#override-server-properties)
|
|
18
|
+
- [Running experiments](#running-experiments)
|
|
19
|
+
- [Next steps](#next-steps)
|
|
20
|
+
|
|
5
21
|
1. 1
|
|
6
22
|
|
|
7
23
|
## Install the gem
|
|
@@ -178,16 +194,8 @@
|
|
|
178
194
|
|
|
179
195
|
| Resource | Description |
|
|
180
196
|
| --- | --- |
|
|
181
|
-
| [Creating a feature flag](/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog |
|
|
182
|
-
| [Adding feature flag code](/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms |
|
|
183
|
-
| [Framework-specific guides](/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks |
|
|
184
|
-
| [How to do a phased rollout](/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk |
|
|
185
|
-
| [More tutorials](/docs/feature-flags/tutorials.md) | Other real-world examples and use cases |
|
|
186
|
-
|
|
187
|
-
### Still have questions?
|
|
188
|
-
|
|
189
|
-
Ask PostHog AI
|
|
190
|
-
|
|
191
|
-
### Was this page useful?
|
|
192
|
-
|
|
193
|
-
HelpfulCould be better
|
|
197
|
+
| [Creating a feature flag](https://posthog.com/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog |
|
|
198
|
+
| [Adding feature flag code](https://posthog.com/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms |
|
|
199
|
+
| [Framework-specific guides](https://posthog.com/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks |
|
|
200
|
+
| [How to do a phased rollout](https://posthog.com/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk |
|
|
201
|
+
| [More tutorials](https://posthog.com/docs/feature-flags/tutorials.md) | Other real-world examples and use cases |
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# Rust Feature Flags installation
|
|
4
4
|
|
|
5
|
+
Canonical URL: https://posthog.com/docs/feature-flags/installation/rust
|
|
6
|
+
|
|
5
7
|
Install the `posthog-rs` crate by adding it to your `Cargo.toml`.
|
|
6
8
|
|
|
7
9
|
Cargo.toml
|
|
@@ -13,8 +15,6 @@ posthog-rs = "0.14"
|
|
|
13
15
|
|
|
14
16
|
Next, set up the client with your PostHog project key.
|
|
15
17
|
|
|
16
|
-
Rust
|
|
17
|
-
|
|
18
18
|
```rust
|
|
19
19
|
let client = posthog_rs::client("<ph_project_token>").await;
|
|
20
20
|
```
|
|
@@ -25,8 +25,6 @@ Our Rust SDK supports both blocking and async clients. The async client is the d
|
|
|
25
25
|
|
|
26
26
|
If you need to use a synchronous client instead – like we do in our [CLI](https://github.com/PostHog/posthog/tree/master/cli) –, you can opt into it by disabling the asynchronous feature on your `Cargo.toml` file.
|
|
27
27
|
|
|
28
|
-
toml
|
|
29
|
-
|
|
30
28
|
```toml
|
|
31
29
|
[dependencies]
|
|
32
30
|
posthog-rs = { version = "0.14", default-features = false }
|
|
@@ -44,8 +42,6 @@ Call `client.evaluate_flags()` once for the user, then read values from the retu
|
|
|
44
42
|
|
|
45
43
|
#### Boolean feature flags
|
|
46
44
|
|
|
47
|
-
Rust
|
|
48
|
-
|
|
49
45
|
```rust
|
|
50
46
|
use posthog_rs::EvaluateFlagsOptions;
|
|
51
47
|
|
|
@@ -63,8 +59,6 @@ if flags.is_enabled("flag-key") {
|
|
|
63
59
|
|
|
64
60
|
#### Multivariate feature flags
|
|
65
61
|
|
|
66
|
-
Rust
|
|
67
|
-
|
|
68
62
|
```rust
|
|
69
63
|
use posthog_rs::{EvaluateFlagsOptions, FlagValue};
|
|
70
64
|
|
|
@@ -89,9 +83,9 @@ match flags.get_flag("flag-key") {
|
|
|
89
83
|
|
|
90
84
|
### Step 2: Include feature flag information when capturing events
|
|
91
85
|
|
|
92
|
-
If you want use your feature flag to breakdown or filter events in your [insights](/docs/product-analytics/insights.md), you'll need to include feature flag information in those events. This ensures that the feature flag value is attributed correctly to the event.
|
|
86
|
+
If you want use your feature flag to breakdown or filter events in your [insights](https://posthog.com/docs/product-analytics/insights.md), you'll need to include feature flag information in those events. This ensures that the feature flag value is attributed correctly to the event.
|
|
93
87
|
|
|
94
|
-
> **Note:** This step is only required for events captured using our server-side SDKs or [API](/docs/api.md).
|
|
88
|
+
> **Note:** This step is only required for events captured using our server-side SDKs or [API](https://posthog.com/docs/api.md).
|
|
95
89
|
|
|
96
90
|
There are two methods you can use to include feature flag information in your events:
|
|
97
91
|
|
|
@@ -99,8 +93,6 @@ There are two methods you can use to include feature flag information in your ev
|
|
|
99
93
|
|
|
100
94
|
Pass the same `flags` object that you used for branching. This attaches the exact flag values from that evaluation and doesn't make another `/flags` request.
|
|
101
95
|
|
|
102
|
-
Rust
|
|
103
|
-
|
|
104
96
|
```rust
|
|
105
97
|
use posthog_rs::{EvaluateFlagsOptions, Event};
|
|
106
98
|
|
|
@@ -122,8 +114,6 @@ By default, this attaches every flag in the snapshot using `$feature/<flag-key>`
|
|
|
122
114
|
|
|
123
115
|
To reduce event property bloat, pass a filtered snapshot:
|
|
124
116
|
|
|
125
|
-
Rust
|
|
126
|
-
|
|
127
117
|
```rust
|
|
128
118
|
// Attach only flags accessed with is_enabled() or get_flag() before this call
|
|
129
119
|
let mut event = Event::new("event_name", "distinct_id_of_your_user");
|
|
@@ -142,8 +132,6 @@ client.capture(event);
|
|
|
142
132
|
|
|
143
133
|
In the event properties, include `$feature/feature_flag_name: variant_key`:
|
|
144
134
|
|
|
145
|
-
Rust
|
|
146
|
-
|
|
147
135
|
```rust
|
|
148
136
|
use posthog_rs::Event;
|
|
149
137
|
|
|
@@ -156,8 +144,6 @@ client.capture(event);
|
|
|
156
144
|
|
|
157
145
|
By default, `evaluate_flags()` evaluates every flag for the user. If you only need a few flags, pass `flag_keys` to request only those flags:
|
|
158
146
|
|
|
159
|
-
Rust
|
|
160
|
-
|
|
161
147
|
```rust
|
|
162
148
|
use posthog_rs::EvaluateFlagsOptions;
|
|
163
149
|
|
|
@@ -172,7 +158,7 @@ let flags = client.evaluate_flags(
|
|
|
172
158
|
|
|
173
159
|
### Sending `$feature_flag_called` events
|
|
174
160
|
|
|
175
|
-
Capturing `$feature_flag_called` events enables PostHog to know when a flag was accessed by a user and provide [analytics and insights](/docs/product-analytics/insights.md) on the flag. With `evaluate_flags()`, the SDK sends this event when you call `flags.is_enabled()` or `flags.get_flag()` for a flag.
|
|
161
|
+
Capturing `$feature_flag_called` events enables PostHog to know when a flag was accessed by a user and provide [analytics and insights](https://posthog.com/docs/product-analytics/insights.md) on the flag. With `evaluate_flags()`, the SDK sends this event when you call `flags.is_enabled()` or `flags.get_flag()` for a flag.
|
|
176
162
|
|
|
177
163
|
The SDK deduplicates these events per `(distinct_id, flag, value)` in a local cache. If you reinitialize the PostHog client, the cache resets and `$feature_flag_called` events may be sent again. PostHog handles duplicates, so duplicate `$feature_flag_called` events don't affect your analytics.
|
|
178
164
|
|
|
@@ -182,8 +168,6 @@ The SDK deduplicates these events per `(distinct_id, flag, value)` in a local ca
|
|
|
182
168
|
|
|
183
169
|
If you're using the blocking client (with `default-features = false`), the API is the same but without `.await`:
|
|
184
170
|
|
|
185
|
-
Rust
|
|
186
|
-
|
|
187
171
|
```rust
|
|
188
172
|
use posthog_rs::EvaluateFlagsOptions;
|
|
189
173
|
|
|
@@ -201,16 +185,8 @@ Now that you're evaluating flags, continue with the resources below to learn wha
|
|
|
201
185
|
|
|
202
186
|
| Resource | Description |
|
|
203
187
|
| --- | --- |
|
|
204
|
-
| [Creating a feature flag](/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog |
|
|
205
|
-
| [Adding feature flag code](/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms |
|
|
206
|
-
| [Framework-specific guides](/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks |
|
|
207
|
-
| [How to do a phased rollout](/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk |
|
|
208
|
-
| [More tutorials](/docs/feature-flags/tutorials.md) | Other real-world examples and use cases |
|
|
209
|
-
|
|
210
|
-
### Still have questions?
|
|
211
|
-
|
|
212
|
-
Ask PostHog AI
|
|
213
|
-
|
|
214
|
-
### Was this page useful?
|
|
215
|
-
|
|
216
|
-
HelpfulCould be better
|
|
188
|
+
| [Creating a feature flag](https://posthog.com/docs/feature-flags/creating-feature-flags.md) | How to create a feature flag in PostHog |
|
|
189
|
+
| [Adding feature flag code](https://posthog.com/docs/feature-flags/adding-feature-flag-code.md) | How to check flags in your code for all platforms |
|
|
190
|
+
| [Framework-specific guides](https://posthog.com/docs/feature-flags/tutorials.md#framework-guides) | Setup guides for React Native, Next.js, Flutter, and other frameworks |
|
|
191
|
+
| [How to do a phased rollout](https://posthog.com/tutorials/phased-rollout.md) | Gradually roll out features to minimize risk |
|
|
192
|
+
| [More tutorials](https://posthog.com/docs/feature-flags/tutorials.md) | Other real-world examples and use cases |
|