refactor(storage): rename "expiration policy" to "lifecycle policy"

Renames the noun phrase that names the policy object — the section
heading in the create/edit bucket modals, the file preview panel
tooltip title, the empty-state copy in the archived / trash views, and
the internal ExpirationPolicySection component — to "lifecycle policy",
matching S3's own terminology.

Preserves verb / action-form uses of expire/expiration where they
describe what happens when the policy fires (ExpirationSentence,
ExpirationExplainer, ExpirationMode, version_expiry_days, "Noncurrent
version expiration" label, etc.) — those name the action, not the
policy.
This commit is contained in:
Claude committed 2026-08-17 13:31:54 +00:00
1 parent eb64004f4c
commit f732560823
4 files changed
+13 -14

No files matched your search

@@ -179,7 +179,7 @@ export const BucketDataProtectionFields = ({
)}
{!!planLimits && isVersioningEnabled && (
<ExpirationPolicySection
<LifecyclePolicySection
control={control}
hasDays={hasDays}
hasVersions={hasVersions}
@@ -195,9 +195,9 @@ export const BucketDataProtectionFields = ({
)
}
// ── Expiration policy section ────────────────────────────────────────────
// ── Lifecycle policy section ─────────────────────────────────────────────
interface ExpirationPolicySectionProps {
interface LifecyclePolicySectionProps {
control: ReturnType<typeof useFormContext<BucketProtectionFormValues>>['control']
hasDays: boolean
hasVersions: boolean
@@ -208,7 +208,7 @@ interface ExpirationPolicySectionProps {
onModeChange: (mode: ExpirationMode) => void
}
const ExpirationPolicySection = ({
const LifecyclePolicySection = ({
control,
hasDays,
hasVersions,
@@ -217,7 +217,7 @@ const ExpirationPolicySection = ({
versions,
mode,
onModeChange,
}: ExpirationPolicySectionProps) => {
}: LifecyclePolicySectionProps) => {
const { trigger } = useFormContext<BucketProtectionFormValues>()
const hasNoPolicy = !hasDays && !hasVersions
@@ -225,7 +225,7 @@ const ExpirationPolicySection = ({
<div className="flex flex-col gap-y-4">
<div>
<p className="mb-1.5 flex items-center gap-x-1.5 text-sm font-medium text-foreground">
Expiration policy
Lifecycle policy
<BroomSparklesIcon size={14} className="text-foreground-lighter" />
</p>
<ExpirationSentence
@@ -309,8 +309,8 @@ const ExpirationPolicySection = ({
{hasNoPolicy && (
<Admonition
type="warning"
title="No expiration policy"
description="All noncurrent versions count toward storage usage and incur ongoing costs. Consider setting an expiration policy to automatically remove outdated versions."
title="No lifecycle policy"
description="All noncurrent versions count toward storage usage and incur ongoing costs. Consider setting a lifecycle policy to automatically expire outdated versions."
/>
)}
@@ -349,7 +349,7 @@ const ExpirationSentence = ({
if (!hasDays && !hasVersions) {
return (
<p className="text-sm text-foreground-lighter leading-relaxed">
No expiration policy configured. Noncurrent versions will be retained indefinitely.
No lifecycle policy configured. Noncurrent versions will be retained indefinitely.
</p>
)
}
@@ -165,7 +165,7 @@ export const DeletedFilesList = ({ bucketId, searchString }: DeletedFilesListPro
description={
searchString.length > 0
? 'No archived files match your search.'
: 'Files and their version history appear here once archived (soft-deleted), and can be restored until an expiration policy removes them.'
: 'Files and their version history appear here once archived (soft-deleted), and can be restored until a lifecycle policy expires them.'
}
/>
</div>
@@ -417,7 +417,7 @@ const PolicyRow = ({ cap, expiryDays, mode }: PolicyRowProps) => {
<TooltipContent side="top" className="max-w-64 space-y-1.5 pt-2.5">
<div className="flex items-center gap-x-1">
<BroomSparklesIcon size={16} className="shrink-0 mr-1" />
<p className="font-medium text-foreground">Expiration policy</p>
<p className="font-medium text-foreground">Lifecycle policy</p>
</div>
<p className="text-foreground-light">
<PolicyFullRule cap={cap} expiryDays={expiryDays} mode={mode} />
@@ -103,8 +103,7 @@ export const Trash = ({ bucketId }: TrashProps) => {
<PageSectionContent className="flex flex-col gap-y-4">
<div className="flex items-center justify-between gap-x-3">
<p className="text-sm text-foreground-lighter">
Deleted versions in this bucket, restorable until their expiration policy removes
them
Deleted versions in this bucket, restorable until a lifecycle policy expires them
</p>
{isSuccess && objects.length > 0 && (
<Button variant="danger" icon={<Trash2 />} onClick={() => setShowDeleteAll(true)}>
@@ -119,7 +118,7 @@ export const Trash = ({ bucketId }: TrashProps) => {
<Admonition
type="default"
title="No deleted versions"
description="Deleted versions appear here and can be restored until an expiration policy removes them."
description="Deleted versions appear here and can be restored until a lifecycle policy expires them."
/>
)}
{isSuccess && objects.length > 0 && (