Skip to content
Choose a tag to compare

SmartStore.NET 2.1.0

@muratcakir muratcakir released this
· 7764 commits to 4.x since this release
Choose a tag to compare


SmartStore.NET 2.1 is a developer- and designer-focused release with the main goal to drastically simplify plugin development, debugging & deployment, thus being an important milestone for our upcoming Plugin Marketplace.

With SmartStore.NET 2.1, plugins finally are first-class citizens, and theme development has never been easier:

  • Plugin assemblies can contain multiple providers now (e.g. shipping calculators, payment methods etc.)
  • Views in plugin source folders can be edited during debug. The changes are reflected adhoc without the need for recompilation.
  • No embedded views anymore. Views are copied to the deployment folder
  • No cumbersome return View("Very.Long.View.Identifier") anymore, just regular MVC areas.
  • Plugins can provide custom tabs more easily (now with on demand AJAX loading)
  • Theme inheritance: create derived child themes with minimum effort by overriding only small parts (static files and even variables)

Other highlights are:

  • New backend design and cleaner frontend theme
  • New theme variants Alpha Black and Alpha Blue
  • More comfortable catalog management & product editing
  • Increased performance, especially in the public frontend
  • Lower memory consumption
  • New payment plugins: Pay with Amazon & Accarda-Kar
  • Preview Mode: virtually test themes and shops more easily
  • Simplified checkout process
  • Buyer can add a comment during checkout
  • New Image Gallery component in public product details page
  • Support for hierarchical SEO slugs, e.g.: samsung/galaxy/s5/16gb/white
  • Better HTML editing with CKEditor (including media management & file upload)
  • Support for new EU VAT regulation for digital goods (2008/8/EG directive)
  • Import/Export for localized product data like Name, Short Description etc.
  • Lots of other new features, improvements and a lot of bugfixes

Full Release Notes

New Features

  • (Developer) Overhauled plugin architecture:
    • Plugins are regular MVC areas now
    • No embedded views anymore. Views get copied to the deployment folder
    • No cumbersome return View("Very.Long.View.Identifier") anymore
    • Views in plugin source folders can be edited during debug. The changes are reflected without plugin recompilation.
  • (Developer) Theme inheritance: create derived child themes with minimum effort by overriding only small parts (static files and even variables).
  • Preview Mode: virtually test themes and stores more easily
  • New payment plugin Pay with Amazon
  • Support for hierarchical SEO slugs, e.g.: samsung/galaxy/s5/16gb/white
  • (Developer) Model binding for plugin tab views: models from plugin tabs get automatically materialized and bound to TabbableModel.CustomProperties[MyKey]. Extended the SmartModelBinder for this.
  • (Developer) New event ModelBoundEvent. Consume this in plugins to persist plugin specific models.
  • (Admin) Added GMC tab to product edit view. This is more a coding example for the above stuff rather than a new feature.
  • (Developer) Implemented AdminThemedAttribute: instructs the view engine to additionally search in the admin area for views. Very useful in larger plugin projects.
  • (Developer) Enhanced IMenuProvider: menu items can now be injected to the public catalog menu
  • (Developer) Implemented IWidgetProvider. Allows request scoped registration of action routes to be injectable into widget zones. Perfect for custom action filters.
  • (Developer) Simple widgets: the model of the parent action view context now gets passed to a widget.
  • (Developer) New IoC method ContainerManager.InjectProperties()
  • Implemented support for EU VAT regulation for digital goods (2008/8/EG directive)
  • Implemented Media Manager for HTML editor (including file upload)
  • Added CDN setting to store configuration. Allows static files to be served through a content delivery network, e.g. cloudfront. (contributed by 'normalc')
  • #393 Web API: Implement OData actions for simpler working with product attributes
  • #431 Web API: Add support for localized properties
  • ShippingByWeight: new settings to configure a small quantity surcharge
  • #216 Better return request support
  • #90 Directly set order status to completed
  • #413 Orders: Add a PDF export\download of selected orders
  • #69 Award reward points for product reviews
  • #164 Add multistore support for polls
  • #170 Multistore support for Newsletters
  • #266 Update Pending Order in Admin Panel
  • #331 Show CommentBox in checkout (optional)
  • Option to turn off the filter for products in categories
  • Export/Import was enabeled to work with localized values for name, short description and long description


  • New backend design and cleaner frontend theme
  • Replaced TinyMCE HTML editor with CKeditor
  • Simplified checkout process by combining payment method and info pages
  • (Perf) Lower memory consumption
  • (Perf) (Developer) Client Dependency updates
    • jQuery 1.8.3 > 2.1.1 (although the backend is still using v1.8.3 because of the Telerik components)
    • FontAwesome 3 > 4.1
    • Modernizr 2.5 > 2.7.2
    • jQuery UI to 1.11
    • SearchBox uses Typeahead now instead of jQuery UI AutoComplete
    • Got rid of obsolete jQuery UI files (will remove this later completely)
  • (UI) AJAXified product edit tab: all tabs other than the first one load on demand per AJAX
  • (Developer) Plugins can provide custom tabs more easily (now with on demand AJAX loading)
  • Task Scheduler:
    • Can run tasks manually now (async)
    • Better UI
    • Shows last error
    • (Developer) Breaking change: New parameter TaskExecutionContext for ITask.Execute()
  • UI: TabStrips remember their last selected tab across page requests in an unobtrusive way (removed old selection code)
  • Price formatting: the DisplayLocale's FormatProvider was not applied when CustomFormatting was specified for Currency
  • Admin: Specification attributes are now sorted by DisplayOrder, THEN BY Name
  • Admin: Replaced DatePicker with DateTimePicker control
  • (Perf) significantly increased excel import performance... again ;-)
  • (Perf) significantly increased excel export performance and optimized memory usage
  • (Perf) SEO sitemap is being cached now, resulting in fast reponse times with larger catalogs
  • (UI) optimized and reorganized product edit view a bit
  • (Developer) MVC filter attributes are now Autofac injectable
  • (Developer) Implemented RunSync extension methods for Func and Func<Task>. A reliable way to execute async operations synchronously.
  • (Developer) Refactored model creation for category navigation: it now incorporates TreeNode, which enables plugin developers to alter the main menu with the event hook NavigationModelBuilt.
  • (Developer) Added user.less to Alpha theme for user defined css overrides and tweaks
  • (Developer) Moved PublicControllerBase to SmartStore.Web.Framework
  • (Developer) Moved 'AdminControllerBase' to SmartStore.Web.Framework
  • (Developer) Optimized Bundle handling
    • Html.Add[Script|CssFile]Parts() now can handle already bundled resources correctly (no attempt is made to bundle them, the bundle's virtual url is returned instead)
    • Made extra bundles for frequently used resources (like sequence js, fileupload, image gallery etc.). This way they always come compressed.
  • #384 Web API: Inserting sluged recources like products require an URL record
  • #382 Promotion feed plugins: Asynchronous feed creation, more options and improvements
  • #433 GMC feed: Option to filter config records that have not been edited
  • #362 Display 'from {0}' for products with variant attributes
  • #239 Categories: Ask merchant if he want a cascading or a non cascading deletion
  • HTML text collapser: Make it usable for all long texts
  • #375 Implement SKU search for 'related products picker'
  • #391 Admin: allow searching/filtering for specification attributes
  • Removed OpenID plugin from core
  • Specification attribute values that are assigned to a product can be edited


  • Twitter Auth: fixed SecurityTransparent error
  • Facebook Auth: fixed SecurityTransparent error
  • OpenID Auth: fixed SecurityTransparent error
  • #376 Product filtering: Category price range filter not working anymore
  • Return requests: Products to return won't be listed
  • #372 Biz-Importer sometimes shows inactive tier prices
  • PayPal Standard: Sending more localized values. Adjustment of net prices to avoid wrong PayPal total amount calculation.
  • Globalization fix in plugin data grids: inline editing for decimal values did not take current culture into account
  • #391 Show delivery time if out-of-stock orders are allowed by attribute combination
  • CustomerRole > TaxDisplayType Including VAT could not be saved
  • Product.DisableBuyButton was never updated when the stock quantity has been increased (e.g. as a result of order canceling)
  • Shipping.ByTotal: Fixed matching of rates by choosing the more specific over the common rate
  • A grouped product only shows up to 12 associated products
  • #405 Billiger feed: Wrong base price exported
  • #437 Mobile devices: Cannot add a product to the cart when it is grouped
  • PayPal Standard: Costs for checkout attributes were double charged
  • Paging of return request grid did not work
  • #428 Multiline checkout attributes aren't rendered correctly
  • #434 Shipping.ByTotal: Make grid pageable
  • #419 email account password hidden
  • #424 Localize return reasons & return actions
  • #479 Product filter: Wrong count of manufacturers if products of sub-categories are included
  • #492 Ipayment credit card: Order notes are only created when the order exists
  • #493 Postfinance plugin does not work if shopname includes a "umlaut"
  • #237 Mobile theme: inactive attribute combinations should not be added to cart
  • #178 Mobile theme doesn't display base price
  • Ipayment: Capturing did not work because the security was not transmitted
  • #405 "Reset Password" Link in Emails is wrong with SSL secured sites
  • #471 Checkout: Redirecting to external payment page could take a while. Clicking "Buy" button again might cancel the redirecting.
  • Pricing not considered attribute combination prices for bundles with per item pricing