Migrating to preact + 2025-10 causing reactivity issues

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>
    </>
  );
}

Update: Found the root cause
The issue was caused by outdated versions of Preact and Preact Signals. The migration guide recommends:

  "dependencies": {
    "preact": "^10.10.x",
    "@preact/signals": "^2.3.x",
    "@shopify/ui-extensions": "2025.10.x"
  }

However, these versions appear to be incompatible with @shopify/ui-extensions/preact. Updating to the latest versions resolves the issue:

  "dependencies": {
    "@preact/signals": "2.5.1",
    "@shopify/ui-extensions": "2025.10.x",,
    "preact": "10.28.0"
  },

Recommendation: The migration guide should be updated to recommend the latest stable versions of Preact (10.28.x) and @preactpreact/signals (2.5.x) rather than the older 10.10.x and 2.3.x versions, as these older versions cause useState to break when used with the new @shopify/ui-extensions/preact package.