We have moved the roadmap and the changelog to Github Discussions starting from October 2025.Now you can follow
In Progress features. You can see that your Feature Requests are recorded. You can vote for them and comment your specific use-cases to shape the feature to your needs.- TypeScript SDK (
qstash-js) and Python SDK (qstash-py):- Added flow control management API:
list(),get(key), andreset(key)methods onclient.flowControl(TypeScript) andclient.flow_control(Python). - The
getandlistresponses now include rich metrics:waitListSize,parallelismMax,parallelismCount,rateMax,rateCount,ratePeriod, andratePeriodStart. - See the Flow Control docs for code examples.
- Added flow control management API:
- QStash Server:
GET /v2/flowControlnow supports an optionalsearchquery parameter to filter keys by name.- New
POST /v2/flowControl/:flowControlKey/resetendpoint resets parallelism and rate counters for a key. GET /v2/globalParallelismnow returns{ parallelismMax, parallelismCount }instead of the old{ waitListSize }shape.
- TypeScript SDK (
qstash-js):Labelfeature is added. This will enable our users to label their publishes so that- Logs can be filtered with user given label.
- DLQ can be filtered with user given label.
- Console:
Flat viewon theLogstab is removed. The purpose is to simplify theLogstab. All the information is already available on the default(grouped) view. Let us know if there is something missing via Discord/Support so that we can fill in the gaps.
- Console:
- Added ability to hide/show columns on the Schedules tab.
- Local mode is added to enable our users to use the console with their local development envrionment. See docs for details.
- No new features for QStash this month. We are mostly focused on stability and performance.
- TypeScript SDK (
qstash-js): - Python SDK (
qstash-py): - Console:
- Improved logs tab behavior to prevent collapsing or unnecessary refreshes, increasing usability.
- QStash Server:
- Added support for filtering messages by
FlowControlKey(Console and SDK support in progress). - Applied performance improvements for bulk cancel operations.
- Applied performance improvements for bulk publish operations.
- Fixed an issue where scheduled publishes with queues would reset queue parallelism to 1.
- Added support for updating existing queue parallelisms even when the max queue limit is reached.
- Applied several additional performance optimizations.
- Added support for filtering messages by
- QStash Server:
- Added support for
flow-control period, allowing users to define a period for a given rate—up to 1 week.
Previously, the period was fixed at 1 second.
For example,rate: 3 period: 1dmeans publishes will be throttled to 3 per day. - Applied several performance optimizations.
- Added support for
- Console:
- Added
IN_PROGRESSas a filter option when grouping by message ID, making it easier to query in-flight messages.
See here for an explanation of message states.
- Added
- TypeScript SDK (
qstash-js):- Renamed
eventstologsfor clarity when referring to QStash features.client.events()is now deprecated, andclient.logs()has been introduced. See details here. - For all fixes, see the full changelog here.
- Renamed
- QStash Server:
- Fixed an issue where messages with delayed callbacks were silently failing. Now, such messages are explicitly rejected during insertion.
- Python SDK (
qstash-py): - QStash Server:
- Introduced RateLimit and Parallelism controls to manage the rate and concurrency of message processing. Learn more here.
- Improved connection timeout detection mechanism to enhance scalability.
- Added several new features to better support webhook use cases:
- Python SDK (
qstash-py):- Addressed a few minor bugs. See the full changelog here.
- Local Development Server:
- The local development server is now publicly available. This server allows you to test your Qstash setup locally. Learn more about the local development server here.
- Console:
- Separated the Workflow and QStash consoles for an improved user experience.
- Separated their DLQ messages as well.
- QStash Server:
- The core team focused on RateLimit and Parallelism features. These features are ready on the server and will be announced next month after the documentation and SDKs are completed.
-
TypeScript SDK (
qstash-js):- Added global headers to the client, which are automatically included in every publish request.
- Resolved issues related to the Anthropics and Resend integrations.
- Full changelog, including all fixes, is available here.
-
Python SDK (
qstash-py):- Introduced support for custom
schedule_idvalues. - Enabled passing headers to callbacks using the
Upstash-Callback-Forward-...prefix. - Full changelog, including all fixes, is available here.
- Introduced support for custom
-
Qstash Server:
- Finalized the local development server, now almost ready for public release.
- Improved error reporting by including the field name in cases of invalid input.
- Increased the maximum response body size for batch use cases to 100 MB per REST call.
- Extended event retention to up to 14 days, instead of limiting to the most recent 10,000 events. Learn more on the Pricing page.
- TypeScript SDK (qstash-js):
- Qstash Server:
- Fixed a bug in schedule reporting. The Upstash-Caller-IP header now correctly reports the user’s IP address instead of an internal IP for schedules.
- Validated the scheduleId parameter. The scheduleId must now be alphanumeric or include hyphens, underscores, or periods.
- Added filtering support to bulk message cancellation. Users can now delete messages matching specific filters. See Rest API here.
- Resolved a bug that caused the DLQ Console to become unusable when data was too large.
- Fixed an issue with queues that caused them to stop during temporary network communication problems with the storage layer.
- TypeScript SDK (qstash-js):
- Fixed a bug on qstash-js where we skipped using the next signing key when the current signing key fails to verify the
upstash-signature. Released with qstash-js v2.7.14. - Added resend API. See here. Released with qstash-js v2.7.14.
- Added
schedule to queuesfeature to the qstash-js. See here. Released with qstash-js v2.7.14.
- Fixed a bug on qstash-js where we skipped using the next signing key when the current signing key fails to verify the
- Console:
- Optimized the console by trimming event bodies, reducing resource usage and enabling efficient querying of events with large payloads.
- Qstash Server:
- Began development on a new architecture to deliver faster event processing on the server.
- Added more fields to events in the REST API, including
Timeout,Method,Callback,CallbackHeaders,FailureCallback,FailureCallbackHeaders, andMaxRetries. - Enhanced retry backoff logic by supporting additional headers for retry timing. Along with
Retry-After, Qstash now recognizesX-RateLimit-Reset,X-RateLimit-Reset-Requests, andX-RateLimit-Reset-Tokensas backoff time indicators. See here for more details.
- Improved performance, resulting in reduced latency for average publish times.
- Set the
nbf(not before) claim on Signing Keys to 0. This claim specifies the time before which the JWT must not be processed. Previously, this was incorrectly used, causing validation issues when there were minor clock discrepancies between systems. - Fixed queue name validation. Queue names must now be alphanumeric or include hyphens, underscores, or periods, consistent with other API resources.
- Resolved bugs related to overwriting a schedule.
- Released Upstash Workflow.
- Fixed a bug where paused schedules were mistakenly resumed after a process restart (typically occurring during new version releases).
- Big update on the UI, where all the Rest functinality exposed in the Console.
- Addded order query parameter to /v2/events and /v2/dlq endpoints.
- Added ability to configure callbacks(/failure_callbacks)
- A critical fix for schedule pause and resume Rest APIs where the endpoints were not working at all before the fix.
- Pause and resume for scheduled messages
- Pause and resume for queues
- Bulk cancel messages
- Body and headers on events
- Fixed inaccurate queue lag
- Retry-After support for rate-limited endpoints
- Upstash-Timeout header
- Batch publish messages
- Bulk delete for DLQ
- Added failure callback support to scheduled messages
- Added Upstash-Caller-IP header to outgoing messages. See [https://upstash.com/docs/qstash/howto/receiving] for all headers
- Added Schedule ID to events and messages
- Put last response in DLQ
- DLQ get message
- Pass schedule ID to the header when calling the user’s endpoint
- Added more information to callbacks
- Added Upstash-Failure-Callback