Commerce announcements: 0.10 release, public beta and Black Friday offer

We have a few exciting Commerce related announcements to share with you today.

We've just released Commerce 0.10. This is a massive release which includes 18 new features and improvements.

Also, Commerce is now in public beta! You no longer need to request an invite to use Commerce.

And finally, we have a huge Black Friday discount on Commerce. Save €100 on a license here. This offer ends Monday 27th at 9:00am GMT.

Let's take a look at what's new in Commerce 0.10. [Update: we've also released 0.10.0-rc2 with even more improvements]

New address-related functionality

The checkout in Commerce now has some additional address related functionality. A customer can now choose an address they've used previously, which allows them to move through the checkout quicker.

A new Default Address module also lets you configure the default country and/or state. This allows Commerce to calculate the right tax amount before the customer has filled in their address details.

Dashboard now loads with AJAX & more improvements

The back-end dashboard has been fully AJAXed! You no longer have to wait for the entire manager to reload on each page when navigating Commerce, making it faster and more enjoyable to work with. This also supports the browser previous/next navigation.

Select inputs are now enhanced (with Choices.js) to allow searching, modals are the right size and open at the top of the screen, and there's also a new setting that lets you hide the beta warning.

Lots of bug fixes, too!

This release also fixes a lot of bugs (16!) that have been reported. This includes a fix which prevented the default checkout CSS from being disabled, validation feedback not showing up in the dashboard, the beta warning saying Commerce was alpha, the get_cart snippet not loading the most recent items, and a lot more.

Commerce 0.10 is currently available as a pre-release for testing. To install it, enable the pre-releases channel on the API Key you used for our Package Provider. No invite necessary!

Changelog for 0.10.0-rc1

New features:

  • [checkout] Logged-in customers can now choose to remember addresses, which are offered during checkout [#167]
  • [dashboard] The dashboard is now progressively enhanced to use AJAX for navigation [#104]
  • [dashboard] New CountryField input type which is filled with a country list
  • [dashboard] New commerce.show_beta_warning setting that allows you to hide the beta warning [#204]
  • [dashboard] Enhance select fields with Choices.js to allow searching through options
  • [emails] New commerce.email_reply_to and commerce.email_from settings to control the outgoing addresses [#198]
  • [modules] New Default Address module to specify a standard state and country to use
  • [payments] It's now possible to register custom payment methods [#177]
  • [shipping] The shipping cost threshold (min/max) order field can now be configured with the shipping_total_field setting [#200]


  • [checkout] Country field now defaults to an empty value instead of Afghanistan if no country is known
  • [core] comOrderItem now has a delivery_type field.
  • [core] Added additional indices to comAddress
  • [dashboard] Fix action buttons breaking out of modal after save or fields being enhanced
  • [dashboard] Automatically scroll to the top of the modal when opened/submitted instead of lurking in the middle
  • [modules] Basic Address Validation module now properly uses lexicons for the billing/shipping address name when presenting an error [S14678]
  • [orders] Default address modules no longer (have to) set placeholders for the address to be picked up in the checkout
  • [orders] New method comOrder->getCurrency() added as more fault-tolerant way to access the current currency, and set it if missing (primarily in tests or custom code)
  • [products] Accept shorter product SKUs (1 character) and name (2 characters) [S13309]

Bug fixes:

  • [addresses] The comAddress->Order relation was incorrect, and has been replaced with a correct comAddress->Orders relation.
  • [checkout] Fix default CSS being loaded even if the register_checkout_css setting is disabled
  • [checkout] Fix potential E_FATAL when calculating taxes on an order without any (or an invalid) expected address [S15585]
  • [dashboard] Fix validation feedback being missing when submitting forms [#174]
  • [dashboard] Fix hardcoded "Actions" label
  • [dashboard] Update warning in dashboard from alpha to beta
  • [dashboard] Fix inability to empty out text fields [#209]
  • [dashboard] Show the name of the tax group when editing tax rules
  • [products] Fix weight unit always defaulting to kg for new products [#175]
  • [products] Add missing resourceproduct.delivery_type_field setting and implementation to specify delivery type on resource products [#188]
  • [products] Fix "PHP warning: min(): Array must contain at least one element" in product bundles
  • [products] Fix bundle products incorrectly attempting to set the weight value, causing it to never store the weight [#199]
  • [products] Make sure resource products fall back to the default_tax_group setting if its value isn't set in a TV [#202]
  • [snippets] Fix "commerce.no_orders_yet" message not having access to the right lexicon topic [S13113]
  • [snippets] Fix get_cart snippet not loading most recent items
  • [shipping] Fix weight shipping methods not being available when maximum weight was set to 0

Template / Design changes:

  • For the new previous address feature, the frontend/checkout/address.twig template has changed a fair bit. Please double check your implementation if you use the default templates with custom CSS.
  • The same address.twig template has also been broken up into more partials, to allow more selective template overrides. This includes billing-address-fields.twig and shipping-address-fields.twig templates.
  • Input elements in the address step now have a height and display: block; set in the default CSS and no more margin. The fieldset was changed into a div, legends were replaced with a heading.

Deprecations / Internal Changes:

  • Two methods of modmore\Commerce\Frontend\Steps\Shipping have been moved to comOrder. These are getShipments() and getItemsByDeliveryType(). A deprecated method that passes it through to the comOrder has been added on the Shipping class, which will be removed before 1.0. If you have a custom Shipping step class that calls these methods, please update those.
  • The Address class was changed a fair bit, as did its default template. If you use a custom child class, please double check your implementation.