⭐️ Star us on Github! 💰 Collect bounties!

Release v0.12.1

by Max Gurewitz

Dittofeed v0.12.1: Optimizations and Fixes

Hi all, this post announces Dittofeed v0.12.1 which includes some very important optimizations and fixes, along with a few new features.
These include:
  • A new "NotEquals" operator for segments.
  • Substantially improving the memory efficiency of Dittofeed's computed property engine.
  • Adding additional subscription email headers in compliance with the bulk Email sender guidelines.
  • Improve Dittofeed's messaging stats, handling cases where downstream messaging services send conflicting responses.
  • A fix for the namespacing of Resend integration credentials.
If this project interests you we'd really appreciate a star on github!

Release Details

New: "NotEquals" Segment Operator

You can now condition a segment on a user not having a particular trait. You might use this to, for example, exclude paid users from your messaging.

Improved: Query Memory Efficiency

We made several substantial improvements to the memory efficiency of our computed property engine, responsible for computing user property and segment assignments. These improvements were made to two categories of queries.
  • Queries used to re-assign user properties.
  • Queries used to re-compute the incremental state, used to aggregate both user properties and segments.
In our cloud application, these two types of queries showed a high variance in memory consumption across workspaces and time. The optimizations included in v0.12.1 succeeded in an approximate reduction of tp99 memory consumption for the above query types by the following amounts in our workspaces.
  • User property reassignments: ~94%
  • Incremental state inserts: ~76%
Specifically, we learned that ClickHouse’s JOIN operations consume a lot of memory, so we removed several of them!

Improved: Subscription Email Headers

In this release, we've added headers to emails related to assigned subscription groups in compliance with Bulk email sender guidelines. These headers include:
  • $List-Unsubscribe-Post
  • $List-Unsubscribe
  • $List-ID

Improved: Handle Message Stats Edge Case

We discovered an edge case where Sendgrid would apparently fail to send an email due to rate limits but later notify Dittofeed they had delivered the email. This "double counting" leads to invalid statistics. This edge case has been handled in the latest release.

Fix: Namespacing Resend Credentials

Our Resend integration had previously stored its credentials in a database record, which shared a namespace with that of our Sendgrid integration. This has been corrected.

Wrap Up

Release v0.12.1 includes some really important improvements to Dittofeed. If you're self-hosting Dittofeed, make sure to read our upgrade guide.
Until next time!