
Product
Socket for Jira Is Now Available
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.
avo-inspector
Advanced tools
[](https://badge.fury.io/js/avo-inspector)
This is a quick start guide. For more information about Inspector project please read Avo documentation.
If you are using SSR or web workers switch to this library build
If you are looking for React Native library please switch to this branch and use
react-native-avo-inspectornpm package.
The library is distributed with npm
npm i avo-inspector
or
yarn add avo-inspector
Obtain the API key at Avo.app
import * as Inspector from "avo-inspector";
let inspector = new Inspector.AvoInspector({
apiKey: "your api key",
env: Inspector.AvoInspectorEnv.Dev,
version: "1.0.0",
appName: "My app",
suffix: "unique-string" // optional, if you have more than 1 instance of Avo Inspector in same project
});
Logs are enabled by default in the dev mode and disabled in prod mode.
inspector.enableLogging(true);
The setup is lightweight and is covered in this guide.
Every event sent with Avo Function after this integration will automatically be sent to Inspector.
Whenever you send tracking event call one of the following methods:
Read more in the Avo documentation
This method gets actual tracking event parameters, extracts schema automatically and sends it to the Inspector backend. It is the easiest way to use the library, just call this method at the same place you call your analytics tools' track methods with the same parameters.
inspector.trackSchemaFromEvent("Event name", {
"String Prop": "Prop Value",
"Float Prop": 1.0,
"Boolean Prop": true,
});
If you prefer to extract data schema manually you would use this method.
inspector.trackSchema("Event name", [
{ propertyName: "String prop", propertyType: "string" },
{ propertyName: "Float prop", propertyType: "float" },
{ propertyName: "Boolean prop", propertyType: "boolean" },
]);
let schema = inspector.extractSchema({
"String Prop": "Prop Value",
"Float Prop": 1.0,
"Boolean Prop": true,
});
You can experiment with this method to see how more complex schemas look, for example with nested lists and objects.
Inspector supports encrypting property values in development and staging environments. This allows you to see actual property values in Avo's debugging tools without exposing sensitive data, since only you hold the private decryption key.
Use the built-in CLI tool to generate a key pair:
npx avo-inspector generate-keys
This will output:
Pass the publicEncryptionKey parameter when initializing Inspector:
import * as Inspector from "avo-inspector";
let inspector = new Inspector.AvoInspector({
apiKey: "your api key",
env: Inspector.AvoInspectorEnv.Dev,
version: "1.0.0",
publicEncryptionKey: "your-public-key-hex-string" // Enable encryption
});
Note: The public key is not a secret - you can hardcode it, store it in .env, or configure it however you prefer. The SDK only uses the public key to encrypt values before sending them to Avo.
Private key: Save it securely (password manager, secure notes). Never expose it to the SDK. You only need it when viewing encrypted values in Avo's dashboard.
When encryption is enabled:
When initialized with a publicEncryptionKey in dev or staging environments, Inspector performs client-side validation of your events against your Avo Tracking Plan.
Event Spec Fetching: When you track an event, Inspector fetches the event specification from Avo's backend (results are cached for performance).
Event Matching: Inspector matches your event to the closest event in your tracking plan, considering event names, mapped names, and variant-specific properties.
Property Validation: Your event properties are validated against the spec rules:
Immediate Reporting: Validated events bypass batching and are sent immediately to Inspector, ensuring you get real-time feedback.
If logging is enabled, validation errors are logged to the console:
inspector.enableLogging(true);
// If "User Signed Up" requires an "email" property:
inspector.trackSchemaFromEvent("User Signed Up", { name: "John" });
// Console: [Avo Inspector] Validation errors for event "User Signed Up": [{ code: "RequiredMissing", propertyName: "email" }]
Note: Client-side validation only works with trackSchemaFromEvent, which has access to actual property values needed for validation.
The trackSchema method only sends pre-extracted schemas and does not perform client-side validation - it goes through the normal batching flow.
// ✅ Validates against tracking plan (when publicEncryptionKey is provided)
inspector.trackSchemaFromEvent("Event Name", { prop: "value" });
// ❌ Does NOT validate - only sends schema, uses batching
inspector.trackSchema("Event Name", [{ propertyName: "prop", propertyType: "string" }]);
trackSchemaFromEvent returns a Promise<EventProperty[]> that resolves with the validated properties. You can use this in two ways:
Call without await for non-blocking behavior. The event is tracked asynchronously and validation happens in the background:
// Non-blocking - validation runs in background
inspector.trackSchemaFromEvent("Event Name", { prop: "value" });
If you need to access validation results (e.g., for testing or debugging), you can await the call:
// Blocking - wait for validation to complete
const validatedProperties = await inspector.trackSchemaFromEvent("Event Name", {
email: "user@example.com",
age: 25
});
// Each property includes validation results:
// {
// propertyName: "email",
// propertyType: "string",
// failedEventIds: [], // Event IDs where this property failed validation
// passedEventIds: ["abc123"] // Event IDs where this property passed validation
// }
Note: Awaiting will block until the event spec is fetched (if not cached) and validation completes. For production use, fire-and-forget is recommended to avoid impacting your application's performance.
In order to ensure our SDK doesn't have a large impact on performance or battery life it supports event schemas batching.
Default batch size is 30 and default batch flush timeout is 30 seconds. In development mode batching is disabled.
inspector.setBatchSize(15);
inspector.setBatchFlushSeconds(10);
You can control the network timeout for the SDK. Default is 2 seconds.
Inspector.AvoInspector.networkTimeout = 5000;
Avo (https://www.avo.app), friends@avo.app
AvoInspector is available under the MIT license.
FAQs
[](https://badge.fury.io/js/avo-inspector)
The npm package avo-inspector receives a total of 53,920 weekly downloads. As such, avo-inspector popularity was classified as popular.
We found that avo-inspector demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.