Update copy RE disk configuration changes and cooldown (#50844)

## Context

Reverts copy changes from the following PRs:
- Docs: https://github.com/supabase/supabase/pull/42184
- FE: https://github.com/supabase/supabase/pull/47646

Our platform's disk management configuration limitation still follows
the 4 hour cooldown at the moment, doesn't align with AWS's 4 changes in
24 hours rule just yet. This is just to prevent any confusion for now,
and we'll need to update the copy again once behaviour matches AWS on
our BE

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Updates**
* Disk changes are now subject to an approximately four-hour cooldown
after each modification, replacing the previous limit of four changes in
a rolling 24-hour period.
* Disk management screens now show the cooldown status, remaining wait
time, and next available update time.
* Updated platform guides and troubleshooting instructions to reflect
the cooldown and explain available recovery options.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Joshen Lim authored and GitHub committed 2026-09-29 23:08:31 +08:00
1 parent 708bfa7ad1
commit fea8b8b41d
10 files changed
+27 -29

No files matched your search

@@ -297,7 +297,7 @@ export function AdvancedSection({
isDiskTooSmallForCustomIops && !disableIopsThroughputConfig && !disableDiskInputs
}
title="Increase disk size to adjust IOPS or throughput"
description={`This disk is too small to update IOPS or throughput, since gp3 volumes are capped at 500 IOPS per GB with a 3,000 IOPS minimum. Resizing to ${suggestedDiskSizeForCustomIops} GB unlocks custom IOPS and throughput, and leaves headroom for further adjustments (disk config changes are limited to 4 within a rolling 24-hour window).`}
description={`This disk is too small to update IOPS or throughput, since gp3 volumes are capped at 500 IOPS per GB with a 3,000 IOPS minimum. Resizing to ${suggestedDiskSizeForCustomIops} GB unlocks custom IOPS and throughput, and leaves headroom for further adjustments (disk config changes are locked for 4 hours after each resize).`}
actions={
!disableDiskSizeInput ? (
<Button
@@ -221,7 +221,7 @@ export function DiskManagementForm({
DISK_LIMITS[DiskType.GP3].minIops
)
// Suggested target when prompting a resize, sits above the floor so users
// aren't pinned at the minimum between disk-config modifications.
// aren't pinned at the minimum during the 4-hour disk-config cooldown.
const suggestedDiskSizeForCustomIops = PLAN_DETAILS.pro.includedDiskGB.gp3
const isDiskTooSmallForCustomIops =
watchedStorageType === 'gp3' && watchedTotalSize < minDiskSizeForCustomIops
@@ -180,7 +180,7 @@ export function useDiskManagementReviewChanges(
Number(iopsPrice.newPrice) !== Number(iopsPrice.oldPrice) ||
Number(throughputPrice.newPrice) !== Number(throughputPrice.oldPrice)
// Show cooldown warning whenever any disk attribute that counts toward the 24-hour modification limit changes
// Show cooldown warning whenever any disk attribute that enforces the 4-hour lock changes
const anyDiskAttributeChange = hasIOPSChanges || hasStorageTypeChanges || hasTotalSizeChanges
// Show extended downtime warning when resizing to/from a size below large
@@ -188,7 +188,7 @@ export const DiskManagementReviewAndSubmitDialog = ({
label="IOPS"
description={
anyDiskAttributeChange && !hasTotalSizeChanges && !hasStorageTypeChanges
? 'Disk attributes, including IOPS and disk size, may only be modified 4 times within a rolling 24-hour window. A new modification can be started as soon as the previous one completes.'
? 'Disk attributes, including IOPS and disk size, will be locked for 4 hours after this change.'
: undefined
}
>
@@ -217,7 +217,7 @@ export const DiskManagementReviewAndSubmitDialog = ({
{(hasTotalSizeChanges || hasStorageTypeChanges) && (
<BreakdownRow
label="Disk size"
description="You can modify disk attributes up to 4 times within a rolling 24-hour window."
description="For 4 hours after changes you will not be able to modify disk attributes."
>
<div className="flex flex-col items-end gap-0.5">
<ValueChange
@@ -51,10 +51,12 @@ export function DiskCountdownRadial() {
<CountdownTimerRadial progress={progressPercentage} />
<div className="flex flex-col gap-2">
<div>
<p className="text-foreground text-sm p-0">Disk modification limit reached</p>
<p className="text-foreground text-sm p-0">
4-hour cooldown period is in progress
</p>
<p className="text-foreground-lighter text-sm p-0">
You can modify disk attributes up to 4 times within a rolling 24-hour window.
You'll be able to make changes again once the window allows it.
You can't modify your disk configuration again until the 4-hour cool down period
ends.
</p>
</div>
<CountdownTimerSpan seconds={remainingTime} />
@@ -180,16 +180,16 @@ const DiskSizeConfigurationModal = ({
<DialogSection className="w-full space-y-4">
<Alert variant={isAbleToResizeDatabase ? 'default' : 'warning'}>
<Info size={16} />
<AlertTitle>
Disk modifications are limited to 4 per rolling 24-hour window
</AlertTitle>
<AlertTitle>This operation is only possible every 4 hours</AlertTitle>
<AlertDescription>
<div className="mb-4">
{isAbleToResizeDatabase
? `You can modify disk attributes up to 4 times within a rolling 24-hour window. A new modification can be started as soon as the previous one completes.`
? `Upon updating your disk size, the next disk size update will only be available from ${dayjs().format(
'DD MMM YYYY, HH:mm (ZZ)'
)}`
: `Your database was last resized at ${dayjs(lastDatabaseResizeAt).format(
'DD MMM YYYY, HH:mm (ZZ)'
)}. You've reached the disk modification limit for now — you can resize again in approximately ${formattedTimeTillNextAvailableResize}.`}
)}. You can resize your database again in approximately ${formattedTimeTillNextAvailableResize}`}
</div>
<Button asChild iconRight={<ExternalLink size={14} />}>
<Link href={`${DOCS_URL}/guides/platform/database-size#disk-management`}>