> ## Documentation Index
> Fetch the complete documentation index at: https://docs.elementlabs.net/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK version requirements

> How a product states the SDK versions it accepts, and what it reports on a mismatch.

Every product needs the `element_sdk` resource, and every product accepts only a range of SDK
versions. This page describes how that requirement is expressed and exactly what happens when the
installed SDK does not meet it.

## Contract

A product declares one requirement against `element_sdk`: an operator and a version, recorded in the
resource itself. You can read it in the product's `fxmanifest.lua`:

```lua theme={null}
dependency_version "element_sdk:^0.1.0-alpha.3"
```

The requirement is checked when the product starts. If it is not met, the product stops before it
registers anything.

## Inputs

Two values are compared: the version of the installed `element_sdk` resource, and the requirement
declared by the product.

| Operator            | Accepts                                                                                                                  |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `^1.2.0`            | Any version from `1.2.0` up to, but not including, `2.0.0`. Below `1.0.0` it is stricter: `^0.1.0` accepts `0.1.x` only. |
| `~1.2.0`            | Any version from `1.2.0` up to, but not including, `1.3.0`.                                                              |
| `>=1.2.0`           | That version or any later one.                                                                                           |
| `>1.2.0`            | Any version later than that one.                                                                                         |
| `<=1.2.0`, `<1.2.0` | That version or earlier, and earlier only.                                                                               |
| `=1.2.0`            | That exact version.                                                                                                      |
| `1.2.0`             | With no operator, read as `>=1.2.0`.                                                                                     |

A version can carry a pre-release suffix, such as `0.1.0-alpha.3`. A pre-release sorts before the
plain version it leads to, so `0.1.0-alpha.3` is older than `0.1.0`.

## Outputs

When the requirement is met, the product starts as expected and nothing is reported. The SDK version is
visible at any time in the server console:

```text theme={null}
version element_sdk
```

Quote both versions when you report a problem. See [Getting help](/support/contact).

## Errors

Five situations are reported, each with its own console line. Only the third is a warning; the rest
stop the product from starting.

**The SDK is not installed, or the server does not know about it.**

```text theme={null}
[ERROR] [Dependencies] Missing dependency 'element_sdk' (requires ^0.1.0-alpha.3).
```

**The SDK is installed but not running.** This is what you see when the SDK failed to start, or when
it was stopped by hand.

```text theme={null}
[ERROR] [Dependencies] Dependency 'element_sdk' is not started (state 'stopped', requires ^0.1.0-alpha.3).
```

**The SDK version cannot be read.** A warning, not an error: the product continues to start. It
usually means the SDK directory was replaced with an incomplete copy. The same line covers a version
that is present but not a readable version number, because from your side it is the same situation.

```text theme={null}
[WARN ] [Dependencies] Cannot determine version of 'element_sdk' (requires ^0.1.0-alpha.3).
```

**The installed SDK is outside the accepted range.**

```text theme={null}
[ERROR] [Dependencies] 'element_sdk' v0.1.0-alpha.1 does not satisfy required version ^0.1.0-alpha.3.
```

**The requirement itself cannot be read.** The requirement is written into the product's own
`fxmanifest.lua` by its build, so this means that file was edited or the product was copied
incompletely. There is no version left to check against, so the product does not start.

```text theme={null}
[ERROR] [Dependencies] Declared requirement '^0.1.0-alpha' for 'element_sdk' is not a readable version constraint.
```

Each blocking case is followed by one line naming the product that refused to start:

```text theme={null}
[ERROR] [       Sdk] Resource dependencies are not satisfied for 'element_map'.
```

The product then stops. It does finish starting first: a resource cannot stop itself on this server
platform, so it asks the SDK to stop it, and the SDK does so on its next tick. `ensure element_map`
therefore reports the resource started and then stopped a moment later, and the console shows both:

```text theme={null}
Started resource element_map
[ERROR] [       Sdk] Resource dependencies are not satisfied for 'element_map'.
Stopping resource element_map
```

The end state is `stopped` rather than running with part of the SDK it expected. A product running
against an SDK it was not built for fails later instead, in ways that are harder to trace.

Because the SDK is what performs the stop, a product whose SDK is not running reports and then keeps
running: there is nothing there to stop it. The report is still the answer: install or start
`element_sdk`.

The check can be turned off with the `el:dependencyCheck` server setting. That is a way to confirm a
diagnosis, not a fix: the product will start and then misbehave. See [Server
settings](/sdk/server-settings).

## Example

A full transcript of a version mismatch, and the fix:

```text theme={null}
[ERROR] [Dependencies] 'element_sdk' v0.1.0-alpha.1 does not satisfy required version ^0.1.0-alpha.3.
[Sdk] Resource dependencies are not satisfied for 'element_map'.
```

Update `element_sdk` to a version that satisfies the requirement, then restart. Updating the SDK
does not require updating the products that depend on it: a product accepts a range precisely so
that later SDK releases inside that range need no action from you.

## Related

* [Update a product or the SDK](/getting-started/updating)
* [Releases and versions](/concepts/releases)
* [A product does not start](/support/product-will-not-start)
* [Server settings](/sdk/server-settings)
