Today marks the end of our first Launch Week. We shipped numerous features that significantly improve Inngest DX such as Replay, bulk cancellation, cross-language support, per-step error handling in our SDKs, and two new SDK betas (Python and Go).
These were much-requested features from our Community. We hear your feedback and ideas, and they inform our roadmap. Thank you 💜
But that's not all. This week, we also launched a partnership with Clerk to make auth workflows easier, and Svix to simplify Inngest integrations for webhook providers.
The response of our Community was thrilling. Beyond the interest on Twitter, LinkedIn, and Discord, our post on how we built the Inngest queuing system stayed at the top of the Hacker News for a while 🔥 The discussion raised a few interesting points, too.
Let’s look at each of the major milestones we achieved this week.
Release: Inngest Replay
Inngest Replay is the easiest way to recover from incidents with just a couple of clicks. Within our team, we also call it the death of the dead-letter queue ☠️
With Replay, you can easily query for all jobs between two timestamps and filter only jobs that failed (or were canceled). It is as simple as selecting a function, the time range, and filter by the result of the job and clicking a button – no scripts needed!
➡️ Read "Inngest Replay" blog post.
Deep Dive: Building Inngest Queueing System
In this blog post Tony Holdstock-Brown, our CEO, explains what challenges we faced when building our own distributed queuing system, why we needed to build it, and how it works.
The post was met with a lot of interest online. You can read (and contribute to) its HackerNews discussion here.
➡️ Read "How we built a fair multi-tenant queuing system" blog post.
Release: Bulk cancellation
Bulk cancellation helps you prune your backlog in a self-serve way.
The API gives you a fine-grained control over your queue backlog, as opposed to the naive purge-all functionality provided by most clouds.
The API comes with selective cancellation. You can define an expression directly on the event data of the function run. You can also specify date range for cancellation. Any function started within the range will be automatically cancelled without any work needed from you. It is immediate -- it only takes 🔥 milliseconds 🔥 to run.
➡️ Read "Bulk Cancellation" blog post.
Release: Cross-language support
We have officially released our Python and Go SDK betas with enough feature compatibility to be ready for most use cases. We also published our SDK spec so anyone could learn more about how it works, or even contribute.
This is another step towards becoming a truly language-agnostic reliability layer for everyone. Two months ago we added
step.invoke(), which allows you to invoke any Inngest function from within another function. With these two new SDKs, you can now use Inngest in multi-language systems -- if you're curious to see an example, check this Node and Python app.
➡️ Read "Cross-Language support with new SDKs" blog post.
Release: Zero-downtime cloud migrations
We made it easier to migrate across clouds with zero downtime, and minimal effort. Inngest is agnostic to where your code is running, so after you deploy your code to a new cloud, all you need to do to complete the migration is to sync your app with a new URL. As your code should have the same app ID and function IDs, all of your functions will pick up where they left off without a hiccup.
➡️ Read "Migrating Across Clouds with zero Downtime" blog post.
Release: Inngest Apps
Inngest Apps map directly to your projects or services. When you serve your functions using our serve API handler, you are hosting a new Inngest App. With Inngest Apps, your dashboard reflects your code organization better.
➡️ Read Inngest App guide in our docs.
Integration with Clerk
Clerk is the easiest way to add authentication and user management. When a new user is created, you may want to: sync user data to your database, kick off an account provisioning workflow, start a trial in Stripe, or send a welcome email. This is made way easier with Inngest and wow connecting your Clerk account with Inngest is possible in just a couple of clicks!
➡️ Read "Building Auth Workflows with Clerk Integration" blog post.
Integration with Svix
Svix is the easiest way for engineering teams to reliably provide webhooks in their products. With Svix's new Inngest transformation template, any webhook provider can easily allow their users to set up their Inngest account to start receiving webhook events in seconds.
➡️ Read "Svix Integration" blog post.
Enhancement: Improved error handling in Inngest SDKs
You can now use language-native features like try/catch to gracefully handler errors that occur across one or more steps. This much-requested enhancement brings more control over errors and failures. It provides a way to handle rollbacks, cleanups, and workflows that take different paths based on an error type.
➡️ Read "Improved Error Handling" blog post.
Edge Event API Beta
We are introducing a closed beta for our new Edge Event API Beta to reduce latency for users worldwide by implementing regional replication, caching, and payload validation, targeting response times below 100ms. Early testing reveals substantial improvements, with response times reduced by 46-85% in various regions.
To try the new Event API upvote the project directly on our roadmap with your Inngest account email and share any context on your application that you’d like to start using it for. Additionally, if you just want to be notified when the feature comes out of beta for wide usage, add your email here.
➡️ Read "Edge Event API Beta: Lower latency from everywhere" blog post.
The Launch Week is over but we are not stopping here! We already have next announcements and releases lined up, starting next week.
If you're curious what we are working on, please check (and comment on!) our public roadmap.
We wouldn’t be where we are now without you, your questions, feedback, and feature requests. Join our Discord and help shape the future of Inngest 💜
Help shape the future of Inngest
Ask questions, give feedback, and share feature requestsJoin our Discord!