Working with Prisma Pulse

1. Setting Up Prisma Pulse

npm install @prisma/extension-pulse
RequirementDetail
PG logical replicationwal_level=logical
PDP projectEnable Pulse + API key

2. Subscribing to Database Changes

import { PrismaClient } from "@prisma/client";
import { withPulse } from "@prisma/extension-pulse";
const prisma = new PrismaClient().$extends(withPulse({ apiKey: process.env.PULSE_API_KEY! }));

const sub = await prisma.user.stream();
for await (const event of sub) console.log(event.action, event.created);
ActionDetail
createevent.created
updateevent.before / after
deleteevent.deleted

3. Filtering Change Events

await prisma.user.stream({
  create: { after: { role: "ADMIN" } }
});
FilterDetail
action-levelcreate / update / delete
field matchServer-side filter

4. Implementing Real-Time Updates

Use CasePattern
Live dashboardWebSocket → client
NotificationsPush to subscribers
Cache invalidationTrigger Accelerate purge

5. Handling Event Streams

ConceptDetail
Async iteratorfor await (const evt of sub)
stop()Close subscription
BackpressureProcess events FIFO

6. Implementing Webhooks

PatternDetail
BridgePulse listener → HTTP POST
SignHMAC payload for integrity
RetryOutbox + DLQ on failure

7. Managing Subscriptions

OperationDetail
Createper-model stream()
ResumeUse name option for durable resume
Stopsub.stop()

8. Filtering by Model Operations

OptionDetail
createOnly inserts
updateUpdates with before/after
deleteDeletes only

9. Using Pulse with Events

IntegrationDetail
Kafka bridgePublish change events as topic
EventEmitterApp-level pub/sub
tRPC subscriptionsForward to clients

10. Monitoring Pulse Activity

SourceDetail
PDP dashboardEvents/sec, lag
App logsEvent volume per topic
Replication lagDB-side metric