Roblox Experience Configs let creators change values used by experience code without publishing a new experience version or restarting servers. Supported value types include strings, numbers, booleans, and JSON objects. A config changes behavior only when experience code reads and applies it.
Roll back in Creator Hub
- Open the experience's Configs page and select History.
- Expand the relevant entry and confirm the changed key and its before-and-after values.
- Preserve any unrelated draft work before continuing.
- Select Restore for the change you want to reverse.
- Return to Configs, review the resulting draft, and publish it.
Roll back through Open Cloud
The Open Cloud Configs API uses the InExperienceConfig repository for in-experience configs. Read operations require universe:read; draft changes, revision restoration, and publishing require universe:write.
- List revisions with GET /creator-configs-public-api/v1/configs/universes/{universeId}/repositories/InExperienceConfig/revisions.
- Select the intended revisionId.
- Restore it with POST /creator-configs-public-api/v1/configs/universes/{universeId}/repositories/InExperienceConfig/revisions/{revisionId}/restore.
- Capture the returned draftHash.
- Publish the draft with POST /creator-configs-public-api/v1/configs/universes/{universeId}/repositories/InExperienceConfig/publish, supplying the draft hash, a history message, and either the Immediate or GradualRollout deployment strategy.
- Fetch the published repository entries and confirm the restored values.
A draftHash identifies the current draft state. If a supplied hash does not match the current server-side draft, the update or publication request fails.
Refresh running servers
A ConfigSnapshot represents config values at a point in time. Published changes do not automatically update an existing snapshot. Server code can listen for ConfigSnapshot.UpdateAvailable, call ConfigSnapshot:Refresh(), and use ConfigSnapshot:GetValueChangedSignal() to react when a key changes after refresh.
After publishing a rollback, check both the published repository entries and the running server's refreshed snapshot. Reading the published repository confirms publication but does not confirm that an existing snapshot has refreshed.
Handle loading failures
ConfigService:GetConfigAsync() can throw if a config fails to load and has never loaded successfully. Roblox documents pcall() and fallback values as possible handling approaches.
After a previous successful load, a connection loss leaves snapshots with the latest available values. They attempt to reconnect and fire UpdateAvailable after receiving newer updates.
Test the update path
ConfigService:SetTestingValue() temporarily changes a config value for testing. It triggers a config update and UpdateAvailable; existing snapshots must still be refreshed to receive the value.
A testing value is limited to the current server and does not propagate to other servers. In Studio, it applies only to the current play session and does not affect live servers.
Incident checklist
- Identify the affected keys and intended revision.
- Confirm the before-and-after values.
- Preserve unrelated draft work.
- Restore the selected change or revision.
- Publish the resulting draft.
- Read back the published entries.
- Refresh existing snapshots and confirm that the restored values reach the code that uses them.