Some Amplitude SDK versions (iOS 5.3.0+, Android 2.28.0+, JavaScript 8.9.0+, React Native, Unity, and Flutter) let you set your apps to use dynamic configuration.

Dynamic configuration finds the best Amplitude server URL based on the location of your app users.

## Considerations

- If you have your own proxy server and use the `setServerUrl` API, don't use dynamic configuration.
- If you have users in Mainland China, Amplitude recommends that you use dynamic configuration.
- This feature is off by default. Enable it explicitly to use it.

## Use cases

### Region-based

Send users from different regions to the server for their region.

![Dynamic configuration chart](/images/dynamic-config-1.png)

### Dynamically adjust server URLs

If a server URL becomes unreachable, Amplitude can change the address on the dynamic configuration server.

Dynamic configuration makes the ingestion endpoint dynamic, so you don't need to release a new version of your app.

![Dynamic configuration chart](/images/dynamic-config-2-1715106682.png)

## Usage

Enable the `useDynamicConfig` flag.

{% code-group %}
```objc iOS
[Amplitude instance].useDynamicConfig = YES;
```

```java Android
AmplitudeClient.getInstance().setUseDynamicConfig(true);
```

```dart Flutter
Amplitude.getInstance().setUseDynamicConfig(true);
```

```js JavaScript
amplitude.getInstance().init(euApiKey, null, {
    useDynamicConfig: true,
});
```

```ts React Native
Amplitude.getInstance().setUseDynamicConfig(true);
```

```c# Unity
amplitude.setUseDynamicConfig(true);
```
{% /code-group %}
