From a0d32083a54829b658f2b6f98b909924314d0725 Mon Sep 17 00:00:00 2001 From: William Candillon Date: Tue, 3 Jun 2025 16:40:36 +0200 Subject: [PATCH 1/2] =?UTF-8?q?fix(=F0=9F=90=9B):=20fix=20reconciler=20reg?= =?UTF-8?q?ression=20due=20to=20mismatching=20types=20with=20implementatio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/skia/src/sksg/HostConfig.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/skia/src/sksg/HostConfig.ts b/packages/skia/src/sksg/HostConfig.ts index e56dacc13d..ff7fbeddce 100644 --- a/packages/skia/src/sksg/HostConfig.ts +++ b/packages/skia/src/sksg/HostConfig.ts @@ -177,10 +177,8 @@ export const sksgHostConfig: SkiaHostConfig = { _type, _oldProps, newProps, - _updatePayload, - _internalInstanceHandle, - keepChildren: boolean, - _recyclableInstance: null | Instance + keepChildren, + _newChildSet ) { debug("cloneInstance"); return { From 9cf79312509266334502d99de3a5fdcfa43dfb98 Mon Sep 17 00:00:00 2001 From: William Candillon Date: Tue, 3 Jun 2025 16:59:49 +0200 Subject: [PATCH 2/2] :wrench: --- apps/example/src/Examples/Breathe/index.ts | 2 +- packages/skia/src/sksg/HostConfig.ts | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/example/src/Examples/Breathe/index.ts b/apps/example/src/Examples/Breathe/index.ts index 319fb82a16..2de3f63f46 100644 --- a/apps/example/src/Examples/Breathe/index.ts +++ b/apps/example/src/Examples/Breathe/index.ts @@ -1 +1 @@ -export { Breathe } from "./Breathe"; +export { Breathe } from "./TestReconciller"; diff --git a/packages/skia/src/sksg/HostConfig.ts b/packages/skia/src/sksg/HostConfig.ts index ff7fbeddce..831a667364 100644 --- a/packages/skia/src/sksg/HostConfig.ts +++ b/packages/skia/src/sksg/HostConfig.ts @@ -181,10 +181,20 @@ export const sksgHostConfig: SkiaHostConfig = { _newChildSet ) { debug("cloneInstance"); + + // TODO: on RN Web we need to do clone newProps + // see https://github.com/Shopify/react-native-skia/pull/2998 + if ( + keepChildren && + shallowEq(instance.props as object, newProps as object) + ) { + return instance; + } + return { type: instance.type, - props: { ...newProps }, - children: keepChildren ? [...instance.children] : [], + props: newProps, + children: keepChildren ? instance.children : [], }; },