How to Add Audit Logs to Remix

TL;DR: Add Trailbase audit logging to your Remix application. Track events in loaders, actions, and resource routes.

Step 1: Install the SDK

npm install @trailbase/sdk

Step 2: Initialize the Client

// app/lib/trailbase.server.ts
import { TrailbaseClient } from '@trailbase/sdk';

export const trailbase = new TrailbaseClient({
  apiKey: process.env.TRAILBASE_API_KEY!,
  region: 'us-east-1',
});

In Remix, use the .server.ts suffix to ensure the Trailbase client and API key are never sent to the browser. Track events in actions (mutations) and loaders (reads) as needed.

Step 3: Track Audit Events

// app/routes/api.documents.tsx
import { trailbase } from '~/lib/trailbase.server';

export async function action({ request }: ActionFunctionArgs) {
  const session = await getSession(request);
  const formData = await request.formData();

  const doc = await createDocument(formData);

  await trailbase.track('document.create', {
    actor: session.userId,
    target: doc.id,
    metadata: { title: doc.title },
  });

  return redirect(`/documents/${doc.id}`);
}

Step 4: Query Audit Logs

// app/routes/audit.tsx
export async function loader({ request }: LoaderFunctionArgs) {
  const url = new URL(request.url);
  const events = await trailbase.search({
    actor: url.searchParams.get('userId') ?? undefined,
  });
  return json({ events });
}

Other Integrations

Next.jsTypeScriptExpress.jsJavaScript / TypeScriptFastifyTypeScript

Ready to Add Audit Logs to Remix?

Join the waitlist for early access. Five-minute setup, no infrastructure changes.

Get Early Access