@@ -14,8 +14,9 @@ import {
1414 setFieldErrors ,
1515 useScrapsForm ,
1616} from '@sentry/scraps/form' ;
17- import { Container , Flex } from '@sentry/scraps/layout' ;
17+ import { Container , Flex , Stack } from '@sentry/scraps/layout' ;
1818import { ExternalLink } from '@sentry/scraps/link' ;
19+ import { Text } from '@sentry/scraps/text' ;
1920
2021import { addErrorMessage } from 'sentry/actionCreators/indicator' ;
2122import { updateOrganization } from 'sentry/actionCreators/organizations' ;
@@ -30,10 +31,13 @@ import {ConfigStore} from 'sentry/stores/configStore';
3031import type { MembershipSettingsProps } from 'sentry/types/hooks' ;
3132import type { Organization } from 'sentry/types/organization' ;
3233import { fetchMutation , useMutation } from 'sentry/utils/queryClient' ;
34+ import { getRegionDataFromOrganization , getRegions } from 'sentry/utils/regions' ;
3335import { RequestError } from 'sentry/utils/requestError/requestError' ;
3436import { slugify } from 'sentry/utils/slugify' ;
3537import { useMembers } from 'sentry/utils/useMembers' ;
3638import { useOrganization } from 'sentry/utils/useOrganization' ;
39+ import { useHasPageFrameFeature } from 'sentry/views/navigation/useHasPageFrameFeature' ;
40+ import { DATA_STORAGE_DOCS_LINK } from 'sentry/views/organizationCreate' ;
3741
3842const HookCodecovSettingsLink = HookOrDefault ( {
3943 hookName : 'component:codecov-integration-settings-link' ,
@@ -415,10 +419,13 @@ function OrganizationMembershipSettingsBase({
415419export function OrganizationSettingsForm ( { initialData, onSave} : Props ) {
416420 const organization = useOrganization ( ) ;
417421 const endpoint = `/organizations/${ organization . slug } /` ;
422+ const hasPageFrameFeature = useHasPageFrameFeature ( ) ;
418423
419424 const access = useMemo ( ( ) => new Set ( organization . access ) , [ organization ] ) ;
420425 const hasWriteAccess = access . has ( 'org:write' ) ;
421426 const hasGenAiFeatureFlag = organization . features . includes ( 'gen-ai-features' ) ;
427+ const regionData =
428+ getRegions ( ) . length > 1 ? getRegionDataFromOrganization ( organization ) : null ;
422429
423430 const aiEnabled = hasGenAiFeatureFlag ? ( initialData . hideAiFeatures ?? false ) : false ;
424431
@@ -545,6 +552,23 @@ export function OrganizationSettingsForm({initialData, onSave}: Props) {
545552 ) }
546553 </ AutoSaveForm >
547554
555+ { /* Data Storage Region — read-only, only shown when multiple regions exist */ }
556+ { hasPageFrameFeature && regionData && (
557+ < Flex direction = "row" gap = "xl" align = "center" justify = "between" flexGrow = { 1 } >
558+ < Stack width = "50%" gap = "xs" >
559+ < Text > { t ( 'Data Storage Region' ) } </ Text >
560+ < Text size = "sm" variant = "muted" >
561+ { tct ( "Your organization's data storage location. [link:Learn More]" , {
562+ link : < ExternalLink href = { DATA_STORAGE_DOCS_LINK } /> ,
563+ } ) }
564+ </ Text >
565+ </ Stack >
566+ < Container flexGrow = { 1 } >
567+ < Text > { `${ regionData . flag } ${ regionData . displayName } ` } </ Text >
568+ </ Container >
569+ </ Flex >
570+ ) }
571+
548572 { /* Early Adopter — hidden for self-hosted errors-only */ }
549573 { ! ConfigStore . get ( 'isSelfHostedErrorsOnly' ) && (
550574 < AutoSaveForm
0 commit comments