A comprehensive JavaScript SDK for Datablit analytics, rules, and experiments.
npm install @datablit/datablit-js
import datablit from "@datablit/datablit-js";
// Initialize the SDK
await datablit.init({
apiKey: "your-api-key-here",
});
// Track events
datablit.track("Button Clicked", { buttonId: "signup-button" });
// Identify users
datablit.identify("user123", { email: "user@example.com", plan: "premium" });
// Evaluate rules
const ruleResult = await datablit.rule.evalRule({
key: "fer",
userId: "1",
params: {
os_name: "android",
},
});
console.log("Rule result:", ruleResult.result); // true or false
// Get experiment variant
const variant = await datablit.experiment.getVariant({
expId: "01K2JKVXR0J0ZWPX40XY8CAWBS",
entityId: "1",
});
- Event Tracking: Track user interactions and custom events
- User Identification: Associate events with specific users
- Automatic Page Tracking: Automatically track page views
- Batch Processing: Efficient event batching and retry logic
- Offline Support: Events are queued locally when offline
- Rule Evaluation: Evaluate rules against user context in real-time
- Context-based Decisions: Make dynamic decisions based on user attributes
- A/B Testing: Get experiment variants for users
- Context-aware Assignment: Assign variants based on user context
- Statistical Analysis: Built-in support for experiment analysis
await datablit.init({
apiKey: string, // Required: Your Datablit API key
endpoint?: string, // Optional: Custom event endpoint
batchSize?: number, // Optional: Events per batch (default: 20)
flushInterval?: number, // Optional: Flush interval in ms (default: 30000)
enablePageTracking?: boolean, // Optional: Auto-track page views (default: false)
apiBaseURL?: string // Optional: Custom API base URL for rules/experiments
});
Track a custom event.
datablit.track("Purchase Completed", {
productId: "prod_123",
amount: 99.99,
currency: "USD",
});
Identify a user with traits.
datablit.identify("user123", {
email: "user@example.com",
name: "John Doe",
plan: "premium",
});
Access rules functionality through datablit.rule
:
Evaluate a rule for a given user and context. Returns the evaluation result with key, userId, and result.
const ruleResult = await datablit.rule.evalRule({
key: "fer",
userId: "1",
params: {
os_name: "android",
},
});
if (ruleResult.result) {
console.log("Rule evaluated to true");
} else {
console.log("Rule evaluated to false");
}
Access experiments functionality through datablit.experiment
:
Get experiment variant for a user.
const variant = await datablit.experiment.getVariant({
expId: "01K2JKVXR0J0ZWPX40XY8CAWBS",
entityId: "1",
});
console.log("User is in variant:", variant.variant); // "control", "variant_a", etc.
The SDK provides comprehensive error handling:
try {
const ruleResult = await datablit.rule.evalRule({
key: "fer",
userId: "1",
});
} catch (error) {
console.error("Failed to evaluate rules:", error.message);
}
try {
const variant = await datablit.experiment.getVariant({
expId: "01K2JKVXR0J0ZWPX40XY8CAWBS",
entityId: "1",
});
} catch (error) {
console.error("Failed to get variant:", error.message);
}
try {
datablit.track("Event", { data: "value" });
} catch (error) {
console.error("Failed to track event:", error.message);
}
The SDK is built with a modular architecture:
src/
├── index.ts # Main entry point and exports
├── types.ts # TypeScript type definitions
├── base-api.ts # Base API class for HTTP requests
├── datablit.ts # Main Datablit analytics class
├── rule.ts # Rule evaluation functionality
└── experiment.ts # Experiment variant assignment
- Analytics Events:
https://event.datablit.com/v1/batch
- Rules & Experiments:
https://console.datablit.com/api/1.0/*
(default)- Can be customized via
apiBaseURL
configuration
- Can be customized via
The API key is sent in the request headers:
- Analytics:
apiKey
header - Rules/Experiments:
apiKey
header
The SDK supports all modern browsers and includes:
- ES6+ features
- Fetch API
- LocalStorage
- User Agent Data API (when available)
npm run build
npm test
MIT License - see LICENSE file for details.
For support and questions, please contact support@datablit.com or visit our documentation at https://datablit.com/docs