./packages/inngest/README.md
Package detail
inngest
Official SDK for Inngest.com. Inngest is the reliability layer for modern applications. Inngest combines durable execution, events, and queues into a zero-infra platform with built-in observability.
readme
changelog
inngest
3.49.3
Patch Changes
3.49.2
Patch Changes
#1244
f5c565e8Thanks @jpwilliams! - Ensure execution version doesn't slide when going to/from checkpointing#1245
6694bcccThanks @jpwilliams! - Fix async data fetching not happening withoptimizedParallelism: true
3.49.1
Patch Changes
3.49.0
Minor Changes
Patch Changes
#1215
29307e2eThanks @rhino1998! - Fix step.fetch response status code#1222
ecf46a58Thanks @amh4r! - Remove "authentication_succeeded: false" when responding to unsigned requests#1214
326fe06bThanks @djfarrelly! - Fix Connect heartbeater stops too soon during shutdown
3.48.1
Patch Changes
3.48.0
Minor Changes
- #1189
28ffbc89Thanks @jpwilliams! - Bring checkpointing out of experimental
3.47.0
Minor Changes
- #1188
90b14e92Thanks @jpwilliams! - AddexperimentalCheckpointing: { maxRuntime?: number | string | Temporal.DurationLike }to set max runtime duration before re-entry during checkpointing
Patch Changes
#1190
cb286c5eThanks @jpwilliams! - Recover from checkpointing failures by falling back to async mode#1179
9c88fd19Thanks @jpwilliams! - Fix sync execution looking for step in the wrong place
3.46.0
Minor Changes
#1173
75820c72Thanks @jpwilliams! - Add async checkpointing to functions and clients. Only allows checkpointing after every step (maxSteps: 1) currently.Can be enabled on the client:
import { Inngest } from "inngest"; const inngest = new Inngest({ id: "...", experimentalCheckpointing: true, });...or on each function...
inngest.createFunction( { id: "...", experimentalCheckpointing: true, }, { event: "demo/event.sent", }, async ({ event, step }) => { // ... }, );
Patch Changes
- #1156
ef6fd33dThanks @Linell! - Updated OpenTelemetry dependencies to support broader version ranges and adapted code for OTEL 2.x API compatibilty
3.45.1
Patch Changes
#1155
9fa34d12Thanks @mar-inngest! - Connect - Adding support for worker concurrency limits#1160
ab446473Thanks @jpwilliams! - Widenzoddependency range to support v3/v4 across libraries#1165
b5139f04Thanks @jpwilliams! - RemovesetImmediateuse (Node only)
3.45.0
Minor Changes
- #1154
ead9837bThanks @jpwilliams! - Add experimental APIs for supporting synchronous execution
3.44.5
Patch Changes
#1149
9d5d7131Thanks @Linell! - RefactorotelMiddlewaretoextendedTracesMiddlewareso that its purpose is more easily understood#1150
68e67d80Thanks @faizanu94! - Fix custom loggers dumbly waiting 1s to flush; they now correctly callflush()if available
3.44.4
Patch Changes
#1148
9cf36f4dThanks @BrunoScheufler! - Include retry count in the error message if gracefully flushing connect worker progress fails after all attempts#1139
6366f557Thanks @rhino1998! - Add userland ID & index to Ops
3.44.3
Patch Changes
#1133
e7494a67Thanks @jpwilliams! - Export the full runtime enum forConnectionStatefrom"inngest/connect"#1129
7a7c2f5fThanks @de-tester! - Expose types that are used for step result signature
3.44.2
Patch Changes
- #1120
c2b249aaThanks @jpwilliams! - Build targets no specific platform, solving some issues with edge runtimes where the library would internally attempt torequire()somenode:*dependencies
3.44.1
Patch Changes
#1114
c191c93aThanks @jpwilliams! - Fix.fromSchema()-defined schemas not being compatible with@inngest/middleware-validation#1116
aa4be8f1Thanks @jacobheric! - Amended a comment for batch event timeouts
3.44.0
Minor Changes
#1102
6507c0cdThanks @jpwilliams! - AddInngestFunctionReference.Likefor comparing referenced functions across versions#1102
6507c0cdThanks @jpwilliams! - Add Standard Schema toreferenceFunction()
Patch Changes
- #1075
1cf1e525Thanks @Linell! - Add support for theStepFailedopcode, which is used to signify that a function has failed in a permanent way and should not be retried.
3.43.1
Patch Changes
3.43.0
Minor Changes
3.42.3
Patch Changes
- #1087
6557014Thanks @jpwilliams! - Fix bad release command
3.42.2
Patch Changes
- #1085
d081d36Thanks @jpwilliams! - Fix legacy exports when using older module resolution
3.42.1
Patch Changes
#1083
2f24a09Thanks @jpwilliams! - Fix"inngest/connect"not being exported in JSR package#1083
2f24a09Thanks @jpwilliams! - Export some internal packages under"inngest/internals"for@inngest/testuse
3.42.0
Minor Changes
#920
0da1995Thanks @jpwilliams! - AddedisInngest,isInngestFunction, andisInngestMiddleware, runtime helpers to check if a given object is the expected type.import { isInngest, isInngestFunction, isInngestMiddleware } from "inngest"; const objIsInngest = isInngest(someObj); const objIsInngestFunction = isInngestFunction(someObj); const objIsInngestMiddleware = isInngestMiddleware(someObj);#920
0da1995Thanks @jpwilliams! - Add support for Standard Schema when specifying event types.import { EventSchemas } from "inngest"; import { z } from "zod"; const schemas = new EventSchemas().fromSchema({ "demo/event.sent": z.object({ username: z.string(), }), });This entrypoint can be used for both Zod v3 and v4 schemas, as well as a multitude of others.
.fromZod()is still available, which provides some more nuanced use cases but will is deprecated in favor of.fromSchema().
Patch Changes
#920
0da1995Thanks @jpwilliams! - Dropped support for Node 14, 16, and 18, as they are out of LTS#920
0da1995Thanks @jpwilliams! -inngestno longer requires an earlier version of `zod@3.22.0` as a peer dependency#920
0da1995Thanks @jpwilliams! - Now builds separate EJS and CSM packages, which should alleviate some issues attempting to get the current single build to satisfy all conditions.Most notably, pure ESM consumers should now have a significantly easier time using the library.
#920
0da1995Thanks @jpwilliams! - UseSymbol.toStringTagfor*.Liketypes, making them much more reliable across versions.This means you can check for the type of value against Inngset values much more easily:
type IsInngest<T> = T extends Inngest.Like ? true : false; type IsInngestFunction = T extends InngestFunction.Like ? true : false; type IsInngestMiddleware = T extends InngestMiddleware.Like ? true : false;In addition, logged objects that are these types now show the type instead of just
[object Object], e.g.[object Inngest.App].#920
0da1995Thanks @jpwilliams! - Middleware now runs like onion layers. For example{ middleware: [foo, bar] }now runs:foo.transformInputbar.transformInputfoo.beforeMemoizationbar.beforeMemoizationbar.afterMemoizationfoo.afterMemoizationfoo.beforeExecutionbar.beforeExecutionbar.afterExecutionfoo.afterExecutionbar.transformOutputfoo.transformOutputfoo finishedbar finishedfoo beforeResponsebar beforeResponse
This should enable middleware to behave correctly when it has to wrap other middleware.
#920
0da1995Thanks @jpwilliams! - Drop support for TypeScript 4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6 and 5.7
3.41.0
Minor Changes
- #1078
3e5bf652Thanks @tonyhb! - Allow passingpublishoptions tostep.ai.infer(), automatically publishing to realtime channel/topics
3.40.3
Patch Changes
- #1040
8ba5486Thanks @jpwilliams! - SDK appropriately sets"inngest.traceref"for userland otel spans
3.40.2
Patch Changes
#1045
ec2320aThanks @jpwilliams! - Addtypetostep.sendEvent()to differentiate it from otherstep.run()-based steps#1050
ac9748fThanks @lkasinathan! - Introduces support for theifexpression on the batchEvents configuration. This can be used to determine which events are eligible for batching. For more details, check out the batching documentation!
3.40.1
Patch Changes
- #1028
abb0e8eThanks @charlypoly! - Revert "obscure "node:async_hooks" import from bundlers"
3.40.0
Minor Changes
Patch Changes
#1020
bff90ccThanks @thomasballinger! - The optional import of Node.js module "node:async_hooks" is more likely to by dynamic, even after bundling this library. This change makes this feature-detecting dynamic import work correctly when bundled for the Convex JS runtime.
3.39.2
Patch Changes
#1001
fbbb498Thanks @jpwilliams! - Add streaming support for"inngest/express"#1013
2ac3a71Thanks @jacobheric! - Fix errors serialized in thecausefield not being deserialized correctly
3.39.1
Patch Changes
3.39.0
Minor Changes
- #994
a1e8adbThanks @jpwilliams! - Add support for function singletons
3.38.1
Patch Changes
#989
5e3ec3bThanks @jpwilliams! - When executing, use theserve()call's client instead of the function's#997
4120413Thanks @djfarrelly! - Add connect types for convenience and discoverability
3.38.0
Minor Changes
#985
4616919Thanks @jpwilliams! - Add ability for signal waits to supersede othersawait step.waitForSignal("step-id", { signal: "my-signal", timeout: "5m", onConflict: "replace", });
3.37.0
Minor Changes
- #979
3e6a3e5Thanks @jpwilliams! - Addstep.waitForSignal(),step.sendSignal(), andinngest.sendSignal()as experimental new tooling
3.36.0
Minor Changes
- #909
35cf326Thanks @jpwilliams! - Added experimental otel for capturing userland spans
3.35.1
Patch Changes
- #950
0099c56Thanks @BrunoScheufler! - Connect: Reliability improvements
3.35.0
Minor Changes
#912
a641cc2Thanks @jpwilliams! - Adds afetchexport from"inngest"to allow any library that accepts a Fetch API-compatible function to automatically turn any call into a durable step if used within the context of an Inngest Function.By default, if called outside of the context of an Inngest Function (or within an existing step), it will fall back to using the global
fetch, or a fallback of the user's choice.// Basic use import { fetch } from "inngest"; const api = new MyProductApi({ fetch });// With a fallback import { fetch } from "inngest"; const api = new MyProductApi({ fetch: fetch.config({ fallback: myCustomFetchFallback, }), });// Remove the default fallback and error if called outside an Inngest Function import { fetch } from "inngest"; const api = new MyProductApi({ fetch: fetch.config({ fallback: undefined, }), });It's also available within a function as
step.fetch.inngest.createFunction( { id: "my-fn", }, { event: "my-event", }, async ({ step }) => { const api = new MyProductApi({ fetch: step.fetch }); }, );
3.34.5
Patch Changes
#944
54b860aThanks @amh4r! - Use x-inngest-event-id-seed header instead of event idempotency ID#937
c6e9131Thanks @jpwilliams! - Normalize headers in"inngest/lambda"- mocked requests with non-lowercase headers are now handled#945
4506581Thanks @jpwilliams! - BumpresolveAfterPending()microtask shim count to100, reducing parallel index warnings
3.34.4
Patch Changes
- #942
3903aa7Thanks @jpwilliams! - Addinngest/function.cancelledevent to known internal schemas
3.34.3
Patch Changes
- #938
efd658cThanks @anafilipadealmeida! - Update description forbatchSize; pricing plans decide on max limits
3.34.2
Patch Changes
- #934
abae7fcThanks @jpwilliams! - RequirerunIdwhen publishing realtime messages
3.34.1
Patch Changes
- #925
11fd15bThanks @jpwilliams! - ExportfastifyPluginas a named export to resolve CJS<->ESM interop issues
3.34.0
Minor Changes
#919
ebeaaffThanks @jpwilliams! - AdddependencyInjectionMiddleware(), allowing you to easily add data to function inputimport { dependencyInjectionMiddleware } from "inngest"; const prisma = new Prisma(); const inngest = new Inngest({ id: "my-app", middleware: [dependencyInjectionMiddleware({ prisma })], });
Patch Changes
- #922
3374187Thanks @jpwilliams! -Error.causecan now be anyunknownvalue, though we still attempt to recursively expand causes until we hit anunknownvalue
3.33.0
Minor Changes
#918
a305a15Thanks @jpwilliams! - Add support for Temporal APIs.inngest.createFunction( { id: "my-fn", }, { event: "test/hello.world", }, async ({ event, step }) => { // sleep with a `Temporal.Duration` await step.sleep("😴", Temporal.Duration.from({ seconds: 10 })); await step.sleep("😴", Temporal.Duration.from({ minutes: 5 })); await step.sleep("😴", Temporal.Duration.from({ hours: 1 })); // sleepUntil using a `Temporal.Instant` or `Temporal.ZonedDateTime` await step.sleepUntil( "😴", Temporal.Instant.from("2025-03-19T12:00:00Z"), ); await step.sleepUntil( "😴", Temporal.ZonedDateTime.from("2025-03-19T12:00[Europe/London]"), ); // sleepUntil also works with relative time const now = Temporal.Instant.from(event.user.createdAtISO); await step.sleepUntil( "😴", now.add(Temporal.Duration.from({ minutes: 30 })), ); }, );
Patch Changes
#745
ff01cd2Thanks @jpwilliams! - Fix rare body reuse when parsing failure returns frominngest.send()andstep.sendEvent()#916
ab835eeThanks @BrunoScheufler! - - Connect: Allow supplying Inngest env as environment variable#913
b090e27Thanks @jpwilliams! - Export theversionof the package#921
374727fThanks @BrunoScheufler! - connect: Include RunID in acks / sdk response
3.32.9
Patch Changes
3.32.8
Patch Changes
- #910
d184913Thanks @jpwilliams! - FixshouldOptimizeParallelism()error when attempting to serve functions using multiple versions ofinngest
3.32.7
Patch Changes
- #889
5d5bd10Thanks @jpwilliams! - Automatically set all AI models exports in step tooling based on@inngest/aiversion
3.32.6
Patch Changes
#892
cb165d1Thanks @jpwilliams! - Add APIs in preparation for realtime calls#892
cb165d1Thanks @jpwilliams! - AddexecutingStepas an ALS property, allowing async contexts to ascertain whether we are in or out of a step
3.32.5
Patch Changes
- #885
90f7c77Thanks @charlypoly! - chore: bump@inngest/ai
3.32.4
Patch Changes
- #879
94ce222Thanks @charlypoly! - chore(inngest): bump@inngest/ai
3.32.3
Patch Changes
- #877
b9a6e89Thanks @jpwilliams! -getAsyncCtx()now correctly finds context when called within:step.run()calls- Middleware hooks
3.32.2
Patch Changes
#875
80837fdThanks @jpwilliams! - Connect now sets the connection state toCLOSINGwhile handling and flushing any pending messages instead of immediately going toCLOSEDUpdated dependencies [
6e8b258]:
3.32.1
Patch Changes
- #872
5c87495Thanks @jpwilliams! - Upgrade to@inngest/ai@0.0.5for better cross-package compatibility
3.32.0
Minor Changes
- #862
4330563Thanks @jpwilliams! - Allow opting in to optimized parallelism
Patch Changes
#862
4330563Thanks @jpwilliams! - Optimize step data that's been promisified using@inngest/testor middleware
3.31.13
Patch Changes
#865
b2ff76dThanks @jpwilliams! - Ensure support fortypescript@~5.8.0No notable changes have been made, though minor TypeScript versions often affect transpiled outputs.
3.31.12
Patch Changes
#864
e47965eThanks @jpwilliams! - Fix event sending failing in some edge environments due to not findingglobal.cryptoorglobalThis.cryptowhen creating idempotency IDs#856
cd63ce3Thanks @BrunoScheufler! - - Connect: Prefer functions passed throughappsbut fall back to functions registered on the client#858
ce0c5a8Thanks @jpwilliams! - Optimize function memoization
3.31.11
Patch Changes
- #851
7f96793Thanks @BrunoScheufler! - Connect: Allow multi-app connections
3.31.10
Patch Changes
- #852
518a5b8Thanks @charlypoly! - chore: bump@inngest/aito0.0.4
3.31.9
Patch Changes
3.31.8
Patch Changes
- #845
a2aadb1Thanks @BrunoScheufler! - - Connect: Forward tracing and parse user tracing headers
3.31.7
Patch Changes
- #842
4237efdThanks @jpwilliams! - Allow for use ofexactOptionalPropertyTypes: truewhen serving
3.31.6
Patch Changes
- #840
b24fd30Thanks @BrunoScheufler! - Sync: Provide app version in register request
3.31.5
Patch Changes
#837
cb00a46Thanks @BrunoScheufler! - Connect: Rename buildId -> appVersion#838
ece27d7Thanks @amh4r! - Fix missing env for introspection and in-band sync
3.31.4
Patch Changes
- #834
b304e1cThanks @BrunoScheufler! - - Remove connect from inngest client, split out intoinngest/connect
3.31.3
Patch Changes
- #831
c331190Thanks @BrunoScheufler! - - Read signing key from env var for connect
3.31.2
Patch Changes
#824
1d72eaeThanks @BrunoScheufler! - - Handle immediate WebSocket failure when connecting to gateway#822
1136087Thanks @jpwilliams! - Sending events now has retries, backing off over 5 attempts
3.31.1
Patch Changes
#817
446be1bThanks @jpwilliams! -serve()andconnect()now have looser typing forclientandfunctions, resulting in easier use of multipleinngestpackages in a single process#823
f1d2385Thanks @jpwilliams! - Allow wildcard event typing with.fromRecord()The following schema is now valid:
export const schemas = new EventSchemas().fromRecord<{ "app/blog.post.*": | { name: "app/blog.post.created"; data: { postId: string; authorId: string; createdAt: string; }; } | { name: "app/blog.post.published"; data: { postId: string; authorId: string; publishedAt: string; }; }; }>();When creating a function, this allows you to appropriately type narrow the event to pull out the correct data:
inngest.createFunction( { id: "my-fn" }, { event: "app/blog.post.*" }, async ({ event }) => { if (event.name === "app/blog.post.created") { console.log("Blog post created at:", event.data.createdAt); } else if (event.name === "app/blog.post.published") { console.log("Blog post published at:", event.data.publishedAt); } }, );#825
661ed7bThanks @jpwilliams! - If nofunctionsare provided toinngest.connect(), it will now use any functions that have been created with the client insteadUpdated dependencies [
fadd94a]:
3.31.0
Minor Changes
#820
cb02190Thanks @amh4r! - Make INNGEST_ALLOW_IN_BAND_SYNC opt out#813
f42ab05Thanks @BrunoScheufler! - Add initialconnect()support
Patch Changes
#818
c99b05fThanks @BrunoScheufler! - Add reconnection support toconnect()#819
7a5f4a5Thanks @jpwilliams! - Setinngest's ALS in global state to be able access it across versions and package boundaries
3.30.0
Minor Changes
#805
9f4244fThanks @jpwilliams! - You can now add adescriptionwhen creating an Inngest function#804
7459239Thanks @jpwilliams! - AddInngestFunction#absoluteId()to get the absolute ID of anInngestFunction
Patch Changes
#803
008d971Thanks @jpwilliams! -myFn["client"]is now typed#802
32518bfThanks @jpwilliams! - Use@inngest/aito expose AI models, adapters, and typesUpdated dependencies [
32518bf]:
3.29.3
Patch Changes
#798
f426ba6Thanks @jpwilliams! - Fix named functions returningnever[]for their parameters when passed tostep.run()// This now works step.run("", function named() {});
3.29.2
Patch Changes
3.29.1
Patch Changes
- #794
6ffe983Thanks @djfarrelly! - Fix inline example to match v3
3.29.0
Minor Changes
- #788
bf1c0d1Thanks @djfarrelly! - Add vanilla Node.js serve handler
3.28.0
Minor Changes
#776
0dbcc87Thanks @jpwilliams! - Add experimentalgetAsyncCtx(), allowing the retrieval of a run's input (event,step,runId, etc) from the relevant async chain.import { getAsyncCtx } from "inngest/experimental"; const ctx = await getAsyncCtx();
Patch Changes
- #776
0dbcc87Thanks @jpwilliams! - Use@inngest/test@workspace:^internally for testing
3.27.5
Patch Changes
3.27.4
Patch Changes
- #770
3aab141Thanks @jpwilliams! - Widen theAiAdaptertypes to allow for easy overrides
3.27.3
Patch Changes
- #768
af66ad5Thanks @charlypoly! - Addo1-previewando1-minito possible OpenAI models
3.27.2
Patch Changes
- #766
fa74c6aThanks @jpwilliams! - Add missingfinish_reasonto OpenAI output types
3.27.1
Patch Changes
3.27.0
Minor Changes
Patch Changes
#760
efc6c79Thanks @jpwilliams! - Ensure support fortypescript@~5.7.0No notable changes have been made, though minor TypeScript versions often affect transpiled outputs.
3.26.3
Patch Changes
#758
8af4c25Thanks @jpwilliams! - Fix OpenAItoolstypes - not properly scoped#757
36b61f0Thanks @jpwilliams! - Fix false indeterminate function warning#756
7916c06Thanks @jpwilliams! - Expose a type that lists theAiAdapterfor each format
3.26.2
Patch Changes
- #754
2e42438Thanks @jpwilliams! - Move AI providers to instead be adapters and models
3.26.1
Patch Changes
- #752
290ad29Thanks @jpwilliams! - Allow editingstep.ai.infer()
3.26.0
Minor Changes
- #747
871a958Thanks @jacobheric! - Addstep.ai.*()tooling, allowing users to leverage AI workflows within Inngest functions
3.25.1
Patch Changes
#737
aff2a3cThanks @jpwilliams! - Fix response signing being able to fail silently
3.25.0
Minor Changes
3.24.0
Minor Changes
- #685
801946bThanks @jpwilliams! - Add"inngest/nitro"serve handler
Patch Changes
#729
511c2a1Thanks @amh4r! - Fix crash when receiving a PUT without a body#685
801946bThanks @jpwilliams! - Fix imports requiring internal extensions when being consumed by true ESM
3.23.1
Patch Changes
#657
7ca9537Thanks @jpwilliams! - ExposeEventSchemasinInngestinstances#311
a53356aThanks @jpwilliams! - Add streaming capabilities to"inngest/cloudflare"handler
3.23.0
Minor Changes
- #702
4df5a01Thanks @jpwilliams! - Add support for in-band syncing
Patch Changes
- #721
59fa466Thanks @jpwilliams! - Support Next.js 15 in serve handler typing
3.22.13
Patch Changes
#709
3041afeThanks @jpwilliams! - Ensure support for TypeScript 5.6No changes to any runtime/user-facing code has been made, but TS upgrades often alter emitted files, so the package will be bumped for folks to take advantage of any performance/compatibility improvments there.
3.22.12
Patch Changes
- #710
fc3f1e5Thanks @jpwilliams! - Allow access to userland promises when executing for@inngest/test
3.22.11
Patch Changes
- #707
8c4b9ceThanks @goodoldneon! - Fix probe response sig with streaming
3.22.10
Patch Changes
- #705
f229deaThanks @goszczynskip! - Fix required type annotation typescript errors;inngest/typesis now exported with a warning within the module covering its usage
3.22.9
Patch Changes
- #688
58549f3Thanks @jpwilliams! - Expose some internal execution logic to make way for a new@inngest/testpackage
3.22.8
Patch Changes
#697
56ed5c1Thanks @jpwilliams! - Merge given env vars withprocess.envto support partial env shims like Hono in AWS Lambda#696
9169d0eThanks @albertchae! - Fix typos in debounce documentation
3.22.7
Patch Changes
- #687
9f0bdc6Thanks @MonsterDeveloper! - Add exports forJsonErrortype to fix a TypeScript error when using Inngest in projects withcompositesetting intsconfig.
3.22.6
Patch Changes
- #690
6a97e1cThanks @goodoldneon! - Fix 401 on missing sig header during inspection
3.22.5
Patch Changes
#682
2019fe2Thanks @goodoldneon! - Fix empty response body when streaming#684
ae7ea5cThanks @jpwilliams! - Allow passingerrorwhen transforming outputs in middleware
3.22.4
Patch Changes
- #674
4100172Thanks @jpwilliams! - Add trust probes and response signing for syncing validation
3.22.3
Patch Changes
- #677
f4c3dc4Thanks @goodoldneon! - Fix wrong URL when INNGEST_DEV=1
3.22.2
Patch Changes
- #671
4f91d9cThanks @jpwilliams! - Add de(serialization) ofError.cause, meaning nested errors can now be correctly used withStepError
3.22.1
Patch Changes
- #667
7e0fd10Thanks @goodoldneon! - Fix event key hash exists when event key is not set
3.22.0
Minor Changes
- #665
1a4962dThanks @jpwilliams! - Addinngest.setEnvVars(env)to set env vars late on the client
3.21.2
Patch Changes
- #660
4ba0ccbThanks @jpwilliams! - Revert not allowing objectish ([]) values inevent.data
3.21.1
Patch Changes
#655
12df420Thanks @jpwilliams! - Do not allow objectish[]for an event'sdatawhen providing schemasThis helps solve an issue whereby types would be happy but sending an event fails at runtime.
3.21.0
Minor Changes
#651
a527cd3Thanks @jpwilliams! - Add a newonFunctionRun.finishedmiddleware hook, allowing you to hook into a run finishing successfully or failingnew InngestMiddleware({ name: "My Middleware", init() { return { onFunctionRun() { finished({ result }) { // ... }, }, }; }, });#650
db9ed0eThanks @jpwilliams! - Allow specifying anenvwhen sending events via the clientawait inngest.send({ name: "my.event" }, { env: "my-custom-env" });
Patch Changes
#646
0c5865cThanks @jpwilliams! - Fix circularctxtype in middleware for TS <5.1#651
a527cd3Thanks @jpwilliams! - FixbeforeExecution()hook order when all state has been used running beforeafterMemoization()
3.20.0
Minor Changes
- #645
809b4efThanks @BrunoScheufler! - Introduces support for thekeyexpression on the batchEvents configuration. This can be used to batch events by customer. For more details, check out the batching documentation!
3.19.22
Patch Changes
#644
7eb27e4Thanks @jpwilliams! - Loosen typing onmatchoptions and mark as deprecated to remove performance concerns in codebases with a very large number of event types; allmatchfields are now simply typed asstring#641
99f196aThanks @jpwilliams! - Remove incorrect type showing internal events instep.waitForEvent()
3.19.21
Patch Changes
- #622
c041d6fThanks @jpwilliams! - Fix rare theoretical checkpoint hang
3.19.20
Patch Changes
#636
b0e6237Thanks @goodoldneon! - Fix inferred dev mode resulting in contacting the production API when fetching large state#634
ac402efThanks @jpwilliams! - Change an error when function configuration is invalid to a warning instead
3.19.19
Patch Changes
#631
ac6796cThanks @jpwilliams! - Fix exception being thrown fromdebugwhen used with Nitro running on Cloudflare Pages191fe36Thanks @jpwilliams! - Fix failure handlers incorrectly inheriting config options such asbatchEventsandconcurrencyfrom their parent function#630
d4de6d7Thanks @stefanosala! - Fix missing config fields such asconcurrencywhen validating
3.19.18
Patch Changes
#625
3ae2c9bThanks @goodoldneon! - Clearly log invalid function configurations for users, circumventing non-exhaustive typing for extraneous properties in client and function config#628
996c0c5Thanks @goodoldneon! - Removed inspect message
3.19.17
Patch Changes
#623
cc96657Thanks @jpwilliams! - Upgraded TypeScript to 5.5.No change in behaviour or downstream compatibility is expected, but emitted declaration files will still change, so the patch version will bump for all affected packages.
#626
6e41c90Thanks @cohlar! - ExportScheduledTimerEventPayloadfor ESM
3.19.16
Patch Changes
#618
1f0cb29Thanks @MonsterDeveloper! - ExposeInngestFunction#createExecution()as aprotectedmethod to allow custom unit testing.Note that this is an internal API and can change at any time; first-party testing tools will be adde at a later date.
3.19.15
Patch Changes
- #619
7542fc2Thanks @jpwilliams! -"inngest/cloudflare"serve handler now supports both Cloudflare Pages Functions and Cloudflare Workers
3.19.14
Patch Changes
#611
f36c442Thanks @jpwilliams! - Add support for globalNetlify.envobjects when accessing environment variables#614
7970faaThanks @goodoldneon! - Fix attempting to register without a path when using a URL fromINNGEST_DEV#615
baa9e5eThanks @jpwilliams! - Add maximum recursion depth for object path typing forstep.waitForEvent()'smatchandcancelOn
3.19.13
Patch Changes
- #612
2d6e4e1Thanks @goodoldneon! - Fix event key appearing invalid when securely introspected via the dashboard
3.19.12
Patch Changes
- #604
8b41f6bThanks @jpwilliams! - Give allserve()-related peer dependencies a wider range and make them optional, silencing warnings when installinginngest
3.19.11
Patch Changes
#597
cf22183Thanks @jpwilliams! - Fix serve handler'sfetchimplementation incorrectly being marked as custom if no customfetchis given tonew Inngest()#597
cf22183Thanks @jpwilliams! - Reduce incorrect occurences of the following log when a call withfetchfailsA request failed when using a custom fetch implementation; this may be a misconfiguration. Make sure that your fetch client is correctly bound to the global scope.
3.19.10
Patch Changes
- #599
a2e7bd7Thanks @jpwilliams! - Widen@sveltejs/kitpeer dep range to>=1.27.3from^1.27.3
3.19.9
Patch Changes
#595
dd7f5acThanks @jpwilliams! - Set explicit return types for"inngest/fastify"for JSR publishing519d66bThanks @jpwilliams! - Allowed secure introspection of the Inngest endpoint for improved debugging and observability#594
41b02b2Thanks @jpwilliams! - Fix typing for"inngest/lambda"handler being incorrect Proxy type
3.19.8
Patch Changes
#584
ab21a6eThanks @jpwilliams! - Add JSR badge toREADME.md#587
c51c3dfThanks @jpwilliams! - Documented all entrypoints with@modulecomments
3.19.7
Patch Changes
- #582
5d1ad4aThanks @jpwilliams! - Allow in-CI changes when publishing to JSR; mostly a vanity bump
3.19.6
Patch Changes
- #580
d8a2de0Thanks @jpwilliams! - Vanity bump for JSR deploy
3.19.5
Patch Changes
- #576
f1be005Thanks @jpwilliams! - Fix function-level middleware typing being missing; only client-level was providing types
3.19.4
Patch Changes
#571
67ca3aaThanks @jpwilliams! - Fix"inngest/hono"serve handler not handling relative and absolutereq.url#571
67ca3aaThanks @jpwilliams! - Fix"inngest/hono"serve handler not parsing environment variables
3.19.3
Patch Changes
- #573
2b208afThanks @goodoldneon! - More gracefully handle non-JSON sync responses.
3.19.2
Patch Changes
- #569
f79e3e2Thanks @goodoldneon! - Omitidwhen specifying an event forstep.invoke(); idempotency IDs are not used here
3.19.1
Patch Changes
- #561
405733fThanks @jpwilliams! - Optimize memoization of steps, providing a performance improvement of up 48x for very high step counts
3.19.0
Minor Changes
- #539
24f1e7dThanks @prettyirrelevant! - Added framework support for Hono
3.18.1
Patch Changes
#520
0703740Thanks @jpwilliams! - Add selective header forwarding when sending events, allowing context propagation when tracing fanouts 👀#549
f759de1Thanks @maktouch! - Add step name or ID when there’s a NESTING_STEPS error
3.18.0
Minor Changes
- #541
52431a6Thanks @goodoldneon! - Add signing key rotation support
3.17.0
Minor Changes
3.16.2
Patch Changes
#538
d9d57c4Thanks @jpwilliams! - Fix{ name: string; }objects being filtered out ofstep.run()responses when nullable or a union#536
73e04a5Thanks @jpwilliams! - Do not swallow JSON parsing errors when syncing#535
09ef143Thanks @jpwilliams! - Fix sending events sometimes returning generic errors when we can be more specific
3.16.1
Patch Changes
#518
bc494daThanks @jpwilliams! - INN-2861 No longer executestep.sendEvent()inlineTo send an event in a function without making it a step function, use
inngest.send()instead.#519
775fee7Thanks @jpwilliams! - When timing out during parallel recovery, will now prefer logging the step's name instead of its internal hashed ID#517
f8a8f7bThanks @wtachau! - FixRetryAfterErrorcomments; it accepts milliseconds as anumber, not seconds#521
9aa3979Thanks @jpwilliams! - INN-2880 Add warning iffetchfails and is a custom implementation
3.16.0
Minor Changes
- #497
e12c8a6Thanks @jpwilliams! - Add the ability to define multiple triggers when creating a function
3.15.5
Patch Changes
#512
8f03159Thanks @jpwilliams! - Fix union step outputs sometimes being typed asany#512
8f03159Thanks @jpwilliams! - Fix step output typing (Jsonify) removing detail from mapped object types with overrides#512
8f03159Thanks @jpwilliams! - Fix step output typing (Jsonify) omittingunknownand literals
3.15.4
Patch Changes
- #507
882ace7Thanks @jpwilliams! - FixGetFunctionOutputandstep.invoke()typing sometimes resulting in{}
3.15.3
Patch Changes
- #500
f21ebedThanks @jpwilliams! - Add support for `typescript@5.4`
3.15.2
Patch Changes
- #503
f6088e0Thanks @jpwilliams! - FixonSendEvent.transformInput()middleware hooks not running forstep.invoke()payloads
3.15.1
Patch Changes
- #501
0048c94Thanks @jpwilliams! - Fix failures forcomposite: trueerrors
3.15.0
Minor Changes
- #488
3d2429dThanks @jpwilliams! - INN-2754 Add support forINNGEST_DEVand theisDevoption, allowing a devleoper to explicitly set either Cloud or Dev mode
Patch Changes
- #498
7c5b92eThanks @sylwiavargas! - Add keywords to the npm package
3.14.2
Patch Changes
#492
ad67476Thanks @jpwilliams! - Fix delayed environment variables not using event key in"inngest/cloudflare"#489
244b6bdThanks @jpwilliams! - Add generic function invocation event to all event schemas
3.14.1
Patch Changes
- #493
adaa948Thanks @goodoldneon! - Fix registration reusing deployment IDs when reusing connections in serverless or serverful
3.14.0
Minor Changes
- #484
c2b6ec5Thanks @jpwilliams! - Addtimeouttostep.invoke()options
Patch Changes
#480
e1940e4Thanks @jpwilliams! - FixGetEvents<>helper returning internal events by default#479
1b2eaedThanks @jpwilliams! - Fix requiring enum value when using an internal event as a trigger#485
16973c0Thanks @jpwilliams! - Fix API failures being masked at runtime when fetching large step data or event batches fails
3.13.0
Minor Changes
- #475
16f02e9Thanks @jpwilliams! - Add"inngest/bun"serve handler for use withBun.serve()
Patch Changes
#476
4d52f01Thanks @jpwilliams! - Makedata.errorparsing forinngest/function.failedmore resilient#478
9887ac4Thanks @jpwilliams! - Remove sendinghashwhen syncing#474
b3a7b39Thanks @jpwilliams! - Improve UI when showing an unhandledStepError
3.12.0
Minor Changes
- #411
3b35c1cThanks @jpwilliams! - Add handling of per-step errors and returning step names during error cases to better display issues in the UI
Patch Changes
- #469
2f01a27Thanks @dependabot! - Bump vite from 4.5.1 to 4.5.2 for a security fix
3.11.0
Minor Changes
Patch Changes
#463
61562bdThanks @jpwilliams! - Fixdatanot being required during invocation with a schema+reference#462
c449efeThanks @jpwilliams! - Fix not allowing a single-elementconcurrencyoption in function definitions#466
ecde5b6Thanks @jpwilliams! - Fix some out-of-date comments and examples
3.10.0
Minor Changes
#449
a452cf1Thanks @jpwilliams! - AddreferenceFunction(), allowing easier, typed invocation of functions across apps and languages#459
eec41d2Thanks @jpwilliams! - Add newInngest.AnyandInngestFunction.Anytype helpers
Patch Changes
- #460
a225206Thanks @MonsterDeveloper! - Add exports forFinishedEventPayloadandContexttypes to fix a TypeScript error when using Inngest in projects withcompositesetting intsconfig.
3.9.0
Minor Changes
- #453
be6eb2aThanks @jpwilliams! - PassreqArgstoonFunctionRunmiddleware hook to be able to use request values within an Inngest function
3.8.0
Minor Changes
- #441
cb0496aThanks @djfarrelly! - Add new"inngest/astro"serve handler
3.7.4
Patch Changes
#434
cb953eeThanks @jpwilliams! - Fix bad wildcard exportinngest/components/*for ESM/CJS compatibility#440
0fc642dThanks @jpwilliams! - Fix an issue where Sentry's wrapping ofinngest/expresscaused Sentry to throw a runtime error during instantiation
3.7.3
Patch Changes
- #432
ce354f3Thanks @jpwilliams! - Add ability to usez.discriminatedUnionandz.unionin schemas
3.7.2
Patch Changes
#426
49a58d1Thanks @jpwilliams! - Fix internalinngest/*events not being present when usingnew EventSchemas()#427
5cf349cThanks @jpwilliams! - FixEventPayload.idmissing from typing when attempting to send events withinngest.send()orstep.sendEvent()
3.7.1
Patch Changes
- #421
471d11fThanks @jpwilliams! - Fix serverless use ofinngest/nextwithnext@>=13.0.0 <13.5.0failing to return a response, as well asnext@>=13.5.0logging the same error
3.7.0
Minor Changes
- #368
e7e845eThanks @jpwilliams! - Addstep.invoke(), providing the ability to directly invoke a function as a step
Patch Changes
- #415
ea8dc6fThanks @jpwilliams! - Move to Apache License 2.0
3.6.2
Patch Changes
#409
b56a33eThanks @jpwilliams! - Support Remix env vars on Cloudflare Pages viacontext.env#400
428a591Thanks @jpwilliams! - Fix Next.js 13 host being stubborn when relying onreq.urlfor hosts such ashost.docker.internal#408
4066217Thanks @jpwilliams! - ForwardX-Inngest-Server-Kindheaders to assist in preventing some issues with registration handshakes#406
be5544bThanks @jpwilliams! - Fix correctness issues in generated*.d.tsfiles, causing errors for some versions/configurations of TypeScript withskipLibCheck: false
3.6.1
Patch Changes
#401
c77f6d7Thanks @tonyhb! - Remove "Step already exists; automatically indexing" log#395
aebc2c4Thanks @jpwilliams! - FixhasEventKeyinGETrequest always returningtrue
3.6.0
Minor Changes
- #393
f9fca66Thanks @jpwilliams! - Added a new"inngest/koa"serve handler. See the Framework: Koa docs and theframework-koaexample to get started.
3.5.0
Minor Changes
- #299
ac61617Thanks @jpwilliams! - Added a new"inngest/sveltekit"serve handler. See the Framework: Sveltekit docs and theframework-sveltekitexample to get started.
3.4.4
Patch Changes
- #388
b4432d8Thanks @jpwilliams! - Removed "No signing key provided" warning during local development
3.4.3
Patch Changes
- #385
cdf02a3Thanks @MonsterDeveloper! - Add exports forInngestFunction,FunctionTrigger, andHandlertypes to fix a TypeScript error when using Inngest in projects withcompositesetting intsconfig.
3.4.2
Patch Changes
#378
b83f925Thanks @jpwilliams! - AddINNGEST_API_BASE_URLandINNGEST_EVENT_API_BASE_URL, used for internal testing#382
0002afaThanks @tonyhb! - Remove verbose event keys warning
3.4.1
Patch Changes
#371
d45bfbdThanks @jpwilliams! - RemoveJsonifyObject<>wrapper from step output - it's now clearer to see the actual type of a step's result#375
e19f9b4Thanks @jpwilliams! - Fix failing to parseBigIntduring step/function result serialization; it is now correctly typed and returned asnever#374
dcafc2bThanks @jpwilliams! - Fixed an issue where an error log wasn't shown if execution result parsing failed, such as in the case of serialization failures
3.4.0
Minor Changes
Patch Changes
- #369
e1046cdThanks @jpwilliams! - ChangeNo request versionlog from warn to debug
3.3.0
Minor Changes
- #329
2837296Thanks @jpwilliams! - AddedGetStepTools<typeof inngest>andGetFunctionInput<typeof inngest>helper types to aid in building function factories. See TypeScript Helpers - Inngest Documentation for more information.
3.2.1
Patch Changes
- #360
260dd75Thanks @jpwilliams! - Inngest errors now appear more succintly in UIs, free of ANSI codes and verbose information
3.2.0
Minor Changes
- #362
6bc91d0Thanks @jpwilliams! - Add ability to manage function run priorities using a newpriority.runconfig option - see the Priority documentation for more information.
Patch Changes
#357
9140b66Thanks @jpwilliams! - Stop "Failed to send event" errors occuring in local development when missing an event key#359
7f70546Thanks @goodoldneon! - Internally, steps now return adisplayNameto be used within Inngest's UIs
3.1.1
Patch Changes
#354
e2f68d6Thanks @jpwilliams! - Fix path matching types getting lost in certain recursive event types#350
933b998Thanks @jpwilliams! - Separate Zod typing from library, enabling minor-agnostic versioning support
3.1.0
Minor Changes
- #338
ef35feaThanks @jpwilliams! - Adddebounceconfiguration option. See Debounce documentation for more information.
Patch Changes
- #337
672c428Thanks @jpwilliams! - EnsurefromRecord<>()doesn't accept clashing names
3.0.2
Patch Changes
#348
ebb245fThanks @jpwilliams! - Fix"inngest/next"types not inferring fromdefineProperties#346
c14bbb3Thanks @jpwilliams! - FixwaitForEventpotentially dropping some fields when being parsed
3.0.1
Patch Changes
#339
bf8b004Thanks @jpwilliams! - Bumpnextto13; keep up-to-date with their only supported major to support typing#343
77c7f66Thanks @tonyhb! - Allow steps to execute with null data
3.0.0
Major Changes
#294
f2f4856Thanks @jpwilliams! - Clients and functions now require IDsWhen instantiating a client using
new Inngest()or creating a function viainngest.createFunction(), it's now required to pass anidinstead of aname.Previously only
namewas required, but this implied that the value was safe to change. Internally, we used this name to produce an ID which was used during deployments and executions.See the v3 migration guide.
#294
f2f4856Thanks @jpwilliams! - Refactored available environment variables and configurationThe arrangement of environment variables available has shifted a lot over the course of v2, so in v3 we've streamlined what's available and how they're used.
See the v3 migration guide.
#294
f2f4856Thanks @jpwilliams! - In v2, providing afnsoption when creating a function -- an object of functions -- would wrap those passed functions instep.run(), meaning you can run code inside your function without thestep.run()boilerplate.This wasn't a very well advertised feature and had some drawbacks, so we're instead replacing it with some optional middleware.
See the v3 migration guide.
#294
f2f4856Thanks @jpwilliams! - Serving functions could become a bit unwieldy with the format we had, so we've slightly altered how you serve your functions to ensure proper discoverability of options and aid in readability when revisiting the code.See the v3 migration guide.
#294
f2f4856Thanks @jpwilliams! - Shorthand function creation removedinngest.createFunction()can no longer take a string as the first or second arguments; an object is now required to aid in the discoverability of options and configuration.See the v3 migration guide.
#294
f2f4856Thanks @jpwilliams! - All steps require IDsWhen using any step.* tool, an ID is now required to ensure that determinism across changes to a function is easier to reason about for the user and the underlying engine.
The addition of these IDs allows you to deploy hotfixes and logic changes to long-running functions without fear of errors, failures, or panics. Beforehand, any changes to a function resulted in an irrecoverable error if step definitions changed. With this, changes to a function are smartly applied by default.
See the v3 migration guide.
Patch Changes
- #333
67bda66Thanks @goodoldneon! - (Internal) Fix missing name onNonRetriableError, ensuring it's correctly (de)serialized
2.7.2
Patch Changes
- #323
3b2efa6Thanks @jpwilliams! - Better error handling for.sendEvent()errors from Inngest API, ensuring easier debugging when failing to send events - partial of #256
2.7.1
Patch Changes
- #325
b8858c9Thanks @jpwilliams! - Hotfix: EnsureProxyLogger(and some other used classes/types) is correctly exported from"inngest"
2.7.0
Minor Changes
#313
32c34b3Thanks @jpwilliams! - Add ability to declare and send events without payloads, e.g.inngest.send({ name: "my.event" });#310
696c411Thanks @michealroberts! - Added h3 framework server handler
Patch Changes
- #319
71b7d26Thanks @jpwilliams! - Add ESM exports toinngestpackage to avoid extension imports
2.6.1
Patch Changes
- #312
ca6d6aaThanks @mmachatschek! - chore: update cross-fetch to ^4.0.0 package
2.6.0
Minor Changes
#202
21053edThanks @djfarrelly! - Add support for Fastify, either via a custom.route()or using a Fastify pluginimport Fastify from "fastify"; import inngestFastify, { serve } from "inngest/fastify"; import { functions, inngest } from "./inngest"; const fastify = Fastify({ logger: true, }); // The lead maintainer of Fastify recommends using this as a plugin: fastify.register(inngestFastify, { client: inngest, functions, options: {}, }); // We do also export `serve()` if you want to use it directly, though. fastify.route({ method: ["GET", "POST", "PUT"], handler: serve(inngest, functions), url: "/api/inngest", }); fastify.listen({ port: 3000 }, function (err, address) { if (err) { fastify.log.error(err); process.exit(1); } });#298
4984aa8Thanks [@z.object({](https://github.com/z.object({), [@z.object({](https://github.com/z.object({)! - Add the ability to provide Zod schemas usingz.object()instead of requiring a record format// Previously we supported this new EventSchemas().fromZod({ "test.event": { data: z.object({ a: z.string() }), b: z.number() }), }, }); // Now we ALSO support this new EventSchemas().fromZod([ z.object({ name: z.literal("test.event"), data: z.object({ a: z.string() }), b: z.number() }), }), ]);This should help if you wish to declare your events piece-by-piece instead of in a single object.
const firstEvent = z.object({ name: z.literal("app/user.created"), data: z.object({ id: z.string() }), }); const secondEvent = z.object({ name: z.literal("shop/product.deleted"), data: z.object({ id: z.string() }), }); new EventSchemas().fromZod([firstEvent, secondEvent]);You can use the exported
LiteralZodEventSchematype to provide some autocomplete when writing your events, too.const ShopProductOrdered = z.object({ name: z.literal("shop/product.ordered"), data: z.object({ productId: z.string() }), }) satisfies LiteralZodEventSchema;
2.5.2
Patch Changes
#305
10220afThanks @jpwilliams! - Always attempt accessing the dev server if theINNGEST_DEVSERVER_URLenvironment variable is specifiedThis helps some situations where a user may want to run integration tests against a deployed or otherwise production build, using the Inngest Dev Server to do so.
2.5.1
Patch Changes
- #302
5b2bfacThanks @jpwilliams! - Removepreinstallscript frominngestpackage causing errors when consuming the package
2.5.0
Minor Changes
#289
b04d904Thanks @jpwilliams! - Addattemptnumber to SDK function contextinngest.createFunction( { name: "Example Function" }, { event: "app/user.created" }, async ({ attempt }) => { // ... }, );
Patch Changes
#293
424bfb2Thanks @jpwilliams! - Addkeytoconcurrencytypes#290
b62c88bThanks @jpwilliams! - Support Vercel's Express (@vercel/node) in"inngest/express"serve handler#286
5587a15Thanks @jpwilliams! - Updated contribution guidelines
2.4.1
Patch Changes
- f2ffc8b: Fix
cross-fetchimport issue in testing environemtnst. API package also uses customfetchpassed via arguments. - acfa07c: Throw error when using
inngest/expressand not using a body parser - b535e1e: Ensure users are not allowed to configure batching with cancellation or rate limiting, as these features do not yet function together
- c271eb1: Add
x-inngest-no-retry: trueheader when non-retriable for internal executor changes - 2a93f0b: Fix
onFailurefunctions missing types applied by middleware
2.4.0
Minor Changes
- 6cb6719: Allow filtering of events within triggers
Patch Changes
- 55c889c: Expose raw error message if status is unknown
2.3.0
Minor Changes
- 7792a62: Add support for streaming to
inngest/remix
2.2.1
Patch Changes
- 1120e29: Genercize mixed async error; the same symptom can be caused by a few different errors
2.2.0
Minor Changes
d0a8976: Add support for batching events.
Introduces a new configuration to function configurations.
batchEvents?: { maxSize: 100, timeout: "5s" }This will take Inngest start execution when one of the following conditions are met.
- The batch is full
- Time is up
When the SDK gets invoked, the list of events will be available via a newly exported field
events.createFunction( { name: "my func", batchEvents: { maxSize: 100, timeout: "5s" } }, { event: "my/event" }, async ({ event, events, step }) => { // events is accessible with the list of events // event will still be a single event object, which will be the // 1st event of the list. const result = step.run("do something with events", () => { return events.map(() => doSomething()); }); return { success: true, result }; }, );
Patch Changes
- 591f73d: Set
tsfield on sent events if undefined - 1cbf65e: Alter registration response to include
modifiedfor deployment deduplication
2.1.0
Minor Changes
- b74477f: Add optional
idproperty to all step tooling, allowing users to override state recovery
2.0.2
Patch Changes
- 023d761: Harden error serialization to ensure uncaught exceptions don't slip through during function runs
2.0.1
Patch Changes
- 3ef0b36: Add better visibility into serve handlers issues
- 4226b85: Fix middleware
transformOutputhook not running if an asynchronous, non-step function's body threw - cc3929d: Fix a very rare bug in which
step.sleep()hashing could produce different IDs across different executions
2.0.0
Major Changes
- 4f29f5c: Removed
toolsparameter (breaking). This was marked as@deprecatedin v1, but is being fully removed in v2. Usestepinstead. See the v2 migration guide. - 4f29f5c: Renamed
throttletorateLimit. See the v2 migration guide. - 4f29f5c: Added the ability to provide middleware when defining Inngest clients and functions, hooking into a client's lifecycle to add custom functionality like error monitoring, data transformations, and more. See Advanced: Middleware - Inngest Documentation.
- 4f29f5c: Removed ability to
serve()without a client (breaking). See the v2 migration guide. - 4f29f5c: Better event schema definitions (breaking), providing an extensible metho of creating and maintaining event payloads with a variety of native tools and third-party libraries. See Defining Event Payload Types - Inngest Documentation.
- 4f29f5c: Removed some overloads of
inngest.send()to provide a better TS experience when sending events (breaking). See the v2 migration guide.
Minor Changes
- 4f29f5c: Added a
loggerto Inngest functions in addition to allowing users to provide a custom logger to reliably push logs to external services and handle flushing on serverless environments. See Logging in Inngest - Inngest Documentation. - 4f29f5c: Add
GetEvents<>export which can be used to pull final event types from an Inngest client. See Defining Event Payload Types. - 4f29f5c: Add ability to provide
concurrency: { limit: number }in function config, ready for more config options.
Patch Changes
- b62cd6d: Update landing page vite dependency to v3.2.7
1.9.4
Patch Changes
- 7d025d6: Fix
NonRetriableErrornot working when thrown from within a step
1.9.3
Patch Changes
- 64c397e: Handle circular JSON errors while stringifying across the SDK
1.9.2
Patch Changes
- 71b1a17: Fix Vercel platform check to support local dev while using
vercel env pull
1.9.1
Patch Changes
- 49ddbb5: Add platform deploy checks
1.9.0
Minor Changes
- 48d94a2: Allow user provided logger to be used within functions (experimental)
1.8.5
Patch Changes
- 34f9ee8: INN-1253 Show actionable error when steps are nested
1.8.4
Patch Changes
- aaac9e5: When recommending event key fixes, recommend setting env vars first
1.8.3
Patch Changes
- c09261b: INN-1348 Throw an actionable error when we detect mixed async logic
- 98c15b3: INN-1347 Fix deadlock when an async function finds a step
1.8.2
Patch Changes
- 5462bdd: Ensure Inngest client's env object is used within serve()
- 0b0c0ad: Add consistent type imports for slightly better tree-shaking
1.8.1
Patch Changes
- 5573be3: INN-1270 Create an internal handler to enforce more actionable user-facing errors
1.8.0
Minor Changes
- 65966f5: INN-1087 Add edge streaming support to
"inngest/next"serve handler
Patch Changes
- 164fd5c: INN-1266 Fix bad link for fetching Inngest signing key on landing page
1.7.1
Patch Changes
- 34b6d39: INN-1240 Add
queueMicrotask()fallback for restrictive environments
1.7.0
Minor Changes
- c999896: INN-1029 Add
envoption toInngestclient to explicitly push to a particular Inngest env
Patch Changes
- 131727a: Adjust README to have a slightly clearer intro
- c999896: INN-1186 Send
x-inngest-platformandx-inngest-frameworkheaders during registration - 0728308: Expose run ID to function executions for user-managed logging and tracing
- 3ac579f: Warn users when some functions appear undefined when serving
- eb1ea34: Allow signing keys with multiple prefixes, as required for branch environment support
1.6.1
Patch Changes
a840e67: INN-1126 Execute a step early if it's the only pending item during a discovery
This reduces the number of "Function steps" used for simple step functions.
1.6.0
Minor Changes
- c7d1bee: Add
onFailurehandler tocreateFunctionoptions, allowing you to specify a new function to run when the initial handler fails
1.5.4
Patch Changes
- 071fe89: INN-1054 Ensure serve handlers return
anyinstead ofunknownso that they don't needlessly conflict with user types
1.5.3
Patch Changes
906aca5: INN-1009 Show warnings when using the package with TS versions
<4.7.2and Node versions<14This includes tests to assert we appropriately support these versions now and in the future.
ca7d79e: Detect env vars from Node and Deno in serve handlers (INN-1012)
1.5.2
Patch Changes
- 2d6e0b5: Fix infinite type instantiation using a looping type in serve handlers (thanks for the report, @grempe)
1.5.1
Patch Changes
- 0836145: Refactor
InngestCommHandlerto better detect env and reduce duplication (INN-997)
1.5.0
Minor Changes
- ac81320: Add
"inngest/lambda"serve handler for AWS Lambda environments - f73a346: Add
"inngest/edge"serve handler for use in v8 edge runtimes
1.4.1
Patch Changes
43162d3: The "Connected to
inngest dev" pill at the top of the SDK's landing page now links to the connected dev server.Thanks, @khill-fbmc!

56b8e9a: Removes many
anytypes from the internal and public APIs.Affects the public API, so will therefore be a package bump, but shouldn't affect any expected areas of use.
a45601e: Update dependency typescript to v5
Including a bump for this as it does seem to fix some complex inference for future features.
1.4.0
Minor Changes
- ebb8740: Add ability to control the concurrency of a specific function via the
concurrencyoption when creating an Inngest function - e61cf0f: Add
cancelOnoption when creating a function, allowing you cancel execution of a function based on incoming events.
1.3.5
Patch Changes
a4f8ae8: Fixes a typing bug where both
eventandcroncould be specified as a trigger at the same time.Multiple event triggers will be coming in a later update, but not in this format.
d6a8329: Ensure signatures are not validated during development
- 950a2bc: Ensure
inngest.send()andstep.sendEvent()can be given an empty array without error