---
name: bijection-action-retrier
description: "Evaluate and integrate the Action Retrier component with Bijection."
---

# Action Retrier

Idempotent action retries

- Package: @bijectionhq/action-retrier
- Category: Durable Functions
- Status: Preview
- License: Apache-2.0
- Bijection source (repository access required): https://github.com/bijectionhq/action-retrier/tree/22d06795ce7788dc4f8bde1721171c27e5b285a8
- Upstream: https://github.com/convex/action-retrier/tree/a261219a478e7c62e7d43f5a548ef243b8f243e3
- Documentation: https://docs.bijection.com/components/using
- Directory: https://bijection.com/components/action-retrier

## Get the source

Bijection repository access is required. Request access at https://bijection.com/contact.

```sh
git clone https://github.com/bijectionhq/action-retrier.git
cd action-retrier
git checkout 22d06795ce7788dc4f8bde1721171c27e5b285a8
```

## Before using this component

Read the package README at the recorded revision for setup, dependencies, and API examples. Upstream documentation describes the original package and may differ from the Bijection adaptation. This is a source candidate for evaluation. Catalog inclusion does not establish npm availability or runtime qualification. Check compatibility with your SDK and deployment before adoption. External providers run their own compute.

## Integration workflow

1. Read the source README and package manifest at the recorded revision.
2. Confirm the required SDK, dependency availability, and runtime compatibility.
3. Follow the component's documented setup and configuration. Never invent an npm install command from a catalog package name.
4. Keep credentials in the project's existing secret store.
5. Follow the project's execution rules for verification and report what was actually checked.

## Original upstream skill

The following guidance describes @convex-dev/action-retrier. Its installation commands and APIs refer to the upstream package. Evaluate compatibility with the Bijection source separately.


> Agents: read this skill fully before writing code that uses Action Retrier. Follow the installation and configuration steps exactly.

# Action Retrier

## Instructions

The Action Retrier component automatically retries failed Convex actions with exponential backoff, making external API calls and network operations more reliable. It handles transient failures by running your action up to a configurable number of times before giving up. You get async tracking of run status, cancellation support, and optional completion callbacks.

### Installation

```bash
npm install @convex-dev/action-retrier
```

Current npm version: `@convex-dev/action-retrier@0.3.1`

## Use cases

- **Third-party API integration** - Retry payment processing, email sending, or webhook calls that fail due to network timeouts or service unavailability
- **External service dependencies** - Handle flaky connections to databases, file storage, or authentication providers that occasionally return 5xx errors
- **Distributed system resilience** - Automatically recover from transient network partitions or temporary service degradation without manual intervention
- **Batch processing workflows** - Ensure data synchronization tasks complete successfully even when individual operations encounter intermittent failures
- **Critical business operations** - Add reliability guarantees to actions that must eventually succeed, like order fulfillment or user onboarding steps

## How it works

Install the component into your Convex app configuration, then create an `ActionRetrier` instance pointing to the component. Call `retrier.run(ctx, actionReference, args)` from mutations or actions to execute your target action with automatic retry logic.

The component uses exponential backoff with configurable parameters: `initialBackoffMs` for the first retry delay, `base` for the backoff multiplier, and `maxFailures` for retry limits. Failed runs sleep progressively longer between attempts until success or exhaustion.

Run tracking happens through a returned `RunId` that lets you query status with `retrier.status()`, cancel execution with `retrier.cancel()`, or clean up completed runs with `retrier.cleanup()`. Optional `onComplete` mutation callbacks execute exactly once when runs finish, regardless of success or failure.

## When NOT to use

- When a simpler built-in solution exists for your specific use case
- If you are not using Convex as your backend
- When the functionality provided by Action Retrier is not needed

## Resources

- [npm package](https://www.npmjs.com/package/%40convex-dev%2Faction-retrier)
- [GitHub repository](https://github.com/get-convex/action-retrier)
- [Convex Components Directory](https://www.convex.dev/components/retrier)
- [Convex documentation](https://docs.convex.dev)