faurya
v0.1.0
Published
Faurya analytics SDK — ergonomic browser analytics
Maintainers
Readme
faurya
The official Faurya analytics SDK for browser applications.
Install
npm install fauryaQuick Start
import { initFaurya } from 'faurya'
// or: import { initFaurya } from 'faurya/web'
const faurya = await initFaurya({
websiteId: 'your-website-id',
})
faurya.track('button_click', { buttonId: 'signup' })
faurya.trackPageview('/pricing')
faurya.identify('user-42', { plan: 'pro' })
await faurya.flush()
faurya.reset()track('goal_name', metadata) queues a custom browser event with extraData.eventName set to the provided name.
Configuration
await initFaurya({
websiteId: 'your-site-id',
allowLocalhost: true, // enable tracking on localhost (default: false)
allowIframe: true, // enable tracking in iframes (default: false)
allowedHostnames: ['www.example.com', 'app.example.com'],
})Runtime Behavior
fauryais a browser-first analytics SDK.- In SSR or server-only runtimes, the browser client safely no-ops instead of fabricating browser metadata.
- Browser-only events like
pageview,pageview_end,attention,data-faurya-goal, anddata-faurya-scrollonly run in eligible browser environments.
Singleton Access
import { getFauryaClient } from 'faurya'
const client = getFauryaClient()
client.track('interaction')Cross-Domain Tracking
import { getTrackingParams, buildCrossDomainUrl } from 'faurya'
const params = await getTrackingParams()
const url = await buildCrossDomainUrl('https://app.example.com/dashboard')React Native
import { FauryaProvider, useFauryaTrack, useFauryaScreen } from 'faurya/react-native'See React Native docs for full setup.
Subpath Exports
| Import Path | Description |
|-------------|-------------|
| faurya | Main web SDK + core utilities |
| faurya/web | Web-specific exports |
| faurya/react-native | React Native provider + hooks |
Advanced: Custom Client
import { createFauryaClient, createMemoryStorageAdapter } from 'faurya'
const client = createFauryaClient({
config: { websiteId: 'my-site' },
storage: createMemoryStorageAdapter(),
transport: myTransport,
})License
MIT
