Commit 2737230b5b for woocommerce

commit 2737230b5b89bd921a32f84a255733faa1844fd9
Author: louwie17 <lourensschep@gmail.com>
Date:   Mon Nov 17 01:58:18 2025 +0100

    Fix issue where calendar dropdown showed error (#61971)

    * Fix issue where query was saving undefined values as string

    * Check if moment date is valid, before changing it.

    * Add changelog

diff --git a/packages/js/components/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error b/packages/js/components/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error
new file mode 100644
index 0000000000..d6e97bef09
--- /dev/null
+++ b/packages/js/components/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error
@@ -0,0 +1,4 @@
+Significance: minor
+Type: fix
+
+Make date handling within DateRange component more robust, for scenarious where a wrong moment date is used.
diff --git a/packages/js/components/src/calendar/date-range.js b/packages/js/components/src/calendar/date-range.js
index 32386a76a0..b1c39388a9 100644
--- a/packages/js/components/src/calendar/date-range.js
+++ b/packages/js/components/src/calendar/date-range.js
@@ -157,7 +157,9 @@ class DateRange extends Component {

 	setTnitialVisibleMonth( isDoubleCalendar, before ) {
 		return () => {
-			const visibleDate = before || moment();
+			const isValidMoment =
+				before && moment.isMoment( before ) && before.isValid();
+			const visibleDate = isValidMoment ? before : moment();
 			if ( isDoubleCalendar ) {
 				return visibleDate.clone().subtract( 1, 'month' );
 			}
diff --git a/packages/js/components/src/date-range-filter-picker/index.js b/packages/js/components/src/date-range-filter-picker/index.js
index 85bb057c3a..410414435a 100644
--- a/packages/js/components/src/date-range-filter-picker/index.js
+++ b/packages/js/components/src/date-range-filter-picker/index.js
@@ -35,6 +35,7 @@ class DateRangeFilterPicker extends Component {
 		if (
 			date &&
 			date._isAMomentObject &&
+			date.isValid() &&
 			typeof date.format === 'function'
 		) {
 			return date.format( format );
diff --git a/plugins/woocommerce/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error b/plugins/woocommerce/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error
new file mode 100644
index 0000000000..081b2f1fc9
--- /dev/null
+++ b/plugins/woocommerce/changelog/wooplug-5859-wp-69-month-must-be-a-valid-moment-object-error
@@ -0,0 +1,4 @@
+Significance: minor
+Type: fix
+
+Fix issue where updating the woocommerce_default_date_range option was saving stringified undefined values.
diff --git a/plugins/woocommerce/client/admin/client/analytics/settings/default-date.js b/plugins/woocommerce/client/admin/client/analytics/settings/default-date.js
index 22c1f99909..939409a38b 100644
--- a/plugins/woocommerce/client/admin/client/analytics/settings/default-date.js
+++ b/plugins/woocommerce/client/admin/client/analytics/settings/default-date.js
@@ -16,10 +16,15 @@ const DefaultDate = ( { value, onChange } ) => {
 	const { woocommerce_default_date_range: defaultDateRange } =
 		wcAdminSettings;
 	const change = ( query ) => {
+		const sanitizedQuery = Object.fromEntries(
+			Object.entries( query ).filter(
+				( [ , queryValue ] ) => typeof queryValue !== 'undefined'
+			)
+		);
 		onChange( {
 			target: {
 				name: 'woocommerce_default_date_range',
-				value: new URLSearchParams( query ).toString(),
+				value: new URLSearchParams( sanitizedQuery ).toString(),
 			},
 		} );
 	};