@posthog/types
Type definitions for the PostHog JavaScript SDK.
When to Use This Package
✅ You Need This Package If:
You're loading PostHog via a <script> tag and want TypeScript types for window.posthog.
<script>
!function(t,e){...}(document,window.posthog||[]);
posthog.init('your-api-key', { api_host: 'https://us.i.posthog.com' })
</script>
❌ You Don't Need This Package If:
You're installing any PostHog library via npm/yarn/pnpm. The types are already included:
posthog-js - Browser SDK (includes all types)
posthog-node - Node.js SDK
posthog-react-native - React Native SDK
@posthog/react - React hooks and components
import posthog from 'posthog-js'
posthog.init('your-api-key')
posthog.capture('my_event')
Installation
npm install @posthog/types
yarn add @posthog/types
pnpm add @posthog/types
Usage
Typing window.posthog (Script Tag Usage)
Create a type declaration file to type window.posthog:
import type { PostHog } from '@posthog/types'
declare global {
interface Window {
posthog?: PostHog
}
}
export {}
Now you can use window.posthog with full type safety:
window.posthog?.capture('button_clicked', { button_id: 'signup' })
window.posthog?.identify('user-123', { email: 'user@example.com' })
const flagValue = window.posthog?.getFeatureFlag('my-flag')
if (flagValue === 'variant-a') {
}
Typing Configuration Objects
import type { PostHogConfig, Properties } from '@posthog/types'
const config: Partial<PostHogConfig> = {
api_host: 'https://us.i.posthog.com',
autocapture: true,
capture_pageview: 'history_change',
}
const eventProps: Properties = {
button_id: 'signup',
page: '/pricing',
}
Version Synchronization
This package's version is synchronized with posthog-js. They are always released together with matching version numbers.
License
MIT