# FullStory Asset SDK
A lightweight SDK for integrating **FullStory session tracking and asset uploading** into React applications with CLI automation.
## Table of Contents
- [Installation Guide](#installation-guide)
- [Usage Documentation](#usage-documentation)
- [Configuration Options](#configuration-options)
- [Implementation Examples](#implementation-examples)
- [Troubleshooting](#troubleshooting)
- [Contributing Guidelines](#contributing-guidelines)
- [Technical Details](#technical-details)
---
## Installation Guide
### Prerequisites
- Node.js `>=14.0`
- npm or yarn installed
- A **FullStory API Key**
- A valid **FullStory Organization ID** (`orgId`)
### Installation
You can install the package using `npm` or `yarn`:
```sh
npm install fullstory-asset-sdk
# or
yarn add fullstory-asset-sdk
```
This will install:
- A **React Provider Component** (`FullStoryProvider`) for easy integration.
- A **CLI tool** (`fullstory-uploader`) for manual asset uploads.
- A **cross-platform asset uploader** to manage FullStory assets.
---
## Usage Documentation
### 1. Using the FullStory Provider in a React App
To dynamically track sessions and manage FullStory, wrap your application with the `FullStoryProvider`:
```jsx
import React from "react";
import { FullStoryProvider } from "fullstory-asset-sdk";
function App() {
return (
My React App
);
}
export default App;
```
### 2. CLI Tool for Asset Uploading
The package includes a command-line interface (CLI) for manually uploading assets.
```sh
npx fullstory-uploader -k YOUR_API_KEY -a path/to/asset-map.json
```
#### CLI Options
| Option | Description |
| ----------------------- | ------------------------------------------ |
| `-k, --apiKey ` | FullStory API Key (required) |
| `-a, --assetMap ` | Path to the Asset Map JSON file (required) |
This command **uploads assets** to FullStory, ensuring they are correctly mapped.
---
## Configuration Options
When using `FullStoryProvider`, you need to pass:
- `apiKey` (**Required**) - Your FullStory API Key
- `orgId` (**Required**) - Your FullStory Organization ID
- `assetMapPath` (**Required**) - Path to your asset map file
Example:
```jsx
```
---
## Implementation Examples
### 1. JavaScript React Project
This package **fully supports JavaScript projects** even though it is written in TypeScript. You can directly use it in a `JS`-based React app.
```js
import { FullStoryProvider } from "fullstory-asset-sdk";
function App() {
return (
My React App
);
}
export default App;
```
### 2. Using with Next.js
If using **Next.js**, import `FullStoryProvider` inside `_app.js`:
```js
import { FullStoryProvider } from "fullstory-asset-sdk";
function MyApp({ Component, pageProps }) {
return (
);
}
export default MyApp;
```
### 3. Integrating with Webpack/Vite
For Webpack or Vite projects, **ensure the asset uploader runs before build**.
Example Webpack config:
```js
module.exports = {
plugins: [
new webpack.DefinePlugin({
"process.env.FS_API_KEY": JSON.stringify(process.env.FS_API_KEY),
}),
],
};
```
---
## Troubleshooting
### Common Issues
#### 1. FullStory Not Loading
- Ensure the API key and `orgId` are **correct**.
- Check the console for errors using:
```sh
npx fullstory-uploader -k YOUR_API_KEY -a path/to/asset-map.json
```
#### 2. Asset Upload Fails
- Verify `assetMapPath` is correct.
- Check internet connectivity.
#### 3. CLI Command Not Found
If the CLI tool isn’t recognized:
```sh
npx fullstory-uploader --help
```
or try reinstalling:
```sh
npm install -g fullstory-asset-sdk
```
---
## Contributing Guidelines
### Project Structure
```
fullstory-asset-sdk/
│── src/
│ ├── FullStoryProvider.tsx # React Provider Component
│ ├── fullstoryUploader.ts # Asset upload logic
│ ├── index.ts # Package entry point
│ ├── cli.ts # CLI command script
│ ├── generate-asset-map-id.js # Cross-platform asset uploader
│── tests/ # Jest test files
│── package.json # Package metadata & dependencies
│── README.md # Documentation
```
### Development Setup
To set up the project locally:
```sh
git clone https://github.com/CarGDev/fullstory-asset-sdk.git
cd fullstory-asset-sdk
npm install
```
To run tests:
```sh
npm test
```
### Submitting Issues
Before opening an issue:
- **Check existing issues** to avoid duplicates.
- Provide **steps to reproduce** the problem.
- Include **error messages and logs**.
Create an issue here: [GitHub Issues](https://github.com/CarGDev/fullstory-asset-sdk/issues)
---
## Technical Details
### 1. How the Package Works
- **Cross-Platform Asset Uploading:**
- The script (`generate-asset-map-id.js`) **detects OS** and downloads the correct FullStory asset uploader binary.
- **Dynamic Asset Map Handling:**
- The provider **fetches the asset map** dynamically during app initialization.
- **Optimized Performance:**
- The SDK only loads FullStory **when needed**.
- Avoids reloading FullStory **on re-renders**.
### 2. Security Considerations
- API keys should **never be hardcoded**.
- Use **environment variables** to store credentials.
```sh
export FS_API_KEY="your-api-key"
```
---
## Final Notes
This SDK makes **FullStory integration seamless** by automating:
- **Session tracking**
- **Asset management**
- **React provider initialization**
For any issues or contributions, check:
👉 **[GitHub Repository](https://github.com/CarGDev/fullstory-asset-sdk)**