Version 2025-07 is the last API version to support React-based UI components. Later versions use web components, native UI elements with built-in accessibility, better performance, and consistent styling with Shopify's design system. Check out the migration guide to upgrade your extension.
Fulfillment status
Fulfillment status extensions render inside the delivery status cards on the Order status page. These cards appear alongside Shopify's native fulfillment UI so customers see your extension content in direct context with their shipment details.
Anchor to Use casesUse cases
- Tracking notices: Display courier-specific information or tracking update delays for fulfilled shipments.
- Delivery instructions: Provide delivery preferences or special handling notes tied to a specific fulfillment.
- Processing updates: Show estimated processing times or preparation status for items that haven't shipped yet.
- Custom fulfillment details: Display supplementary fulfillment information from your app, such as warranty activation or installation scheduling.
- Order-specific messaging: Surface contextual messages related to the delivery or preparation of items in the order.
Anchor to Fulfillment status targetsFulfillment status targets
Fulfillment status targets render inside the delivery status cards on the Order status page. They're useful for adding contextual information about the delivery or preparation of order items.
Anchor to Fulfillment details (render after) ,[object Object]Fulfillment details (render after) target
customer-account.order-status.fulfillment-details.render-after
Renders after the fulfillment details in the delivery status card on the Order status page. A separate instance of this extension is rendered for each fulfillment.
Use this target to display tracking notices, delivery instructions, or supplementary shipment information for a specific fulfillment. This target provides fulfillmentId to identify the current fulfillment, and gives you access to the Order API and the Cart Lines API.
Supported components
- Avatar
- Badge
- Banner
- Block
Layout - Block
Spacer - Block
Stack - Button
- Card
- Checkbox
- Choice
- Choice
List - Clipboard
Item - Customer
Account Action - Date
Field - Date
Picker - Disclosure
- Divider
- Drop
Zone - Form
- Grid
- Grid
Item - Heading
- Heading
Group - Icon
- Image
- Image
Group - Inline
Layout - Inline
Spacer - Inline
Stack - Link
- List
- List
Item - Map
- Map
Marker - Map
Popover - Menu
- Modal
- Page
- Payment
Icon - Phone
Field - Popover
- Pressable
- Product
Thumbnail - Progress
- QRCode
- Resource
Item - Scroll
View - Select
- Sheet
- Skeleton
Image - Skeleton
Text - Skeleton
Text Block - Spinner
- Stepper
- Switch
- Tag
- Text
- Text
Block - Text
Field - Toggle
Button - Toggle
Button Group - Tooltip
- View
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Authenticated Account API
- Authentication State API
- Buyer Identity API
- Cart Lines API
- Checkout Settings API
- Cost API
- Customer Account API
- Customer Privacy API
- Discounts API
- Extension API
- Gift Cards API
- Localization API
- Metafields API
- Navigation API
- Note API
- Order API
- Order Status Localization API
- Require Login API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
- UI API
- Version API
Supported components
- Avatar
- Badge
- Banner
- Block
Layout - Block
Spacer - Block
Stack - Button
- Card
- Checkbox
- Choice
- Choice
List - Clipboard
Item - Customer
Account Action - Date
Field - Date
Picker - Disclosure
- Divider
- Drop
Zone - Form
- Grid
- Grid
Item - Heading
- Heading
Group - Icon
- Image
- Image
Group - Inline
Layout - Inline
Spacer - Inline
Stack - Link
- List
- List
Item - Map
- Map
Marker - Map
Popover - Menu
- Modal
- Page
- Payment
Icon - Phone
Field - Popover
- Pressable
- Product
Thumbnail - Progress
- QRCode
- Resource
Item - Scroll
View - Select
- Sheet
- Skeleton
Image - Skeleton
Text - Skeleton
Text Block - Spinner
- Stepper
- Switch
- Tag
- Text
- Text
Block - Text
Field - Toggle
Button - Toggle
Button Group - Tooltip
- View
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Authenticated Account API
- Authentication State API
- Buyer Identity API
- Cart Lines API
- Checkout Settings API
- Cost API
- Customer Account API
- Customer Privacy API
- Discounts API
- Extension API
- Gift Cards API
- Localization API
- Metafields API
- Navigation API
- Note API
- Order API
- Order Status Localization API
- Require Login API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
- UI API
- Version API
Anchor to Unfulfilled items (render after) ,[object Object]Unfulfilled items (render after) target
customer-account.order-status.unfulfilled-items.render-after
Renders after the unfulfilled items in the delivery status card on the Order status page. A single instance of this extension is rendered for all unfulfilled items in the order.
Use this target to display information about items that haven't been shipped yet, such as processing updates or estimated preparation times. This target gives you access to the Order API and the Cart Lines API.
Supported components
- Avatar
- Badge
- Banner
- Block
Layout - Block
Spacer - Block
Stack - Button
- Card
- Checkbox
- Choice
- Choice
List - Clipboard
Item - Customer
Account Action - Date
Field - Date
Picker - Disclosure
- Divider
- Drop
Zone - Form
- Grid
- Grid
Item - Heading
- Heading
Group - Icon
- Image
- Image
Group - Inline
Layout - Inline
Spacer - Inline
Stack - Link
- List
- List
Item - Map
- Map
Marker - Map
Popover - Menu
- Modal
- Page
- Payment
Icon - Phone
Field - Popover
- Pressable
- Product
Thumbnail - Progress
- QRCode
- Resource
Item - Scroll
View - Select
- Sheet
- Skeleton
Image - Skeleton
Text - Skeleton
Text Block - Spinner
- Stepper
- Switch
- Tag
- Text
- Text
Block - Text
Field - Toggle
Button - Toggle
Button Group - Tooltip
- View
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Authenticated Account API
- Authentication State API
- Buyer Identity API
- Cart Lines API
- Checkout Settings API
- Cost API
- Customer Account API
- Customer Privacy API
- Discounts API
- Extension API
- Gift Cards API
- Localization API
- Metafields API
- Navigation API
- Note API
- Order API
- Order Status Localization API
- Require Login API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
- UI API
- Version API
Supported components
- Avatar
- Badge
- Banner
- Block
Layout - Block
Spacer - Block
Stack - Button
- Card
- Checkbox
- Choice
- Choice
List - Clipboard
Item - Customer
Account Action - Date
Field - Date
Picker - Disclosure
- Divider
- Drop
Zone - Form
- Grid
- Grid
Item - Heading
- Heading
Group - Icon
- Image
- Image
Group - Inline
Layout - Inline
Spacer - Inline
Stack - Link
- List
- List
Item - Map
- Map
Marker - Map
Popover - Menu
- Modal
- Page
- Payment
Icon - Phone
Field - Popover
- Pressable
- Product
Thumbnail - Progress
- QRCode
- Resource
Item - Scroll
View - Select
- Sheet
- Skeleton
Image - Skeleton
Text - Skeleton
Text Block - Spinner
- Stepper
- Switch
- Tag
- Text
- Text
Block - Text
Field - Toggle
Button - Toggle
Button Group - Tooltip
- View
Available APIs
- Addresses API
- Analytics API
- Attributes API
- Authenticated Account API
- Authentication State API
- Buyer Identity API
- Cart Lines API
- Checkout Settings API
- Cost API
- Customer Account API
- Customer Privacy API
- Discounts API
- Extension API
- Gift Cards API
- Localization API
- Metafields API
- Navigation API
- Note API
- Order API
- Order Status Localization API
- Require Login API
- Session Token API
- Settings API
- Shop API
- Storage API
- Storefront API
- UI API
- Version API
Anchor to Best practicesBest practices
- Keep content contextual: Fulfillment status extensions render inside delivery status cards, so content should be directly relevant to the fulfillment or unfulfilled items being displayed.
- Guard against missing data: Always check that
useOrder()(React) ororder.current(TS) is defined before rendering order-specific content. The order data loads asynchronously and may beundefinedon the initial render. - Subscribe to data changes in TS extensions: When using the imperative
extension()API, subscribe toorderandlinesto re-render when data becomes available or changes. Callroot.replaceChildren()before re-rendering to avoid duplicate content. - Avoid heavy rendering: These targets render inline within the Order status page. Avoid complex layouts or large data fetches that could cause layout shifts. Use Banner or lightweight BlockStack layouts for the best experience.