releases.shpreview
Inngest/JS SDK

JS SDK

$npx -y @buildinternet/releases show inngest-js-sdk
Mon
Wed
Fri
AprMayJunJulAugSepOctNovDecJanFebMarApr
Less
More
Releases31Avg9/moVersionsinngest@3.49.2 → inngest@4.2.4
Mar 2, 2026

Patch Changes

Feb 26, 2026

Patch Changes

Feb 20, 2026

Patch Changes

Feb 19, 2026

Patch Changes

Feb 17, 2026

Patch Changes

Feb 9, 2026

Patch Changes

Minor Changes

  • #1288 daf858f0 Thanks @jpwilliams! - Add the ability to create Durable Endpoint Proxies, used to redirect to Inngest run results using a user's own domain.

    import { Inngest, step } from "inngest";
    import { endpointAdapter } from "inngest/edge";
    
    const inngest = new Inngest({
      id: "bun-sync-example",
      endpointAdapter: endpointAdapter.withOptions({
        asyncRedirectUrl: "/poll",
      }),
    });
    
    const server = Bun.serve({
      port: 3000,
      routes: {
        "/": inngest.endpoint(async (_req) => {
          const foo = await step.run("example/step", async () => {
            return "Hello from step!";
          });
    
          return new Response(`Step result: ${foo}`);
        }),
    
        // Proxy endpoint - fetches results from Inngest and decrypts if needed
        "/poll": inngest.endpointProxy(),
      },
    });
    
    console.log(`Listening on ${server.hostname}:${server.port}`);
  • #1284 5717c64b Thanks @jpwilliams! - Add a Durable Endpoints Next.js Adapter

    // app/api/my-endpoint/route.ts
    import { Inngest, step } from "inngest";
    import { endpointAdapter } from "inngest/next";
    
    const inngest = new Inngest({
      id: "my-app",
      endpointAdapter,
    });
    
    export const GET = inngest.endpoint(async (req) => {
      const foo = await step.run("my-step", () => ({ foo: "bar" }));
    
      return new Response(`Result: ${JSON.stringify(foo)}`);
    });

Patch Changes

  • #1297 32b59507 Thanks @ptts! - Fix extendProvider() failing to extend existing OTel providers by unwrapping the ProxyTracerProvider returned by trace.getTracerProvider(). Previously, the proxy wrapper hid the underlying provider's addSpanProcessor method, causing "auto" mode to fall through to createProvider() and register duplicate instrumentations.

  • #1292 9c8f5d94 Thanks @jpwilliams! - Fix Durable Endpoints not capturing and obeying step plan forcing, resulting in strange behaviour during parallel flows

  • #1285 9a7b0528 Thanks @jpwilliams! - Handle checkpointing failures more gracefully across async checkpointing and Durable Endpoints

Feb 5, 2026

Minor Changes

  • #1269 8e377c27 Thanks @jpwilliams! - Add isInngestRequest() export for lightly checking if a Request looks like it comes from Inngest

Patch Changes

  • #1269 8e377c27 Thanks @jpwilliams! - Stabilise execution version when switching from sync to async

  • #1269 8e377c27 Thanks @jpwilliams! - Use endpoint adapters for experimental Durable Endpoints instead of wrappers

  • #1250 ad078067 Thanks @Linell! - NonRetriableError && RetryAfterError instanceof checks help resolve issues of errors not working as expected in monorepos.

  • #1168 4371be38 Thanks @Linell! - Add Anthropic Open Telemetry instrumentation so that calls to the Anthropic API are automatically captured.

  • #1269 8e377c27 Thanks @jpwilliams! - Rename http/run.started event created from Durable Endpoints to inngest/http.request

  • #1266 b6361ee1 Thanks @djfarrelly! - Fix issue where middleware transformOutput is not called.

Jan 30, 2026

Minor Changes

  • #1226 dab4607c Thanks @jpwilliams! - Adds the ability to configure the number of bufferedSteps and maxInterval when checkpointing.

    import { inngest } from "./client";
    
    export const helloWorld = inngest.createFunction(
      {
        id: "hello-world",
        checkpointing: { bufferedSteps: Infinity, maxInterval: "5s" },
      },
      { event: "demo/event.sent" },
      async ({ event, step }) => {
        const a = await step.run("a", () => "a");
        const b = await step.run("b", () => "b");
        const c = await step.run("c", () => "c");
    
        return {
          message: `Hello ${event.name}! ${a} ${b} ${c}`,
        };
      },
    );

    If checkpointing: true is used, bufferedSteps defaults to 1 and no maxInterval is set.

  • #1093 ad044e05 Thanks @jpwilliams! - Add realtime client methods to inngest:

    • inngest.realtime.publish()
    • inngest.realtime.getSubscriptionToken()
    • step.realtime.publish()

Patch Changes

  • #1267 093c4f96 Thanks @amh4r! - Fix not properly handling transfer chunked requests

  • #1233 df7d3023 Thanks @Linell! - Lazily load ulid to avoid issues in edge environments.

  • #1257 0eb6b473 Thanks @Linell! - Use native Web Crypto API for HMAC-SHA256 signing with hash.js fallback

    This change improves performance by using the native Web Crypto API when available for request signature verification. Falls back to hash.js for environments without crypto support.

  • #1226 dab4607c Thanks @jpwilliams! - Correctly access parallel step IDs from resumed sync requests

  • #1226 dab4607c Thanks @jpwilliams! - Default to v2 execution version when checkpointing

Jan 16, 2026

Patch Changes

Patch Changes

Jan 9, 2026

Patch Changes

Jan 8, 2026

Minor Changes

Patch Changes

Dec 19, 2025

Patch Changes

Dec 17, 2025

Minor Changes

Nov 11, 2025

Patch Changes

Patch Changes

Nov 6, 2025

Minor Changes

Nov 3, 2025

Patch Changes

  • #1149 9d5d7131 Thanks @Linell! - Refactor otelMiddleware to extendedTracesMiddleware so that its purpose is more easily understood

  • #1150 68e67d80 Thanks @faizanu94! - Fix custom loggers dumbly waiting 1s to flush; they now correctly call flush() if available

Patch Changes

Latest
inngest@4.2.4
Tracking Since
Mar 12, 2025
Last fetched Apr 19, 2026