posthog-cap v1.1.0
@capawesome/capacitor-posthog
Unofficial Capacitor plugin for PostHog.^1
Installation
npm install @capawesome/capacitor-posthog posthog-js
npx cap sync
Android
Variables
This plugin will use the following project variables (defined in your app's variables.gradle
file):
$androidxCoreKtxVersion
version ofandroidx.core:core-ktx
(default:1.13.1
)$posthogVersion
version ofcom.posthog:posthog-android
(default:3.10.0
)
Configuration
No configuration required for this plugin.
Demo
A working example can be found here: robingenz/capacitor-plugin-demo
Usage
import { Posthog } from '@capawesome/capacitor-posthog';
const alias = async () => {
await Posthog.alias({
alias: 'new-distinct-id',
});
};
const capture = async () => {
await Posthog.capture({
event: 'event',
properties: {
key: 'value',
},
});
};
const flush = async () => {
await Posthog.flush();
};
const group = async () => {
await Posthog.group({
type: 'group',
key: 'key',
groupProperties: {
key: 'value',
},
});
};
const identify = async () => {
await Posthog.identify({
distinctId: 'distinct-id',
userProperties: {
key: 'value',
},
});
};
const register = async () => {
await Posthog.register({
key: 'super-property',
value: 'super-value',
});
};
const reset = async () => {
await Posthog.reset();
};
const screen = async () => {
await Posthog.screen({
screenTitle: 'screen',
properties: {
key: 'value',
},
});
};
const setup = async () => {
await Posthog.setup({
apiKey: 'YOUR_API_KEY',
host: 'https://eu.i.posthog.com',
sessionRecording: true,
sessionRecordingConfig: {
maskAllTextInputs: true,
maskAllImages: true,
maskAllSandboxedViews: true,
captureNetworkTelemetry: true,
screenshotMode: false,
debouncerDelay: 1.0
}
});
};
const unregister = async () => {
await Posthog.unregister({
key: 'super-property',
});
};
API
alias(...)
capture(...)
flush()
getFeatureFlag(...)
getSessionId()
group(...)
identify(...)
isFeatureEnabled(...)
register(...)
reloadFeatureFlags()
reset()
screen(...)
setup(...)
unregister(...)
- Interfaces
- Type Aliases
alias(...)
alias(options: AliasOptions) => Promise<void>
Assign another distinct ID to the current user.
Param | Type |
---|---|
options | AliasOptions |
Since: 6.0.0
capture(...)
capture(options: CaptureOptions) => Promise<void>
Capture an event.
Param | Type |
---|---|
options | CaptureOptions |
Since: 6.0.0
flush()
flush() => Promise<void>
Flush all events in the queue.
Only available on Android and iOS.
Since: 6.0.0
getFeatureFlag(...)
getFeatureFlag(options: GetFeatureFlagOptions) => Promise<GetFeatureFlagResult>
Get the value of a feature flag.
Param | Type |
---|---|
options | GetFeatureFlagOptions |
Returns: Promise<GetFeatureFlagResult>
Since: 7.0.0
getSessionId()
getSessionId() => Promise<GetSessionIdResult>
Get the current session ID.
Only available on Android and iOS.
Returns: Promise<GetSessionIdResult>
Since: 7.1.0
group(...)
group(options: GroupOptions) => Promise<void>
Associate the events for that user with a group.
Param | Type |
---|---|
options | GroupOptions |
Since: 6.0.0
identify(...)
identify(options: IdentifyOptions) => Promise<void>
Identify the current user.
Param | Type |
---|---|
options | IdentifyOptions |
Since: 6.0.0
isFeatureEnabled(...)
isFeatureEnabled(options: IsFeatureEnabledOptions) => Promise<IsFeatureEnabledResult>
Check if a feature flag is enabled.
Param | Type |
---|---|
options | IsFeatureEnabledOptions |
Returns: Promise<IsFeatureEnabledResult>
Since: 7.0.0
register(...)
register(options: RegisterOptions) => Promise<void>
Register a new super property. This property will be sent with every event.
Param | Type |
---|---|
options | RegisterOptions |
Since: 6.0.0
reloadFeatureFlags()
reloadFeatureFlags() => Promise<void>
Reload the feature flags.
Since: 7.0.0
reset()
reset() => Promise<void>
Reset the current user's ID and anonymous ID.
Since: 6.0.0
screen(...)
screen(options: ScreenOptions) => Promise<void>
Send a screen event.
Only available on Android and iOS.
Param | Type |
---|---|
options | ScreenOptions |
Since: 6.0.0
setup(...)
setup(options: SetupOptions) => Promise<void>
Setup the PostHog SDK with the provided options.
Attention: This method should be called before any other method.
Param | Type |
---|---|
options | SetupOptions |
Since: 6.0.0
unregister(...)
unregister(options: UnregisterOptions) => Promise<void>
Remove a super property.
Param | Type |
---|---|
options | UnregisterOptions |
Since: 6.0.0
Interfaces
AliasOptions
Prop | Type | Description | Since |
---|---|---|---|
alias | string | The new distinct ID to assign to the current user. | 6.0.0 |
CaptureOptions
Prop | Type | Description | Since |
---|---|---|---|
event | string | The name of the event to capture. | 6.0.0 |
properties | Record<string, any> | The properties to send with the event. | 6.0.0 |
GetFeatureFlagResult
Prop | Type | Description | Since |
---|---|---|---|
value | string | boolean | null | The value of the feature flag. If the feature flag does not exist, the value will be null . | 7.0.0 |
GetFeatureFlagOptions
Prop | Type | Description | Since |
---|---|---|---|
key | string | The key of the feature flag. | 7.0.0 |
GetSessionIdResult
Prop | Type | Description | Since |
---|---|---|---|
sessionId | string | null | The current session ID. If no session is active, the value will be null. | 7.1.0 |
GroupOptions
Prop | Type | Description | Since |
---|---|---|---|
type | string | The group type. | 6.0.0 |
key | string | The group key. | 6.0.0 |
groupProperties | Record<string, any> | The properties to send with the group event. | 6.0.0 |
IdentifyOptions
Prop | Type | Description | Since |
---|---|---|---|
distinctId | string | The distinct ID of the user. | 6.0.0 |
userProperties | Record<string, any> | The person properties to set. | 6.0.0 |
IsFeatureEnabledResult
Prop | Type | Description | Since |
---|---|---|---|
enabled | boolean | Whether the feature flag is enabled. If the feature flag does not exist, the value will be false . | 7.0.0 |
IsFeatureEnabledOptions
Prop | Type | Description | Since |
---|---|---|---|
key | string | The key of the feature flag. | 7.0.0 |
RegisterOptions
Prop | Type | Description | Since |
---|---|---|---|
key | string | The name of the super property. | 6.0.0 |
value | any | The value of the super property. | 6.0.0 |
ScreenOptions
Prop | Type | Description | Since |
---|---|---|---|
screenTitle | string | The name of the screen. | 6.0.0 |
properties | Record<string, any> | The properties to send with the screen event. | 6.0.0 |
SetupOptions
Prop | Type | Description | Default | Since |
---|---|---|---|---|
apiKey | string | The API key of your PostHog project. | 6.0.0 | |
host | string | The host of your PostHog instance. | 'https://us.i.posthog.com' | 6.0.0 |
sessionRecording | boolean | Enable session recording. Only available on iOS. | false | 7.1.0 |
sessionRecordingConfig | SessionRecordingConfig | Session recording configuration. Only available on iOS. | 7.1.0 |
SessionRecordingConfig
Prop | Type | Description | Default | Since |
---|---|---|---|---|
maskAllTextInputs | boolean | Enable masking of all text and text input fields. | true | 7.1.0 |
maskAllImages | boolean | Enable masking of all images to a placeholder. | true | 7.1.0 |
maskAllSandboxedViews | boolean | Enable masking of all sandboxed system views. | true | 7.1.0 |
captureNetworkTelemetry | boolean | Enable capturing network telemetry. | true | 7.1.0 |
screenshotMode | boolean | Enable screenshot mode. By default Session replay will capture all the views on the screen as a wireframe. By enabling this option, PostHog will capture the screenshot of the screen. The screenshot may contain sensitive information, use with caution. | false | 7.1.0 |
debouncerDelay | number | Debouncer delay used to reduce the number of snapshots captured and reduce performance impact. | 1.0 | 7.1.0 |
UnregisterOptions
Prop | Type | Description | Since |
---|---|---|---|
key | string | The name of the super property to remove. | 6.0.0 |
Type Aliases
Record
Construct a type with a set of properties K of type T
{
}
Changelog
See CHANGELOG.md.
License
See LICENSE.
Session Recording
This plugin supports PostHog's Session Recording feature on iOS. Session Recording allows you to capture and replay user sessions to understand how users interact with your app.
Enabling Session Recording
To enable Session Recording, set the sessionRecording
option to true
when calling setup
:
await Posthog.setup({
apiKey: 'YOUR_API_KEY',
host: 'https://eu.i.posthog.com',
sessionRecording: true
});
Configuring Session Recording
You can customize the behavior of Session Recording by providing a sessionRecordingConfig
object:
await Posthog.setup({
apiKey: 'YOUR_API_KEY',
host: 'https://eu.i.posthog.com',
sessionRecording: true,
sessionRecordingConfig: {
// Mask all text inputs (default: true)
maskAllTextInputs: true,
// Mask all images (default: true)
maskAllImages: true,
// Mask all sandboxed system views (default: true)
maskAllSandboxedViews: true,
// Capture network telemetry (default: true)
captureNetworkTelemetry: true,
// Use screenshot mode instead of wireframe mode (default: false)
// Note: Screenshots may contain sensitive information
screenshotMode: false,
// Debouncer delay in seconds (default: 1.0)
debouncerDelay: 1.0
}
});
Privacy Considerations
Session Recording captures user interactions with your app, which may include sensitive information. Consider the following privacy measures:
- Use the masking options to hide sensitive content
- Inform users about session recording in your privacy policy
- Be cautious when enabling screenshot mode, as it captures actual screenshots instead of wireframes
Platform Support
Session Recording is currently only supported on iOS. When used on other platforms, the session recording options will be ignored.
^1: This project is not affiliated with, endorsed by, sponsored by, or approved by PostHog, Inc. or any of their affiliates or subsidiaries.