LogTide

SvelteKit SDK

@logtide/sveltekit integrates LogTide with SvelteKit through server hooks (handle, handleError, handleFetch) and client-side initialization.

Installation

npm install @logtide/sveltekit

Server Hooks

Wire up LogTide in your src/hooks.server.ts:

// src/hooks.server.ts
import { logtideHandle, logtideHandleError } from '@logtide/sveltekit';

// logtideHandle initializes LogTide automatically
export const handle = logtideHandle({
  dsn: import.meta.env.LOGTIDE_DSN,
  service: 'sveltekit-app',
  environment: import.meta.env.MODE,
});

// Capture server-side errors
export const handleError = logtideHandleError();

To compose with other hooks, use SvelteKit's sequence:

import { sequence } from '@sveltejs/kit/hooks';
import { logtideHandle } from '@logtide/sveltekit';

export const handle = sequence(
  logtideHandle(),
  ({ event, resolve }) => {
    // Your custom handle logic
    return resolve(event);
  }
);

Client-Side Init

// src/hooks.client.ts
import { logtideHandleError } from '@logtide/sveltekit';

export const handleError = logtideHandleError();

Fetch Instrumentation

Instrument server-side fetch calls for trace propagation:

// src/hooks.server.ts
import { logtideHandleFetch } from '@logtide/sveltekit';

export const handleFetch = logtideHandleFetch();

// Outgoing fetch requests from load functions now include
// traceparent headers for end-to-end distributed tracing

Load Functions

// src/routes/users/[id]/+page.server.ts
import { hub } from '@logtide/core';
import { error } from '@sveltejs/kit';

export async function load({ params, fetch }) {
  hub.captureLog('info', 'Loading user page', {
    userId: params.id,
  });

  const res = await fetch('/api/users/' + params.id);

  if (!res.ok) {
    hub.captureLog('warn', 'User not found', { userId: params.id });
    throw error(404, 'User not found');
  }

  return { user: await res.json() };
}

Form Actions

// src/routes/settings/+page.server.ts
import { hub } from '@logtide/core';
import { fail } from '@sveltejs/kit';

export const actions = {
  update: async ({ request }) => {
    const data = await request.formData();
    const name = data.get('name');

    hub.addBreadcrumb({
      type: 'default',
      category: 'form',
      message: 'Settings form submitted',
      timestamp: Date.now(),
    });

    try {
      await updateSettings({ name });
      hub.captureLog('info', 'Settings updated');
      return { success: true };
    } catch (error) {
      hub.captureError(error);
      return fail(500, { message: 'Update failed' });
    }
  },
};

API Reference

Export Description
logtideHandle()Server handle hook — request logging, scoping, trace extraction
logtideHandleError()Error hook — captures errors with context (server + client)
logtideHandleFetch()Fetch hook — injects traceparent headers on outgoing requests

See the JavaScript SDK core docs for the full @logtide/core API.