From 9c5e03f68f441201f3c3a6c9c4424c49af45cdbb Mon Sep 17 00:00:00 2001 From: Jon Zgoda Date: Fri, 23 Jan 2026 16:37:21 -0600 Subject: [PATCH 1/2] fix(ios/segmented-bar): Fix backgroundColor border radius on initial rendering Fixes #11014 --- packages/core/ui/core/view/index.d.ts | 5 +++++ packages/core/ui/core/view/index.ios.ts | 4 ++++ packages/core/ui/segmented-bar/index.ios.ts | 9 +++++++++ 3 files changed, 18 insertions(+) diff --git a/packages/core/ui/core/view/index.d.ts b/packages/core/ui/core/view/index.d.ts index 75f347db1f..aaa548c4cd 100644 --- a/packages/core/ui/core/view/index.d.ts +++ b/packages/core/ui/core/view/index.d.ts @@ -655,6 +655,11 @@ export abstract class View extends ViewCommon { */ isLayoutValid: boolean; + /** + * Native background states. This is a read-only property. + */ + nativeBackgroundState: 'unset' | 'invalid' | 'drawn'; + /** * Gets the CSS fully qualified type name. * Using this as element type should allow for PascalCase and kebap-case selectors, when fully qualified, to match the element. diff --git a/packages/core/ui/core/view/index.ios.ts b/packages/core/ui/core/view/index.ios.ts index 587952a962..4ca8c538de 100644 --- a/packages/core/ui/core/view/index.ios.ts +++ b/packages/core/ui/core/view/index.ios.ts @@ -53,6 +53,10 @@ export class View extends ViewCommon { */ _nativeBackgroundState: 'unset' | 'invalid' | 'drawn'; + get nativeBackgroundState(): 'unset' | 'invalid' | 'drawn' { + return this._nativeBackgroundState; + } + /** * Glass effect configuration */ diff --git a/packages/core/ui/segmented-bar/index.ios.ts b/packages/core/ui/segmented-bar/index.ios.ts index 2e8ccd8695..40e1c7686d 100644 --- a/packages/core/ui/segmented-bar/index.ios.ts +++ b/packages/core/ui/segmented-bar/index.ios.ts @@ -37,6 +37,15 @@ export class SegmentedBar extends SegmentedBarBase { super.disposeNativeView(); } + onLoaded() { + super.onLoaded(); + // Force background redraw to ensure border radius is applied. + // This fixes the visual glitch where backgroundColor initially has sharp corners. + if (this.nativeBackgroundState === 'invalid') { + this._redrawNativeBackground(this.style.backgroundInternal); + } + } + // @ts-ignore get ios(): UISegmentedControl { return this.nativeViewProtected; From b05cc20f96ca8c57f2e786ee83d4fec1c24a899a Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Fri, 23 Jan 2026 19:44:49 -0800 Subject: [PATCH 2/2] fix: mark optional in base class --- packages/core/ui/core/view/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/ui/core/view/index.d.ts b/packages/core/ui/core/view/index.d.ts index aaa548c4cd..0c19c93e2e 100644 --- a/packages/core/ui/core/view/index.d.ts +++ b/packages/core/ui/core/view/index.d.ts @@ -658,7 +658,7 @@ export abstract class View extends ViewCommon { /** * Native background states. This is a read-only property. */ - nativeBackgroundState: 'unset' | 'invalid' | 'drawn'; + nativeBackgroundState?: 'unset' | 'invalid' | 'drawn'; /** * Gets the CSS fully qualified type name.