Release v0.14.0
⚠️ Breaking changes
- Record-type consumers removed: Sequin no longer supports legacy record-type consumers (
message_kind = 'record').- Who is affected: Users with consumers configured to use
message_kind = 'record'.- Note: Record-type consumers have been deprecated since June 2025 (
v0.10.1) and hidden in the docs and console since.
- Note: Record-type consumers have been deprecated since June 2025 (
- Migration: Before upgrading, you'll need to re-create all record-type consumers:
- Ensure you're running Sequin version >=
v0.10.1. - Optionally, create a new transform function to ensure the new message shape matches the older message shape you've been using.
- Re-create each record-type consumer as a new consumer. (Sequin will not let you create new record-type consumers as of
v0.10.1, so the new consumers you create will be valid.) - Sequin will send duplicate messages to your sink for a period (one from your legacy consumer, one from your new consumer).
- When ready, remove the legacy consumer(s).
- Ensure you're running Sequin version >=
- If you are affected and don't perform the migration steps, Sequin will not boot on this new version.
- Who is affected: Users with consumers configured to use
These migration steps are abbreviated because we're not sure anyone is still using record-type consumers in production. If you need help, open a GitHub issue.
Verify if you're affected
Via SQL
To verify if you're affected, on your Sequin config db you can run:
SELECT id, name, message_kind
FROM sequin_config.sink_consumers
WHERE message_kind = 'record';
- If this shows results, you have older consumers with
message_kind = 'record'. - If this returns no results, you can safely upgrade without issue.
Via sequin.yaml
- if any consumer has the property
message_kind: record, you are affected - if
message_kinddoes not appear in your config, or if it is set toeventeverywhere, you are not affected
Why this change
We used to have two consumer types which behaved differently. But over time the differences between them shrank. Now, the only meaningful difference is the default message shape.
With transform functions, the difference is fully meaningless: you can now transform Sequin messages to whatever shape you desire.
Removing the branch in consumer types makes Sequin simpler and easier, both for users and maintainers. There's now just one consumer type, and consumers are customized with filters, transforms, etc.