# Experiments

Settings > Experiments: the switches that hide Cua Volume, your own cloud and sharing until they are turned on.

> Agent discovery: use [the Cua documentation index](https://cua.ai/docs/llms.txt) to find related pages and their Markdown URLs.









**Note: Cua Spaces app export**


These APIs are part of the Cua Spaces app export for building Spaces UIs. They are source-available under FSL-1.1-MIT and ship for Swift only (`import CuaSpacesFFI`); the Rust tab shows the `cua-spaces-ffi` crate they come from. The open source SDK packages for Python, TypeScript and Kotlin do not include them.




`app_experiments_page` derives the Experiments tab from the saved `AppExperiments`; `app_experiments_choose` applies a switch. Off only hides a feature: a mounted Volume, a connected cloud and existing shares stay as they are.

## `app_experiments_from_json`

The switches from JSON (fixtures, parity).




**Swift**



```swift
func appExperimentsFromJson(json: String) throws -> AppExperiments
```






**Rust**



```rust
pub fn app_experiments_from_json(json: String) -> Result<AppExperiments, CuaError>
```






| Parameter | Type | Default |
| --- | --- | --- |
| `json` | `String` | required |

**Returns** [`AppExperiments`](#appexperiments-record) · **Raises** [`CuaError`](</docs/cua-sdk/reference/errors>)

## `app_settings_with_storage`

The Settings page with Settings, Storage after General while the Cua
Volume experiment is on (left out while it is off).




**Swift**



```swift
func appSettingsWithStorage(page: AppSettingsPage, storage: AppSettingsSection, experiments: AppExperiments) -> AppSettingsPage
```






**Rust**



```rust
pub fn app_settings_with_storage(page: AppSettingsPage, storage: AppSettingsSection, experiments: AppExperiments) -> AppSettingsPage
```






| Parameter | Type | Default |
| --- | --- | --- |
| `page` | [`AppSettingsPage`](</docs/cua-sdk/reference/spaces/app-core/window#appsettingspage-record>) | required |
| `storage` | [`AppSettingsSection`](</docs/cua-sdk/reference/spaces/app-core/window#appsettingssection-record>) | required |
| `experiments` | [`AppExperiments`](#appexperiments-record) | required |

**Returns** [`AppSettingsPage`](</docs/cua-sdk/reference/spaces/app-core/window#appsettingspage-record>)

## `app_telemetry_experiments_changed`

The events of a change in Settings, Experiments (call with the switches
before and after it).




**Swift**



```swift
func appTelemetryExperimentsChanged(before: AppExperiments, after: AppExperiments) -> [AppTelemetrySignal]
```






**Rust**



```rust
pub fn app_telemetry_experiments_changed(before: AppExperiments, after: AppExperiments) -> Vec<AppTelemetrySignal>
```






| Parameter | Type | Default |
| --- | --- | --- |
| `before` | [`AppExperiments`](#appexperiments-record) | required |
| `after` | [`AppExperiments`](#appexperiments-record) | required |

**Returns** [`Vec<AppTelemetrySignal>`](</docs/cua-sdk/reference/spaces/app-core/telemetry#apptelemetrysignal-enum>)

## `app_telemetry_experiments_on`

Which experiments are on (at launch).




**Swift**



```swift
func appTelemetryExperimentsOn(experiments: AppExperiments) -> [AppTelemetrySignal]
```






**Rust**



```rust
pub fn app_telemetry_experiments_on(experiments: AppExperiments) -> Vec<AppTelemetrySignal>
```






| Parameter | Type | Default |
| --- | --- | --- |
| `experiments` | [`AppExperiments`](#appexperiments-record) | required |

**Returns** [`Vec<AppTelemetrySignal>`](</docs/cua-sdk/reference/spaces/app-core/telemetry#apptelemetrysignal-enum>)

## `AppExperiments` record

Returned by [`app_experiments_choose`](#app_experiments_choose), [`app_experiments_from_json`](#app_experiments_from_json).

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `cua_volume` / `cuaVolume` | `bool` |  | Cua Volume in the first run and Settings, Storage. |
| `your_cloud` / `yourCloud` | `bool` |  | Your own clouds in the New Space wizard. |
| `sharing` | `bool` |  | Sharing a Space with other accounts. |

## `app_experiments_choose`

The switches after a row's choice (`on` or `off`).




**Swift**



```swift
func appExperimentsChoose(experiments: AppExperiments, row: String, option: String) -> AppExperiments
```






**Rust**



```rust
pub fn app_experiments_choose(experiments: AppExperiments, row: String, option: String) -> AppExperiments
```






| Parameter | Type | Default |
| --- | --- | --- |
| `experiments` | [`AppExperiments`](#appexperiments-record) | required |
| `row` | `String` | required |
| `option` | `String` | required |

**Returns** [`AppExperiments`](#appexperiments-record)

## `app_experiments_page`

Settings, Experiments: one switch and one line per experiment.




**Swift**



```swift
func appExperimentsPage(experiments: AppExperiments) -> AppSettingsPage
```






**Rust**



```rust
pub fn app_experiments_page(experiments: AppExperiments) -> AppSettingsPage
```






| Parameter | Type | Default |
| --- | --- | --- |
| `experiments` | [`AppExperiments`](#appexperiments-record) | required |

**Returns** [`AppSettingsPage`](</docs/cua-sdk/reference/spaces/app-core/window#appsettingspage-record>)

