--- title: Upgrading to 2025-10 description: > This guide describes how to upgrade your admin UI extension to API version `2025-10` and adopt web components. source_url: html: 'https://shopify.dev/docs/apps/build/admin/upgrading-to-2025-10' md: 'https://shopify.dev/docs/apps/build/admin/upgrading-to-2025-10.md' --- For a new admin order UI block (for example, admin.order-details.block.render), you should use Preact + Polaris web components, not React. The current guidance in the admin UI extensions docs is: Version 2025-07 is the last API version that supports React-based UI components. From 2025-10 and onward, Shopify recommends Preact and web components for admin UI extensions. See: Upgrading to 2025-10 (admin UI extensions, Preact & web components) Why Preact (web components) over React? From the upgrade guide for admin UI extensions (Upgrading to 2025-10): React-based @shopify/ui-extensions-react components are being phased out. “Version 2025-07 is the last API version to support React-based UI components. Web components replace them…” The recommended stack going forward is: preact @preact/signals (optional but nice for reactive state) @shopify/ui-extensions (web components + APIs) New admin UI extensions (including order blocks) are scaffolded and documented with Preact by default. So: If you’re starting anything new today (including admin order UI blocks): Use Preact + web components. If you already have legacy React-based admin UI extensions: You can stay on an older API version (e.g. 2025-04/2025-07) short-term, But you’ll eventually need to upgrade to 2025-10 and migrate those to Preact + web components. What this looks like for admin.order-details.block.render In React (legacy), an order details block might have looked like this (from the upgrade guide): tsx Copy 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // LEGACY – React-based admin block (2025-07 or earlier) import { reactExtension, AdminBlock, BlockStack, TextField, Button, } from '@shopify/ui-extensions-react/admin'; export default reactExtension( 'admin.order-details.block.render', () => , ); function Extension() { return ( }> ); } ``` *** ## Migrate to web components Web components are exposed as custom HTML elements. Update your React components to custom elements. ## New components in Preact ```tsx import '@shopify/ui-extensions/preact'; import {render} from 'preact'; export default function extension() { render(, document.body); } function Extension() { return ( Update ); } ``` ## Previous components in React ```tsx import { reactExtension, AdminBlock, BlockStack, TextField, Button, } from '@shopify/ui-extensions-react/admin'; export default reactExtension( 'admin.order-details.block.render', () => , ); function Extension() { return (