> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.usebridge.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.usebridge.com/_mcp/server.

*This guide assumes familiarity with the [Hard Check](../hard-check) flow.*

During a Hard Check, resolving a new patient's Policy is often the slowest step.

Optimistic Soft Check runs a [Soft Check](../soft-check) in parallel with Policy resolution.
If the soft check shows there are no providers for the payer and state, the session can return `INELIGIBLE` immediately, without waiting for Policy resolution to finish or fail.

This is disabled by default.

> **Note**
>
> Do not enable this for [Existing Patients](../existing-patients) flows. When a
> `policyId` is provided upfront, the SDK skips Policy creation entirely and
> this setting has no effect.

### React

Pass `optimisticSoftCheck: true` when creating the session:

```typescript
const session = createHardEligibilitySession({
  serviceTypeIds: ["svt_xxx"],
  optimisticSoftCheck: true,
});
```

### TypeScript

Pass `optimisticSoftCheck: true` in the `hardEligibility` call:

```typescript
const result = await bridge.hardEligibility({
  serviceTypeIds: ["svt_xxx"],
  optimisticSoftCheck: true,
  state: "CA",
  patient: { payerId, firstName, lastName, dateOfBirth },
});
```

Omit the flag, or set it to `false`, and the session follows the normal Hard Check flow.

### Behavior

When enabled, on submit Bridge:

1. Creates the Policy as usual
2. In parallel, runs a Provider Eligibility request for each configured Service Type (the same work a Soft Check performs)
3. Races the soft check against Policy resolution

If the soft check completes first and finds no eligible providers, the session moves to `INELIGIBLE`.
In this case, `ineligibilityReason.code` will be `OUT_OF_NETWORK`.

If the soft check finds providers, or if the soft check fails, Bridge falls back to the normal Policy and Service Eligibility flow.

| Outcome                                                  | Session status | Description                                             |
| -------------------------------------------------------- | -------------- | ------------------------------------------------------- |
| Soft check: no providers                                 | `INELIGIBLE`   | `ineligibilityReason.code` is `OUT_OF_NETWORK`          |
| Soft check: providers found                              | Continues      | Waits for Policy, then Service Eligibility as usual     |
| Soft check: API error                                    | Continues      | Normal Hard Check path; error is logged via analytics   |
| Policy: `CONFIRMED`                                      | Continues      | Service Eligibility runs as usual                       |
| Policy: `INVALID` / timeout, soft check had no providers | `INELIGIBLE`   | `OUT_OF_NETWORK` instead of `POLICY_ERROR` or `TIMEOUT` |

### Analytics

When enabled, the SDK emits additional Hard Eligibility events. See [Analytics](../analytics).

---

See the [react-demo](https://github.com/use-bridge/sdk-typescript/blob/main/examples/react-demo/src/app/hard-eligibility/page.tsx) for a working example with a config toggle.