Skip to main content

FAQ

What databases are supported with Prisma Pulse?

Prisma Pulse currently supports PostgreSQL v12 and higher. We'd love to hear which databases you would like to see supported next.

What database providers are supported with Prisma Pulse?

Any PostgreSQL provider that enables you to enable logical replication is supported:

ProviderStarterProBusinessEnterprise
Railway
Supabase
Neon
AWS RDS

Note that because Neon doesn't provide superuser access to the database, you can't use Neon-hosted databases on the Starter plan.

Does Pulse store my database events?

Pulse persists database events if you enable the Event persistence feature in your project via the Console. This lets you use the stream() API and take advantage of delivery guarantees.

How does persisting events impact pricing?

If you enable Event persistence for your project, Pulse will store the events that happen in your database in the same shape that they're delivered.

Usage of the API is billed according to these factors:

  • Database events: The number of database events captured by Pulse
  • Events reads: The number of database events read and delivered by Pulse via .stream()
  • Event storage: The amount of disk space the stored events consume (in GiB)

Will I get charged for event persistence even if I don't use named streams via name?

Yes. If you enable Event persistence in your project, your database events will be persisted and you will be charged accordingly.

How many Prisma Client instances can subscribe to a database event?

The number of Prisma Client instances that can subscribe to via Prisma Pulse has the following limits:

  • 1000 subscribers for stream()
  • 20 subscribers for subscribe()

How can I increase the throughput for Prisma Pulse?

Throughput for Prisma Pulse will increase as the database event size and the number of concurrent listeners decrease.

While limiting database event size can be tricky, we recommend some best practices, such as:

  • Avoid large fields in your model, such as storing base64 image strings in the database. Instead, consider storing them in popular file storage options such as AWS S3 or Cloudflare.
  • Creating publication slots for specific models rather than all the models in the database. You can learn more about managing your replication slots here.
  • Upgrading to use modern versions of PostgreSQL due to performance optimizations. Modern versions of PostgreSQL (v15+) allow you to create a publication slot for specific fields of a particular model.

Can I use Pulse in my front-end code?

No, Pulse is server-side and subscriptions cannot be initiated directly within client-side code. If you would find this feature valuable, please share your thoughts on the #help-and-questions channel in our community Discord.

To propagate events to the frontend, you can use a WebSocket library like socket.io.

How do I import the Pulse Client extension when using "moduleResolution":"bundler" in my tsconfig.json?

If you're using "moduleResolution": "bundler" in your tsconfig.json file and your Pulse extension version is 1.2.0 or greater, import the Pulse extension based on your runtime:

import { withPulse } from '@prisma/extension-pulse/node';

The Pulse Client extension provides runtime-specific implementations. This approach ensures TypeScript uses the correct type definitions for your target environment and any other multi-entrypoint packages.

Using the correct runtime-specific import prevents the following error:

Cannot find module '@prisma/extension-pulse' or its corresponding type declarations.

Alternatively, you can configure tsconfig.json to set the correct runtime condition:

// tsconfig.json
{
"compilerOptions": {
// ...other options
"target": "es2022",
"moduleResolution": "bundler",
"customConditions": ["node"] // or "workerd" for Cloudflare Workers
}
}

note

We recommend this approach when building a package that uses the Prisma Pulse Client extension as a dependency.

Both methods ensure the correct runtime-specific types are used and resolve module resolution errors.

How can I ensure SSL/TLS encryption works in SSL-only mode with PostgreSQL database and Pulse?

If you encounter issues with SSL/TLS encryption while using Pulse, ensure your database server has a valid SSL certificate and append sslmode=require to your database connection string in your project environment in Prisma Data Platform, for example:

postgres://username:password@hostname:port/database?sslmode=require

This setting will enforce SSL/TLS encryption and accept self-signed certificates.

When should I enable static IP for Prisma Pulse?

Enable static IP for Pulse when your security setup requires IP allowlisting or if you're implementing firewalls that only permit access from trusted IPs, ensuring controlled and secure database connections.

Result of enabling static IP Pulse with a database using IP allowlisting

Learn more on how to enable static IP for Pulse in the Platform Console.

ℹ️ To enable static IP support for Accelerate within your existing or new project environment, your workspace will need to be on our Pro or Business plans. Take a look at the pricing page for more information.

info

What is a static IP?

A static IP address is an IPv4 or an IPv6 address that is fixed. Unlike dynamic IP addresses, which can change unpredictably, traffic from static IP addresses can be easily identified.

What is a static IP

Do the static IP ranges for Accelerate and Pulse differ?

No, if you have static IP enabled for both Accelerate and Pulse using the same database URL, the generated static IP ranges will be the same for both products.

What happens if a Pulse-created publication is manually deleted?

Manually deleting a Pulse-created publication disconnects Pulse, which can lead to a backlog in the Write-Ahead Log (WAL), where unprocessed changes accumulate. This can slow down recovery and replication processes and may also cause storage issues as the backlog grows. While Pulse may attempt to recreate the publication automatically, it's best to avoid manually deleting publications managed by Pulse.

How does Pulse handle Pulse-managed versus self-managed replication slots?

Pulse automatically manages the replication slots it creates. If a Pulse-managed slot is disabled, Pulse will re-enable it. Self-managed slots, created manually by users, are fully controlled by the user, and Pulse will not modify them.

What should I do if I see a database connection issue on my Pulse dashboard?

Check if the publication exists in your database by running the following SQL command:

SELECT * FROM pg_replication_slots;

If the publication is missing and wasn't intentionally deleted, Pulse may recreate it. Contact support if the issue continues.

How do I handle a large WAL backlog?

A large WAL backlog indicates that Pulse is unable to connect to the publication slot. Verify that the publication exists and is active. If it was deleted or disabled, Pulse might recreate it. For ongoing issues, contact support to prevent performance problems.

Can users manually set up replication slots for Prisma Pulse?

Yes, users can manually create and manage replication slots. However, Pulse does not maintain self-managed slots. For optimal performance, we recommend using the slots configured by Pulse during the initial setup.

Can there be problems if I manually configure the walsender_timeout?

The walsender_timeout configuration parameter is a timeout setting that determines the maximum amount of time a WAL sender process (used in replication) will wait for a response from a WAL receiver before disconnecting. It usually defaults to 60 seconds.

Setting a value smaller than 10 seconds may cause connection issues with Pulse.

Can I use a local database with Prisma Pulse during development?

Prisma Pulse requires a database that is accessible via the network to connect and function correctly. This means it won't work with a locally running database on localhost.

If you need to expose a local database for development purposes, you can use a tunneling tool like ngrok or a similar solution to make it accessible over the network. However, keep in mind that this setup is primarily for testing and development purposes and may introduce additional security risks.

For production and best practices, we recommend using a hosted database.