Skip to content

Conversation

@docloulou
Copy link
Contributor

@docloulou docloulou commented Dec 10, 2025

Summary

What — What changes are introduced in this PR?

Initialize empty currency_prices and region_prices objects for all product variants in the price list edit form, regardless of whether they have existing prices.

Why — Why are these changes relevant or necessary?

When editing a price list with many products/variants, the DataGrid uses virtualization to only render visible rows. The form uses Controller from react-hook-form which only registers fields when the component is rendered.
Previously, variants without existing prices were initialized with an empty object {} instead of the expected structure { currency_prices: {}, region_prices: {} }. This caused Zod validation to fail on unrendered (virtualized) rows because the schema requires both currency_prices and region_prices properties to exist.
As a result, users had to scroll through the entire DataGrid to render all cells before being able to submit the form.

How — How have these changes been implemented?

Modified the initRecord function in price-list-prices-edit-form.tsx to always initialize variants with the complete structure containing empty currency_prices and region_prices objects, matching the pattern already used in the price list add form.

Testing — How have these changes been tested, or how can the reviewer test the feature?

  1. Create a price list with many products (enough to trigger virtualization)
  2. Ensure some variants have no existing prices
  3. Open the price list edit form
  4. Try to submit without scrolling to the end
  5. Verify the form submits successfully without validation errors

Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.
This helps with documentation and ensures maintainers can quickly understand and verify the change.

// Example usage

Checklist

Please ensure the following before requesting a review:

[ ] I have added a changeset for this PR
Every non-breaking change should be marked as a patch
To add a changeset, run yarn changeset and follow the prompts
[ ] The changes are covered by relevant tests
[x] I have verified the code works as intended locally
[ ] I have linked the related issue(s) if applicable


Additional Context

This fix aligns the price list edit form with the existing implementation in the price list add form (price-list-prices-add-prices-form.tsx), which already initializes variants with the complete structure.

before :

before.mp4

after :

after.mp4

Note

Always initialize each variant with { currency_prices: {}, region_prices: {} } in the price list edit form to ensure schema-compliant defaults.

  • Price List Edit Form (price-list-prices-edit-form.tsx):
    • Ensure each variant in initRecord is initialized with { currency_prices: {}, region_prices: {} }.
    • Prevents empty {} variant entries by defaulting missing currency_prices and region_prices to empty objects.

Written by Cursor Bugbot for commit 85fba66. This will update automatically on new commits. Configure here.

@docloulou docloulou requested a review from a team as a code owner December 10, 2025 16:53
@changeset-bot
Copy link

changeset-bot bot commented Dec 10, 2025

🦋 Changeset detected

Latest commit: d066d6f

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 75 packages
Name Type
@medusajs/dashboard Patch
@medusajs/admin-bundler Patch
@medusajs/medusa Patch
@medusajs/test-utils Patch
@medusajs/medusa-oas-cli Patch
integration-tests-http Patch
@medusajs/analytics Patch
@medusajs/api-key Patch
@medusajs/auth Patch
@medusajs/caching Patch
@medusajs/cart Patch
@medusajs/currency Patch
@medusajs/customer Patch
@medusajs/file Patch
@medusajs/fulfillment Patch
@medusajs/index Patch
@medusajs/inventory Patch
@medusajs/link-modules Patch
@medusajs/locking Patch
@medusajs/notification Patch
@medusajs/order Patch
@medusajs/payment Patch
@medusajs/pricing Patch
@medusajs/product Patch
@medusajs/promotion Patch
@medusajs/region Patch
@medusajs/sales-channel Patch
@medusajs/settings Patch
@medusajs/stock-location Patch
@medusajs/store Patch
@medusajs/tax Patch
@medusajs/translation Patch
@medusajs/user Patch
@medusajs/workflow-engine-inmemory Patch
@medusajs/workflow-engine-redis Patch
@medusajs/draft-order Patch
@medusajs/oas-github-ci Patch
@medusajs/cache-inmemory Patch
@medusajs/cache-redis Patch
@medusajs/event-bus-local Patch
@medusajs/event-bus-redis Patch
@medusajs/analytics-local Patch
@medusajs/analytics-posthog Patch
@medusajs/auth-emailpass Patch
@medusajs/auth-github Patch
@medusajs/auth-google Patch
@medusajs/caching-redis Patch
@medusajs/file-local Patch
@medusajs/file-s3 Patch
@medusajs/fulfillment-manual Patch
@medusajs/locking-postgres Patch
@medusajs/locking-redis Patch
@medusajs/notification-local Patch
@medusajs/notification-sendgrid Patch
@medusajs/payment-stripe Patch
@medusajs/core-flows Patch
@medusajs/framework Patch
@medusajs/js-sdk Patch
@medusajs/modules-sdk Patch
@medusajs/orchestration Patch
@medusajs/types Patch
@medusajs/utils Patch
@medusajs/workflows-sdk Patch
@medusajs/cli Patch
@medusajs/deps Patch
@medusajs/telemetry Patch
@medusajs/admin-sdk Patch
@medusajs/admin-shared Patch
@medusajs/admin-vite-plugin Patch
@medusajs/icons Patch
@medusajs/toolbox Patch
@medusajs/ui-preset Patch
create-medusa-app Patch
medusa-dev-cli Patch
@medusajs/ui Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link

vercel bot commented Dec 10, 2025

@docloulou is attempting to deploy a commit to the medusajs Team on Vercel.

A member of the Team first needs to authorize it.

@docloulou
Copy link
Contributor Author

docloulou commented Dec 18, 2025

@adrien2p @carlos-r-l-rodrigues Hi, is there any chance of including this in the next release? Thanks!

Copy link
Member

@adrien2p adrien2p left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! @olivermrbl any objections to that, that I might have missed?

Copy link
Contributor

@fPolic fPolic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants