{"_id":"@appxiom/web","_rev":"5-559199be22dea9c72f1dbca2c4a0ff1b","name":"@appxiom/web","dist-tags":{"latest":"0.1.12"},"versions":{"0.1.8":{"name":"@appxiom/web","version":"0.1.8","keywords":["appxiom","observability","monitoring","analytics","rum","performance"],"author":{"name":"BasilGregory Software Labs Private Limited"},"license":"SEE LICENSE IN LICENSE","_id":"@appxiom/web@0.1.8","maintainers":[{"name":"robin_a_p","email":"rp@basilgregory.com"}],"homepage":"https://www.appxiom.com","dist":{"shasum":"2bf5d343d1cd07b06aec6770c347ecd635b850a9","tarball":"https://registry.npmjs.org/@appxiom/web/-/web-0.1.8.tgz","fileCount":16,"integrity":"sha512-W2r5X5XXQkmA3tR1bxZcyPpeSzndvPJ8yJuTtKMGzf4HZTDCYWdRs+16mZV1jZb+PTTyHDwZHH5fnqhTxgWp2g==","signatures":[{"sig":"MEUCICxJXUczNgd9XMFP3E9KnUKE5JrMk7JCfJs6IGdjoIyaAiEA2oZttxvww1B7pcfsMxynSRu2u2ZU0/dV2/f/qGKf7GI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430172},"main":"index.js","type":"module","_from":"file:dist/publish/appxiom-web-0.1.8.tgz","types":"./index.d.ts","module":"index.js","engines":{"node":">=18"},"exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./package.json":"./package.json"},"scripts":{"build:wasm":"cd ../ax-web-core && wasm-pack build --release --target web --out-dir ../ax-js/ax_web_core","check:wasm":"test -f ax_web_core/ax_web_core_bg.wasm && test -f ax_web_core/ax_web_core.js && test -f ax_web_core/ax_web_core.d.ts","check:types":"tsc --project test/types/tsconfig.json --noEmit","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run check:wasm && npm run pack:dry-run"},"_npmUser":{"name":"robin_a_p","email":"rp@basilgregory.com"},"_resolved":"/Users/robinpanicker/dev/appxiom/appxiom-web-sdk/dist/publish/appxiom-web-0.1.8.tgz","_integrity":"sha512-W2r5X5XXQkmA3tR1bxZcyPpeSzndvPJ8yJuTtKMGzf4HZTDCYWdRs+16mZV1jZb+PTTyHDwZHH5fnqhTxgWp2g==","_npmVersion":"10.8.3","description":"Appxiom Web Observability SDK","directories":{},"sideEffects":true,"_nodeVersion":"22.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web_0.1.8_1788181681913_0.45085181075139924","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@appxiom/web","version":"0.1.9","keywords":["appxiom","observability","monitoring","analytics","rum","performance"],"author":{"name":"BasilGregory Software Labs Private Limited"},"license":"SEE LICENSE IN LICENSE","_id":"@appxiom/web@0.1.9","maintainers":[{"name":"robin_a_p","email":"rp@basilgregory.com"}],"homepage":"https://www.appxiom.com","dist":{"shasum":"95c9faaf099769b4b695113131837a3e0e353372","tarball":"https://registry.npmjs.org/@appxiom/web/-/web-0.1.9.tgz","fileCount":16,"integrity":"sha512-Yjjj98i4vJeximGBP6JL5OD0rzj1duezqOtnLU/rgyK52F7vBiv1aRrTgjLNZsCyE9MJKIgstQZbSP9WL4f8pQ==","signatures":[{"sig":"MEQCID84NJrajWUIVEJdGlwi8YHHKZ3qyefmVDcFKfEbwDK3AiBUbhn54BohpIDA2FASqtgAUdR6JeUeGAY7HPg1eSYwoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431455},"main":"index.js","type":"module","_from":"file:dist/publish/appxiom-web-0.1.9.tgz","types":"./index.d.ts","module":"index.js","engines":{"node":">=18"},"exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./package.json":"./package.json"},"scripts":{"build:wasm":"cd ../ax-web-core && wasm-pack build --release --target web --out-dir ../ax-js/ax_web_core","check:wasm":"test -f ax_web_core/ax_web_core_bg.wasm && test -f ax_web_core/ax_web_core.js && test -f ax_web_core/ax_web_core.d.ts","check:types":"tsc --project test/types/tsconfig.json --noEmit","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run check:wasm && npm run pack:dry-run"},"_npmUser":{"name":"robin_a_p","email":"rp@basilgregory.com"},"_resolved":"/Users/robinpanicker/dev/appxiom/appxiom-web-sdk/dist/publish/appxiom-web-0.1.9.tgz","_integrity":"sha512-Yjjj98i4vJeximGBP6JL5OD0rzj1duezqOtnLU/rgyK52F7vBiv1aRrTgjLNZsCyE9MJKIgstQZbSP9WL4f8pQ==","_npmVersion":"10.8.3","description":"Appxiom Web Observability SDK","directories":{},"sideEffects":true,"_nodeVersion":"22.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web_0.1.9_1788862605296_0.28129520373300076","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@appxiom/web","version":"0.1.10","keywords":["appxiom","observability","monitoring","analytics","rum","performance"],"author":{"name":"BasilGregory Software Labs Private Limited"},"license":"SEE LICENSE IN LICENSE","_id":"@appxiom/web@0.1.10","maintainers":[{"name":"robin_a_p","email":"rp@basilgregory.com"}],"homepage":"https://www.appxiom.com","dist":{"shasum":"0c23dd4c0a6edf9d37c16c6ee75a570184732103","tarball":"https://registry.npmjs.org/@appxiom/web/-/web-0.1.10.tgz","fileCount":16,"integrity":"sha512-W56GsPPq9O5fhYEhuZALPSS78lv2KEd9fvAodXAplt0Kt0DYGg85t7++i2GM8y5LPw5U0EMB7tOE32UJCsvh9g==","signatures":[{"sig":"MEQCIE5LLjigLtqe9Yep7mq3YrjCbaTcWoFR85L9gEGps5ZqAiAoCWY5Zzt0WncCVWul/WwR3lXVHXY2ugAceb1fgZws6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430771},"main":"index.js","type":"module","_from":"file:dist/publish/appxiom-web-0.1.10.tgz","types":"./index.d.ts","module":"index.js","engines":{"node":">=18"},"exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./package.json":"./package.json"},"scripts":{"build:wasm":"cd ../ax-web-core && wasm-pack build --release --target web --out-dir ../ax-js/ax_web_core","check:wasm":"test -f ax_web_core/ax_web_core_bg.wasm && test -f ax_web_core/ax_web_core.js && test -f ax_web_core/ax_web_core.d.ts","check:types":"tsc --project test/types/tsconfig.json --noEmit","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run check:wasm && npm run pack:dry-run"},"_npmUser":{"name":"robin_a_p","email":"rp@basilgregory.com"},"_resolved":"/Users/robinpanicker/dev/appxiom/appxiom-web-sdk/dist/publish/appxiom-web-0.1.10.tgz","_integrity":"sha512-W56GsPPq9O5fhYEhuZALPSS78lv2KEd9fvAodXAplt0Kt0DYGg85t7++i2GM8y5LPw5U0EMB7tOE32UJCsvh9g==","_npmVersion":"10.8.3","description":"Appxiom Web Observability SDK","directories":{},"sideEffects":true,"_nodeVersion":"22.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web_0.1.10_1789106243136_0.9620392620294467","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@appxiom/web","version":"0.1.11","keywords":["appxiom","observability","monitoring","analytics","rum","performance"],"author":{"name":"BasilGregory Software Labs Private Limited"},"license":"SEE LICENSE IN LICENSE","_id":"@appxiom/web@0.1.11","maintainers":[{"name":"robin_a_p","email":"rp@basilgregory.com"}],"homepage":"https://www.appxiom.com","dist":{"shasum":"7411412ae97a368779afaf7534afa523685ddf29","tarball":"https://registry.npmjs.org/@appxiom/web/-/web-0.1.11.tgz","fileCount":16,"integrity":"sha512-h80x04iv8e28OLhUVDjWjIFO9fB4AIPj2u3ArPlZz0kB6B4m5hMNomB47kG6dzsDt2hAWN+fWYBPP9h8d7cHhA==","signatures":[{"sig":"MEYCIQC3fRlOlQy+aHz9chjo+tLwX5FfGRjoYsdoP5SQzX9npwIhAKU4mU6322V6SZoTVJGfugrqdNjz3G0ERFvaWUjCYZhv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDVyokONl8Qso1zr3RqdLQwmdkbtby0QWML7mDBCurmKAiBPgN+9qn3/YDP1yw/RZ2VhaOMhWCO8nMXvzTBiZOQY4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433127},"main":"index.js","type":"module","_from":"file:dist/publish/appxiom-web-0.1.11.tgz","types":"./index.d.ts","module":"index.js","engines":{"node":">=18"},"exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./package.json":"./package.json"},"scripts":{"build:wasm":"cd ../ax-web-core && wasm-pack build --release --target web --out-dir ../ax-js/ax_web_core","check:wasm":"test -f ax_web_core/ax_web_core_bg.wasm && test -f ax_web_core/ax_web_core.js && test -f ax_web_core/ax_web_core.d.ts","check:types":"tsc --project test/types/tsconfig.json --noEmit","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run check:wasm && npm run pack:dry-run"},"_npmUser":{"name":"robin_a_p","email":"rp@basilgregory.com"},"_resolved":"/Users/robinpanicker/dev/appxiom/appxiom-web-sdk/dist/publish/appxiom-web-0.1.11.tgz","_integrity":"sha512-h80x04iv8e28OLhUVDjWjIFO9fB4AIPj2u3ArPlZz0kB6B4m5hMNomB47kG6dzsDt2hAWN+fWYBPP9h8d7cHhA==","_npmVersion":"10.8.3","description":"Appxiom Web Observability SDK","directories":{},"sideEffects":true,"_nodeVersion":"22.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/web_0.1.11_1789637077445_0.31176235464217195","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"_id":"@appxiom/web@0.1.12","dist":{"shasum":"e06a4d66924202fabe688a00ac5fcd1f230a99e2","tarball":"https://registry.npmjs.org/@appxiom/web/-/web-0.1.12.tgz","fileCount":16,"integrity":"sha512-+KZ3AWGF+8He1eoyYMCX+Qi/ANlgs9uXW042KN4sTqWmkX4RuwQkpH2fUXxNoQj3glWj3TEYVuXVfNPW5AS2wA==","signatures":[{"sig":"MEUCIG3a409XA7WWD3De66Uak9uUUdhat9awIWjPaahKnqrEAiEAyJa3ExlSjcmqklz9ryQq8Iit1MkiyQ8lFlRP02pVQDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCIG9oHjX5rgRVNy3vlwaZXR0xLQJ/eI4mBJmplmRY33QIgSaaGtKJmZaGOA+Ozz/5x7vPCJvOC5ND+va/MdsVSu2Q="}],"unpackedSize":434078},"main":"index.js","name":"@appxiom/web","type":"module","_from":"file:dist/publish/appxiom-web-0.1.12.tgz","types":"./index.d.ts","author":{"name":"BasilGregory Software Labs Private Limited"},"module":"index.js","engines":{"node":">=18"},"exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./package.json":"./package.json"},"license":"SEE LICENSE IN LICENSE","scripts":{"build:wasm":"cd ../ax-web-core && wasm-pack build --release --target web --out-dir ../ax-js/ax_web_core","check:wasm":"test -f ax_web_core/ax_web_core_bg.wasm && test -f ax_web_core/ax_web_core.js && test -f ax_web_core/ax_web_core.d.ts","check:types":"tsc --project test/types/tsconfig.json --noEmit","pack:dry-run":"npm pack --dry-run","prepublishOnly":"npm run check:wasm && npm run pack:dry-run"},"version":"0.1.12","_npmUser":{"name":"robin_a_p","email":"rp@basilgregory.com"},"homepage":"https://www.appxiom.com","keywords":["appxiom","observability","monitoring","analytics","rum","performance"],"_resolved":"/Users/robinpanicker/dev/appxiom/appxiom-web-sdk/dist/publish/appxiom-web-0.1.12.tgz","_integrity":"sha512-+KZ3AWGF+8He1eoyYMCX+Qi/ANlgs9uXW042KN4sTqWmkX4RuwQkpH2fUXxNoQj3glWj3TEYVuXVfNPW5AS2wA==","_npmVersion":"10.8.3","description":"Appxiom Web Observability SDK","directories":{},"maintainers":[{"name":"robin_a_p","email":"rp@basilgregory.com"}],"sideEffects":true,"_nodeVersion":"22.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web_0.1.12_1789638204197_0.22102522800791125"}}},"time":{"created":"2026-08-31T13:08:01.665Z","modified":"2026-09-17T09:43:24.482Z","0.1.8":"2026-08-31T13:08:02.057Z","0.1.9":"2026-09-08T10:16:45.476Z","0.1.10":"2026-09-11T05:57:23.271Z","0.1.11":"2026-09-17T09:24:37.532Z","0.1.12":"2026-09-17T09:43:24.285Z"},"author":{"name":"BasilGregory Software Labs Private Limited"},"license":"SEE LICENSE IN LICENSE","homepage":"https://www.appxiom.com","keywords":["appxiom","observability","monitoring","analytics","rum","performance"],"description":"Appxiom Web Observability SDK","maintainers":[{"name":"robin_a_p","email":"rp@basilgregory.com"}],"readme":"# Appxiom Web SDK (`@appxiom/web`)\n\nThe official client-side JavaScript SDK for Appxiom. Use this package to initialize monitoring, track goals, report issues, and attach custom activity data from your web app.\n\n## Table of Contents\n\n- [Before You Begin](#before-you-begin)\n- [Installation](#installation)\n- [Test Integration](#test-integration)\n- [Quick Start](#quick-start)\n- [Vite](#vite)\n- [Frameworks and SSR](#frameworks-and-ssr)\n- [Production Deployment](#production-deployment)\n- [Public API](#public-api)\n- [Error Types](#error-types)\n\n## Before You Begin\n\n1. Register for an Appxiom account at [appxiom.com](https://www.appxiom.com/) and log in to the dashboard.\n2. Use the `+` at the top left corner to create an app.\n3. Link your web application to Appxiom using the domain (eg: app.xyz.com) in the settings page. No PORT needs to be provided.\n4. Copy the APP KEY and PLATFORM KEY from the Appxiom dashboard.\n5. Integrate the Appxiom Web package into your application as mentioned in installation section.\n6. Test your integration to ensure monitoring and reporting are working as expected.\n\n## Installation\n\n```bash\nnpm install @appxiom/web\n```\n\n## Test Integration\n\nAfter installation, validate that your SDK is connected properly by triggering a temporary test issue from the initialized client. Call the helper method `#sym:raiseTestIssue` once in a safe debug path or temporary validation flow:\n\n### JavaScript\n\n```javascript\nconst ax = await init(\n  'YOUR_APP_KEY',\n  'YOUR_PLATFORM_KEY',\n  'YOUR_APP_VERSION',\n  'YOUR_BUILD_IDENTIFIER',\n);\n\nax.raiseTestIssue();\n```\n\n### TypeScript\n\n```typescript\nimport init, { type AX } from '@appxiom/web';\n\nconst ax: AX = await init(\n  'YOUR_APP_KEY',\n  'YOUR_PLATFORM_KEY',\n  'YOUR_APP_VERSION',\n  'YOUR_BUILD_IDENTIFIER',\n);\n\nax.raiseTestIssue();\n```\n\nThis creates a custom issue with a payload and stack trace so you can confirm the issue is being reported in the Appxiom dashboard. After successful validation, remove the call and any temporary debug trigger so the test issue is not left in production code.\n\n## Quick Start\n\n### JavaScript\n\n```javascript\nimport init from '@appxiom/web';\n\nconst ax = await init(\n  'YOUR_APP_KEY',\n  'YOUR_PLATFORM_KEY',\n  'YOUR_APP_VERSION',\n  'YOUR_BUILD_IDENTIFIER'\n);\n```\n\n### TypeScript\n\n`@appxiom/web` ships first-party TypeScript declarations. No separate `@types` package is needed.\n\n```typescript\nimport init, { type AX } from '@appxiom/web';\n\nconst ax: AX = await init(\n  'YOUR_APP_KEY',\n  'YOUR_PLATFORM_KEY',\n  'YOUR_APP_VERSION',\n  'YOUR_BUILD_IDENTIFIER',\n);\n```\n\n`init(...)` returns `Promise<AX>`. The SDK actions available on `AX` are documented below.\n\n## Vite\n\n`@appxiom/web` includes a WebAssembly binary. During local development, exclude the package from Vite dependency optimization so Vite preserves the binary's source-relative URL:\n\n### JavaScript\n\n```javascript\nimport { defineConfig } from 'vite';\n\nexport default defineConfig({\n  optimizeDeps: {\n    exclude: ['@appxiom/web'],\n  },\n});\n```\n\n### TypeScript\n\n```typescript\nimport { defineConfig } from 'vite';\n\nexport default defineConfig({\n  optimizeDeps: {\n    exclude: ['@appxiom/web'],\n  },\n});\n```\n\nAfter adding this setting, clear Vite's optimized-dependency cache and restart the development server:\n\n```bash\nrm -rf node_modules/.vite\nnpm run dev -- --force\n```\n\nThis setting affects Vite's development server only. It is safe to retain for production builds; Vite does not use dependency optimization when running `vite build`.\n\n## Frameworks and SSR\n\nThe SDK is framework-neutral and runs in the browser. Initialize it from your application's browser entry point or client-side lifecycle code.\n\n- React: initialize in a client-side application entry point, or use `@appxiom/4react` for React-specific integrations.\n- Vue: initialize from `main.ts` or another browser-only application entry point.\n- Angular: initialize from a browser-only service or application lifecycle path.\n- Svelte: initialize from browser code such as `onMount`.\n- Next.js, Nuxt, SvelteKit, and other SSR frameworks: initialize only on the client. Do not import or initialize the SDK from server-rendered code, route handlers, or server components.\n\nVite-powered frameworks, including Vite React, Vue, SvelteKit, and Nuxt applications, need the Vite configuration above during local development.\n\nFor an SSR application, load and initialize the SDK only after the browser is available:\n\n```typescript\nconst { default: init } = await import('@appxiom/web');\n\nconst ax = await init(\n  'YOUR_APP_KEY',\n  'YOUR_PLATFORM_KEY',\n  'YOUR_APP_VERSION',\n  'YOUR_BUILD_IDENTIFIER',\n);\n```\n\n## Production Deployment\n\nRun your framework's production build as usual. For Vite applications, this is typically:\n\n```bash\nnpm run build\n```\n\nVite emits the SDK's WebAssembly binary into the production output and rewrites the loader to its generated asset URL. Deploy the complete build output, including the generated `.wasm` asset, without renaming or omitting files.\n\nYour CDN or web server must serve `.wasm` files with this response header:\n\n```http\nContent-Type: application/wasm\n```\n\nAlso ensure SPA fallback rules do not return `index.html` for `.wasm` asset requests. Receiving HTML instead of the binary produces errors such as `expected magic word 00 61 73 6d`.\n\nFor non-Vite applications, use the same deployment rules: the bundler must emit the package's `.wasm` asset, the asset must be deployed with the application, and the host must serve it with the WASM MIME type.\n\n## Public API\n\nThe following APIs are available to client projects.\n\n### `init(appKey, platformKey, version, buildIdentifier)`\n\nInitializes the SDK and returns an `AX` instance.\n\n#### JavaScript\n\n```javascript\nconst ax = await init('APP_KEY', 'PLATFORM_KEY', 'YOUR_APP_VERSION', 'YOUR_BUILD_IDENTIFIER');\n```\n\n#### TypeScript\n\n```typescript\nimport type { AX } from '@appxiom/web';\n\nconst ax: AX = await init('APP_KEY', 'PLATFORM_KEY', 'YOUR_APP_VERSION', 'YOUR_BUILD_IDENTIFIER');\n```\n\nBoth forms also support values loaded from application configuration:\n\n```javascript\nconst ax = await init(\n  config.appKey,\n  config.platformKey,\n  config.version,\n  config.buildId\n);\n```\n\n```typescript\nimport type { AX } from '@appxiom/web';\n\nconst ax: AX = await init(\n  config.appKey,\n  config.platformKey,\n  config.version,\n  config.buildId,\n);\n```\n\n### `AX` class\n\nThe package also exports the `AX` class.\n\n#### JavaScript\n\n```javascript\nimport init, { AX } from '@appxiom/web';\n```\n\n#### TypeScript\n\n```typescript\nimport init, { AX } from '@appxiom/web';\n\nconst ax: AX = await init('APP_KEY', 'PLATFORM_KEY', 'YOUR_APP_VERSION', 'YOUR_BUILD_IDENTIFIER');\n```\n\n### `ax.launch()`\n\nStarts SDK runtime initialization. This is called by `init(...)`, so you usually do not need to call it manually.\n\n### `ax.setCustomId(customId)`\n\nAssociates your user/account identifier with telemetry.\n\n#### JavaScript\n\n```javascript\nax.setCustomId('user-12345');\n```\n\n#### TypeScript\n\n```typescript\nax.setCustomId('user-12345');\n```\n\n### `ax.startGoal(name)`\n\nStarts a named goal.\n\n#### JavaScript\n\n```javascript\nax.startGoal('checkout-flow');\n```\n\n#### TypeScript\n\n```typescript\nax.startGoal('checkout-flow');\n```\n\n### `ax.endGoal(name, properties = {}, value = null)`\n\nEnds a named goal.\n\n#### JavaScript\n\n```javascript\nax.endGoal('checkout-flow', { cartValue: 120.0 }, 120.0);\n```\n\n#### TypeScript\n\n```typescript\nax.endGoal('checkout-flow', { cartValue: 120.0 }, 120.0);\n```\n\n### `ax.logActivity(name, properties = {})`\n\nAdds a custom activity entry.\n\n#### JavaScript\n\n```javascript\nax.logActivity('Checkout Step Completed', {\n  step: 'payment',\n  orderId: 'ORD-10023'\n});\n```\n\n#### TypeScript\n\n```typescript\nax.logActivity('Checkout Step Completed', {\n  step: 'payment',\n  orderId: 'ORD-10023',\n});\n```\n\n### `ax.reportCustomIssue(title, description, severity, data = {}, stacktrace = null)`\n\nReports a custom issue from your application. Severity values are `0` (Minor), `1` (Major), and `2` (Fatal).\n\n#### JavaScript\n\n```javascript\nax.reportCustomIssue(\n  'Checkout Validation Failed',\n  'Payment token was missing.',\n  1,\n  { module: 'checkout' },\n  new Error('Missing payment token').stack\n);\n```\n\n#### TypeScript\n\n```typescript\nimport type { IssueSeverity } from '@appxiom/web';\n\nconst severity: IssueSeverity = 1;\nax.reportCustomIssue(\n  'Checkout Validation Failed',\n  'Payment token was missing.',\n  severity,\n  { module: 'checkout' },\n  new Error('Missing payment token').stack,\n);\n```\n\n### Type exports\n\nThe package exports the following TypeScript declarations:\n\n- `AX`: the initialized SDK instance returned by `init(...)`.\n- `AppxiomProperties`: a string-keyed object for telemetry metadata.\n- `IssueSeverity`: `0 | 1 | 2`, corresponding to Minor, Major, and Fatal.\n\n## Error Types\n\nThe SDK categorizes detected problems into a set of structured error types so that telemetry, debugging, and reporting are easier to analyze. The values below correspond to the internal error-type mapping used by the SDK.\n\n- `HTTPStatusError`: Indicates that an HTTP request completed with a non-success status code such as `4xx` or `5xx`. This is commonly used for failed API responses or backend-side errors.\n- `HTTPDuplicateRequestError`: Represents a situation where the same request was issued more than once, often causing duplicate work or duplicate network activity.\n- `HTTPDelayedResponseError`: Signals that an HTTP request took longer than expected to respond. This usually points to latency, slow network conditions, or backend delays.\n- `HTTPExceptionError`: Captures unexpected exceptions thrown during the HTTP request lifecycle, such as runtime failures, parsing issues, or transport-level exceptions.\n- `MemoryLeak`: Indicates a suspected memory leak where memory usage grows over time without being released.\n- `MemoryAnomaly`: Represents abnormal memory behavior that does not necessarily meet the threshold of a full leak, but still suggests unusual retention or allocation patterns.\n- `MemoryRisk`: Marks a potential memory-related issue that should be monitored closely, even if it has not yet become a confirmed leak or spike.\n- `MemorySpike`: Represents a sudden rise in memory consumption over a short time window, often indicating pressure from a temporary workload or an underlying issue.\n- `AutoCapturedError`: Refers to errors that the SDK captures automatically from the runtime environment without requiring manual instrumentation.\n- `ResourceLoadError`: Indicates that a critical resource such as an image, script, stylesheet, or other asset failed to load properly.\n- `CustomException`: Represents an exception that your application reports manually through the SDK for domain-specific or application-level errors.\n- `CustomIssue`: Denotes a manually reported issue that is not necessarily an exception, but still needs to be tracked as a meaningful product or engineering problem.\n- `FrameDrop`: Signals a frame-rate drop or rendering anomaly that may indicate performance degradation, jank, or excessive main-thread work.\n\n","readmeFilename":"README.md"}