Skip to main content

Known limitations

Below are descriptions of known limitations when using Prisma Pulse. If you are aware of any limitations that are missing, please let us know on the #help-and-questions channel in our community Discord.

Superuser role required for starter plan

Our Starter plan requires a database role with superuser access.

Database events are not persisted

Prisma Pulse does not persist database events and does not provide delivery guarantees regarding ordering or exact-once/at-least-once delivery.

To capture database events, an application must maintain an active connection to Pulse using the  subscribe() method.

It's important to note scenarios where database events may not be delivered:

  1. Inactive subscriptions: If no active subscriptions match the filters of the database event.
  2. Exceeding database event size limits: Database events surpassing predefined size limits.

Prisma Pulse is server-side

Prisma Pulse subscriptions cannot be initiated directly within client-side code.

Limited to Postgres versions 12 or higher

Prisma Pulse is currently supported with Postgres versions 12 or higher. It should work with most Postgres providers that expose Postgres’ native logical replication feature.

Subscription type limitation with custom publication slots

Our advanced onboarding flow enables you to provide a custom publication slot. Should that custom publication slot only contains a subset of your database tables, the Prisma Client generated with the Pulse Client Extension will continue to permit subscriptions to all models based on the entirety of your Prisma Schema definitions.

For example, if you have two models in your schema, the User and Post model. And you opt to create a publication to monitor changes in the User model exclusively:

CREATE PUBLICATION user_publication FOR TABLE users;

To learn more about creating custom publication slots, see managing your publication slot.

Your resulting subscription code would be:

const userSubscription = prisma.user.subscribe()

However, despite the absence of publication coverage, the generated Prisma client permits subscriptions for all models, such as the Post model:

const postSubscription = prisma.post.subscribe()

We are actively working on enhancing type generation for custom publications as part of our ongoing efforts to further refine Prisma Pulse.