Framework-Integrationen
Das SDK braucht keine Schicht pro Framework: Autocapture patcht die History API, also werden Routenwechsel unter jedem Router erfasst. Erzeuge einen Client pro Seite und teile ihn so, wie dein Framework alles andere teilt. Renderst du auch auf einem Server? Erzeuge den Client nur im Browser, wie es jeder Ausschnitt unten tut.
Der Schlüssel in diesen Ausschnitten kommt aus der Konsole: API-Schlüssel erhalten
At a glance
- Route tracking
- None needed: autocapture patches the History API, every router is covered
- Pattern
- One
createWebClientper page, shared via your framework - React
@prodantix/react, the one lifecycle that needs an adapter
React
React ist die eine Ausnahme: Sein Lebenszyklus braucht den eigenen Adapter, einen Provider und Hook, die den Client genau einmal installieren, StrictMode-sicher.
Bash
bun add @prodantix/sdk @prodantix/reactVue
JavaScript
// prodantix.js
import { createWebClient } from '@prodantix/sdk/web';
export const prodantixPlugin = {
install(app, options) {
const client = createWebClient(options);
app.provide('prodantix', client);
},
};
// main.js (in a Nuxt app: a .client.js plugin)
app.use(prodantixPlugin, {
apiKey: PRODANTIX_PUBLIC_KEY,
host: 'https://eu.api.prodantix.com',
flagsHost: 'https://api.prodantix.com',
});
// any component
import { inject } from 'vue';
const prodantix = inject('prodantix');
prodantix.capture('order.completed');Svelte
JavaScript
// $lib/prodantix.js
import { browser } from '$app/environment';
import { createWebClient } from '@prodantix/sdk/web';
export const prodantix = browser
? createWebClient({
apiKey: PRODANTIX_PUBLIC_KEY,
host: 'https://eu.api.prodantix.com',
flagsHost: 'https://api.prodantix.com',
})
: null;
// any component
import { prodantix } from '$lib/prodantix';
prodantix?.capture('order.completed');Angular
JavaScript
// prodantix.service.ts (Angular Universal: create only when isPlatformBrowser)
import { Injectable } from '@angular/core';
import { createWebClient } from '@prodantix/sdk/web';
@Injectable({ providedIn: 'root' })
export class ProdantixService {
readonly client = createWebClient({
apiKey: PRODANTIX_PUBLIC_KEY,
host: 'https://eu.api.prodantix.com',
flagsHost: 'https://api.prodantix.com',
});
}
// any component
constructor(private prodantix: ProdantixService) {}
this.prodantix.client.capture('order.completed');