@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.