Skip to content

Releases: logtide-dev/logtide-javascript

v0.11.0

Choose a tag to compare

@Polliog Polliog released this 30 Jun 11:48
caeebaa

Audit of every package's public exports against the documentation, fixing all import/usage mismatches found (same class of bug as the missing initLogtide export in 0.10.0).

Added

  • @logtide/browser: LogtideErrorBoundary — the React error boundary documented at logtide.dev/integrations/react (import { LogtideErrorBoundary } from '@logtide/browser') is now actually exported. react is an optional peer dependency. @logtide/nextjs/client re-exports this shared implementation.
  • @logtide/nuxt: useLogtide() composable — auto-imported composable (const { captureLog, captureError, addBreadcrumb } = useLogtide()) for manual capture, as documented. Previously documented but not implemented.
  • @logtide/cli: --path option and --apiKey / --apiUrl aliases for sourcemaps upload — the documented invocation now works; directory may be positional or --path.

Fixed

  • @logtide/nuxt: tracesSampleRate, apiUrl and apiKey options are now honored (previously dropped/ignored unless a dsn was set).
  • @logtide/sdk-node README: middleware examples import from @logtide/sdk-node/middleware.
  • @logtide/nuxt README: corrected default service to 'nuxt'.

Full Changelog: v0.10.0...v0.11.0

v0.10.0

Choose a tag to compare

@Polliog Polliog released this 28 Jun 10:11
bef881d

Added

  • @logtide/browser: initLogtide export — the browser SDK now exposes initLogtide(options) directly, matching the React integration docs (import { initLogtide } from '@logtide/browser'). Wires up the global error handler, default browser integrations (click/network breadcrumbs, optional Web Vitals) and offline resilience, then binds the session id to the global scope. Resolves #9.
  • @logtide/browser: buildBrowserIntegrations / buildBrowserTransportWrapper helpers — exported building blocks used by initLogtide and the framework wrappers.

Changed

  • Framework client init now delegates to @logtide/browser (@logtide/nextjs, @logtide/sveltekit, @logtide/angular): the previously duplicated browser-init logic is gone — all three call the shared initLogtide, passing their own defaultService.
  • @logtide/sveltekit: default service is now 'sveltekit' when service is not provided (was 'unknown'), aligning it with Next.js and Angular. An explicit service still wins.

Full Changelog: v0.9.0...v0.10.0

v0.9.0

Choose a tag to compare

@Polliog Polliog released this 22 Jun 14:45

Added

  • @logtide/fastify: includeResponseBody option — captures the serialized response payload (truncated to 4096 chars) into the span attribute http.response_body. Opt-in; no redaction is applied, so gate it to non-sensitive routes if needed.

Fixed

  • Duplicate integrations are now ignored (@logtide/core): Client.addIntegration skips an integration whose name is already installed. Previously a caller that re-passed the framework defaults double-wrapped console.* (every log produced two identical breadcrumbs) and double-bound the global error handler.
  • Per-request breadcrumbs in logs (@logtide/core): captureLog/captureError now attach the breadcrumbs of the provided Scope instead of the app-wide global buffer. This stops the global, accumulated console history from leaking into a single request's log metadata. Logs emitted without a scope (or with a partial scope from a framework boundary) still use the global buffer as before.

v0.8.0

Choose a tag to compare

@Polliog Polliog released this 11 Jun 09:15

Added

  • Every entry now carries metadata.sdk = {"name": "logtide-javascript", "version": ...} (caller-provided sdk key wins).
  • Retry-After header on 429 responses now overrides the computed backoff delay.
  • HttpError carrying the response status and parsed Retry-After.

Changed

  • Client errors (4xx except 408/429) are no longer retried: the batch is dropped after the first attempt instead of burning the full retry budget.
  • DSN paths are now preserved as a base-path prefix (https://lp_key@host/logtide → ingest at https://host/logtide/api/v1/ingest) for reverse-proxied installs. Previously the path was ignored — remove any leftover project-id path from your DSN if you relied on that.

v0.7.2

Choose a tag to compare

@Polliog Polliog released this 07 Apr 13:18

What's Changed

Fixed

  • Smoke test regression: Upgraded express to v5 in test-app-node-express — the path-to-regexp >=8.4.0 security override broke express 4.x, which calls the pathRegexp named export removed in 8.4.0. Express 5 uses path-to-regexp 8.4+ natively.

Changed

  • Security hardening: Patched all 54 Dependabot security alerts via pnpm.overrides in the root package.json. Affected packages include: tar, esbuild, webpack, cookie, minimatch, rollup, ajv, qs, devalue, hono, @angular/core, @angular/compiler, @sveltejs/kit, svelte, nanotar, simple-git, @hono/node-server, defu, elysia, h3, immutable, lodash, node-forge, path-to-regexp, picomatch, serialize-javascript, svgo, undici, vite, brace-expansion, fastify, file-type, next, srvx, unhead, and yaml. pnpm audit reports no known vulnerabilities.

Full Changelog: https://github.com/logtide-dev/logtide-javascript/blob/main/CHANGELOG.md#072---2026-04-07

v0.7.1 — Fix workspace:* leak in published tarballs

Choose a tag to compare

@Polliog Polliog released this 07 Apr 11:57

Fixed

  • Broken 0.7.0 release: All @logtide/*@0.7.0 packages were published with literal workspace:* specifiers in their dependencies, causing ERR_PNPM_WORKSPACE_PKG_NOT_FOUND on pnpm add and equivalent failures on npm. All packages have been republished as 0.7.1 with proper version specifiers.

    Fixes logtide-dev/logtide#189.

Changed

  • CI hardening: publish.yml now fails fast if any package.json still contains the workspace: protocol after the version-rewrite step, preventing future broken releases.
  • CI completeness: publish.yml now also publishes @logtide/browser and @logtide/cli, which were previously missing from the publish job.

Upgrade

# pnpm
pnpm add @logtide/sveltekit@0.7.1
pnpm add @logtide/nextjs@0.7.1
pnpm add @logtide/nuxt@0.7.1
# ... etc.

# npm
npm install @logtide/sveltekit@0.7.1

Affected packages

Package Version
@logtide/types 0.7.1
@logtide/core 0.7.1
@logtide/browser 0.7.1
@logtide/sdk-node 0.7.1
@logtide/express 0.7.1
@logtide/fastify 0.7.1
@logtide/nextjs 0.7.1
@logtide/nuxt 0.7.1
@logtide/sveltekit 0.7.1
@logtide/hono 0.7.1
@logtide/angular 0.7.1
@logtide/elysia 0.7.1
@logtide/cli 0.7.1

If you were on 0.7.0 and hit installation errors, upgrade directly to 0.7.1.

v0.7.0

Choose a tag to compare

@Polliog Polliog released this 09 Mar 14:03
4ea76e2

Added

Browser SDK (@logtide/browser)

  • New @logtide/browser package with session context, anonymous session ID, and page URL tracking
  • WebVitalsIntegration — captures Core Web Vitals (LCP, FID, CLS, INP, TTFB), wired into all framework packages
  • Click breadcrumb integration — automatic tracking of user clicks with element selector
  • Network breadcrumb integration — tracks fetch/XHR requests with method, URL, status, and duration
  • OfflineTransport with navigator.sendBeacon support for reliable delivery on page unload

CLI (@logtide/cli)

  • New @logtide/cli package — logtide command-line tool
  • logtide sourcemaps upload command for uploading source maps to LogTide server
  • Built with commander for CLI argument parsing

Framework Improvements

  • Framework-specific improvements across all packages

Full Changelog: v0.6.1...v0.7.0

v0.6.1

Choose a tag to compare

@Polliog Polliog released this 28 Feb 00:18
c347609

What's Changed

  • chore: bump version to 0.6.1 and fix security vulnerabilities by @Polliog in #6

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@Polliog Polliog released this 28 Feb 00:08
fcbaa97

Added

  • OTLP Span Events: Breadcrumbs are now automatically converted to OTLP Span Events, providing a detailed timeline of events within the trace viewer.
  • Child Spans API: New startChildSpan() and finishChildSpan() APIs in @logtide/core to create hierarchical spans for operations like DB queries or external API calls.
  • Rich Span Attributes: Added standardized attributes to request spans across all frameworks:
    • http.user_agent, net.peer.ip, http.query_string (at start)
    • http.status_code, duration_ms, http.route (at finish)
  • Express Error Handler: Exported logtideErrorHandler to capture unhandled errors and associate them with the current request scope.

Changed

  • Enriched Breadcrumbs: Request/Response breadcrumbs now include more metadata (method, url, status, duration_ms) by default.
  • Improved Nuxt Tracing: Nitro plugin now accurately captures response status codes and durations.
  • Improved Angular Tracing: LogtideHttpInterceptor now captures status codes for both successful and failed outgoing requests.

Fixed

  • Fixed a bug in Nuxt Nitro plugin where spans were always marked as 'ok' regardless of the actual response status.

Full Changelog: v0.5.6...v0.6.0

v0.5.6

Choose a tag to compare

@Polliog Polliog released this 08 Feb 13:06
395d4e0

Changed

DSN Simplified

  • Removed redundant projectId from DSN format — the API key already embeds the project ID
  • New DSN format: https://lp_APIKEY@host (legacy format with path still accepted for backward compatibility)
  • Added apiUrl + apiKey as alternative to DSN string (backward compatible with @logtide/sdk-node config format)
  • Added resolveDSN() helper that accepts either dsn or apiUrl + apiKey
  • Removed projectId field from DSN interface (@logtide/types)
  • Removed X-Project-Id header from LogtideHttpTransport and OtlpHttpTransport (@logtide/core)

Dynamic Service Name

  • service in ClientOptions is now optional — each framework package defaults to its own name ('express', 'fastify', 'hono', 'elysia', 'nextjs', 'sveltekit', 'nuxt', 'angular')
  • Added service?: string field and setService() method to Scope — allows overriding service name per-request or per-module
  • Service resolution chain: scope.serviceoptions.service → framework default → 'unknown'

Mock Server

  • Removed X-Project-Id from CORS headers and request tracking

Documentation

  • Updated DSN format examples across all package READMEs

Full Changelog: v0.5.5...v0.5.6