@birdie-so/snippet
Version:
Helper for integrating the Birdie screen recording snippet into modern JavaScript apps. Requires a Birdie account.
152 lines (113 loc) • 3.61 kB
Markdown
# @birdie-so/snippet
Easily integrate the Birdie screen recording snippet into your application using modern frameworks like **React**, **Vue**, **Angular**, or plain **JavaScript** — with full control over initialization, metadata, and event hooks.
> ⚡ This package is a helper utility for integrating Birdie.
> **You must have a Birdie account and a valid `clientId` to use this package.**
> It does **not work on its own** — visit [https://app.birdie.so](https://app.birdie.so) to get started.
> ⚡ The core logic is still loaded from our CDN. This package is just a light wrapper for easier integration and customization.


## 🚀 Installation
```bash
npm install @birdie-so/snippet
# or
yarn add @birdie-so/snippet
```
## ✨ Quick Start
### React / Vue / Angular / JS
```js
import { initBirdie } from "@birdie-so/snippet";
initBirdie({
clientId: "YOUR_CLIENT_ID", // required
// Optional metadata available to recordings
metadata: {
user: {
id: "123",
email: "user@example.com",
},
},
// Optional hook once Birdie is ready
onReady(birdie) {
// you can register for the following events
birdie.on("recorderOpen", (data) => {
console.log("Recorder tab is opened", data);
});
birdie.on("start", (data) => {
console.log("Recording started", data);
birdie.metadata = { dynamicKey: "value" };
});
birdie.on("pause", (data) => {
console.log("Recording paused", data);
});
birdie.on("resume", (data) => {
console.log("Recording resumed", data);
});
birdie.on("stop", (data) => {
console.log("Recording stopped", data);
});
birdie.on("restart", (data) => {
console.log("Recording restarted", data);
});
birdie.on("captureStarted", (data) => {
console.log("Capturing logs started", data);
});
birdie.on("captureStopped", (data) => {
console.log("Capturing logs stopped", data);
});
birdie.on("recordingSent", (data) => {
// data.link contains the link to the video
console.log("A new recording has been sent", data);
});
birdie.on("recorderClose", (data) => {
console.log("Recorder tab was closed", data);
});
birdie.on("error", (error) => {
console.log("Something went wrong", error);
});
}
});
```
## 🧠 How It Works
This package:
- Injects the Birdie CDN snippet dynamically using your `clientId`.
- Sets global `window.birdieSettings` before loading.
- Registers event callbacks once the Birdie SDK is ready (`window.birdie` is available).
Your original snippet like this:
```html
<script>
window.birdieSettings = {
/* ... */
};
</script>
<script src="https://app.birdie.so/widget/embed/YOUR_CLIENT_ID"></script>
```
Is now handled via code with `initBirdie()`.
## 🧩 Advanced
### Get Birdie instance later
```js
import { getBirdieInstance } from "@birdie-so/snippet";
getBirdieInstance((birdie) => {
birdie.on("start", () => {
console.log("Recording started!");
});
});
```
Or synchronously:
```js
const birdie = getBirdieInstance();
if (birdie) {
birdie.metadata = { key: "value" };
}
```
## 📘 Docs
For full documentation and integration examples, visit [our docs page](https://docs.birdie.so/birdie-docs/request-screen-recordings/installation/snippet)
## 🛠 Support
Need help? Reach out to us at [support@birdie.so](mailto:support@birdie.so)
## 📄 License
MIT