Commit b4b7450446e for woocommerce

commit b4b7450446e7f2fa9e2e2800c7301cd43957df78
Author: verofasulo <98944206+verofasulo@users.noreply.github.com>
Date:   Fri May 15 11:26:43 2026 +0200

    Remove the 'On sale' toggle and always show the sale price field (#64995)

    The 'On sale' boolean toggle gated whether the sale price field was
    visible. Removing the toggle and showing the sale price field by
    default lets the presence of a sale price drive the on-sale state
    directly, simplifying the form and matching how merchants think about
    this — entering a sale price means the product is on sale.

    - Drop 'on_sale' from the simple, variation, and external product
      edit form lists.
    - Remove the conditional isVisible from the sale_price field so it
      always renders alongside regular_price.
    - Update form-order assertions in utils.test.ts to match the new
      layout.

diff --git a/packages/js/experimental-products-app/changelog/update-always-show-sale-price b/packages/js/experimental-products-app/changelog/update-always-show-sale-price
new file mode 100644
index 00000000000..07964bb2272
--- /dev/null
+++ b/packages/js/experimental-products-app/changelog/update-always-show-sale-price
@@ -0,0 +1,4 @@
+Significance: minor
+Type: update
+
+Remove the "On sale" toggle from the product editor and always show the sale price field
diff --git a/packages/js/experimental-products-app/src/fields/sale_price/field.tsx b/packages/js/experimental-products-app/src/fields/sale_price/field.tsx
index c13def90fa7..6bc99bcc875 100644
--- a/packages/js/experimental-products-app/src/fields/sale_price/field.tsx
+++ b/packages/js/experimental-products-app/src/fields/sale_price/field.tsx
@@ -24,9 +24,6 @@ const fieldDefinition = {

 export const fieldExtensions: Partial< Field< ProductEntityRecord > > = {
 	...fieldDefinition,
-	isVisible: ( item ) => {
-		return !! item.on_sale || !! item.sale_price;
-	},
 	isValid: {
 		custom: ( item ) => validateSalePrice( item ),
 	},
diff --git a/packages/js/experimental-products-app/src/product-edit/utils.test.ts b/packages/js/experimental-products-app/src/product-edit/utils.test.ts
index c9656c5b737..69373177989 100644
--- a/packages/js/experimental-products-app/src/product-edit/utils.test.ts
+++ b/packages/js/experimental-products-app/src/product-edit/utils.test.ts
@@ -308,13 +308,12 @@ describe( 'product edit utils', () => {
 		const priceFieldIds = [
 			'price',
 			'regular_price',
-			'on_sale',
 			'sale_price',
 			'schedule_sale',
 			'date_on_sale_from',
 			'date_on_sale_to',
 		];
-		const basePriceFieldIds = [ 'regular_price', 'on_sale' ];
+		const basePriceFieldIds = [ 'regular_price', 'sale_price' ];
 		const managedStockFieldIds = [ 'manage_stock', 'stock_quantity' ];
 		const stockStatusFieldIds = [ 'stock', 'manage_stock' ];
 		const shippingFieldIds = [
@@ -350,7 +349,6 @@ describe( 'product edit utils', () => {
 				'product_status',
 				'catalog_visibility',
 				'regular_price',
-				'on_sale',
 				'sale_price',
 				'images',
 				'sku',
@@ -402,11 +400,7 @@ describe( 'product edit utils', () => {
 				} ),
 			] );

-			expectFieldOrder( fieldIds, [
-				'regular_price',
-				'on_sale',
-				'sale_price',
-			] );
+			expectFieldOrder( fieldIds, [ 'regular_price', 'sale_price' ] );
 		} );

 		it( 'hides shipping fields for virtual simple products', () => {
@@ -501,7 +495,7 @@ describe( 'product edit utils', () => {
 				'product_status',
 				'catalog_visibility',
 				'regular_price',
-				'on_sale',
+				'sale_price',
 				'images',
 				'external_url',
 				'button_text',
@@ -513,7 +507,6 @@ describe( 'product edit utils', () => {
 			] );
 			expectFieldsHidden( fieldIds, [
 				'price',
-				'sale_price',
 				'schedule_sale',
 				'date_on_sale_from',
 				'date_on_sale_to',
@@ -536,7 +529,6 @@ describe( 'product edit utils', () => {
 			expectFieldsHidden( fieldIds, [
 				'price',
 				'regular_price',
-				'on_sale',
 				'sale_price',
 				'schedule_sale',
 				'date_on_sale_from',
@@ -627,7 +619,6 @@ describe( 'product edit utils', () => {
 				expect.arrayContaining( basePriceFieldIds )
 			);
 			expectFieldsHidden( fieldIds, [
-				'sale_price',
 				'schedule_sale',
 				'date_on_sale_from',
 				'date_on_sale_to',
@@ -651,7 +642,6 @@ describe( 'product edit utils', () => {
 			expect( fieldIds ).toEqual(
 				expect.arrayContaining( [
 					'regular_price',
-					'on_sale',
 					'sale_price',
 					'images',
 					'sku',
@@ -689,7 +679,6 @@ describe( 'product edit utils', () => {
 					'images',
 					'sku',
 					'regular_price',
-					'on_sale',
 					'sale_price',
 					'stock',
 					'manage_stock',
@@ -767,7 +756,6 @@ describe( 'product edit utils', () => {
 			expect( fieldIds ).toEqual(
 				expect.arrayContaining( [
 					'regular_price',
-					'on_sale',
 					'sale_price',
 					...bulkSellableInstanceFieldIds,
 				] )
@@ -953,7 +941,6 @@ describe( 'product edit utils', () => {
 				'product_status',
 				'catalog_visibility',
 				'regular_price',
-				'on_sale',
 				'sale_price',
 				'images',
 				'downloadable',
@@ -984,7 +971,6 @@ describe( 'product edit utils', () => {

 			expect( getProductTypeFormFields( [ product ] ) ).toEqual( [
 				'regular_price',
-				'on_sale',
 				'sale_price',
 				'images',
 				'downloadable',
diff --git a/packages/js/experimental-products-app/src/product-edit/utils.ts b/packages/js/experimental-products-app/src/product-edit/utils.ts
index 77453d63940..9c1c4893f0a 100644
--- a/packages/js/experimental-products-app/src/product-edit/utils.ts
+++ b/packages/js/experimental-products-app/src/product-edit/utils.ts
@@ -88,7 +88,6 @@ const SIMPLE_PRODUCT_EDIT_FORM_FIELDS = [
 	'product_status',
 	'catalog_visibility',
 	'regular_price',
-	'on_sale',
 	'sale_price',
 	'images',
 	'downloadable',
@@ -105,7 +104,6 @@ const SIMPLE_PRODUCT_EDIT_FORM_FIELDS = [

 const VARIATION_PRODUCT_EDIT_FORM_FIELDS = [
 	'regular_price',
-	'on_sale',
 	'sale_price',
 	'images',
 	'downloadable',
@@ -144,7 +142,6 @@ const EXTERNAL_PRODUCT_EDIT_FORM_FIELDS = [
 	'product_status',
 	'catalog_visibility',
 	'regular_price',
-	'on_sale',
 	'sale_price',
 	'images',
 	'external_url',