Aller au contenu

SDK Web (Browser)

Le SDK Pionne pour navigateur. Auto-capture les erreurs JS, les promises non gérées, et enrichit chaque event avec le contexte du browser (URL, viewport, locale, User-Agent).

Version actuelle : 0.1.0

Fenêtre de terminal
npm install @pionne/web

Ou via CDN dans une balise <script> :

<script src="https://unpkg.com/@pionne/web@0.1.0/dist/pionne.umd.js"></script>

Initialise le SDK le plus tôt possible — idéalement avant le rendu de ton app, dans main.ts ou un <script> en haut du <head>.

import { Pionne } from '@pionne/web';
Pionne.init({
token: 'pio_live_…',
release: '1.0.0',
environment: 'production',
sampleRate: 1.0,
scrubPii: true,
});
Pionne.init(options);
Pionne.captureException(error, { tags, contexts });
Pionne.captureMessage('Quelque chose va mal', { level: 'warning' });
Pionne.setUser({ id: 'user_42' });
Pionne.setTags({ feature: 'checkout' });
Pionne.setEnabled(false); // kill switch
Pionne.addBreadcrumb({ category: 'ui', message: 'Click on #buy' });
Pionne.wrap(fn); // wrap un callback pour capturer ses throws
  • window.onerror — exceptions non capturées
  • window.onunhandledrejection — promises rejetées sans .catch()
  • User-Agent, viewport (width/height), locale (navigator.language)
  • URL courante, referrer
  • Release, environment
  • console.log / console.warn / console.error
  • fetch() — URL avec query string strippée
OptionTypeDescription
tokenstringToken Pionne (pio_live_…)
releasestringVersion de l’app
environmentstringproduction, staging, etc.
sampleRatenumber0.0 — 1.0, ratio d’events envoyés
scrubPiibooleanMasque emails, téléphones, IBAN
beforeSend(event) => event | nullHook de filtrage
main.tsx
import { Pionne, PionneErrorBoundary } from '@pionne/web';
import ReactDOM from 'react-dom/client';
import App from './App';
Pionne.init({ token: 'pio_live_…' });
ReactDOM.createRoot(document.getElementById('root')!).render(
<PionneErrorBoundary fallback={<p>Oups, on a planté.</p>}>
<App />
</PionneErrorBoundary>
);

Comme en React Native, les builds prod sont minifiés. Pour avoir des stacks lisibles, upload tes source maps :

Fenêtre de terminal
npx @pionne/web upload-sourcemaps \
--release 1.0.0 \
--dir ./dist \
--token pio_live_…

Tu peux aussi automatiser via un plugin Vite ou Webpack — voir le guide Source maps. Le concept est universel : ce qui change, c’est juste l’outil de build.

Le hostname (tonapp.com) est auto-pinné côté serveur au premier event. Si ton token fuite et qu’il est utilisé depuis un autre domaine, les events sont rejetés.