Hello, I’m working on migrating my checkout extensions to 2025-10 with Preact. I noticed after doing the migration that useState loses its reactivity - state updates internally but the component never re-renders to reflect the changes in the UI.
To sanity check this, I created a minimal reproduction based on Shopify’s migration examples. The issue is that the @shopify/ui-extensions/preact package appears to be breaking Preact’s normal rendering lifecycle. When I comment out this import, useState works as expected.
// package.json dependencies
"dependencies": {
"@preact/signals": "2.3.x",
"@shopify/ui-extensions": "2025.10.x",
"preact": "10.10.x"
},
import '@shopify/ui-extensions/preact'; // if i comment this out it works
import { render } from 'preact';
import { useState } from 'preact/hooks';
export default async () => {
render(<Extension />, document.body);
};
function Extension() {
const [count, setCount] = useState(0);
return (
<>
<s-text>Count: {count}</s-text>
<s-button onClick={() => setCount(count + 1)}>Increment</s-button>
</>
);
}