The main focus of this release was Social Login and lazy API data loading in Storefront.

Social Login

Ability to sign in via external login providers (Google, Facebook, etc.) on Storefront:

Documentation for developers is here.

Storefront lazy API data loading and render time pagination in Liquid templates

Next Liquid context properties will be accessed by using lazy loading and support render-time pagination: Collections, Products, Collection, Collection.Products, Collection.Tags, Customer.QuoteRequests, Customer.Orders, Customer.Addresses.

We define special IMutablePagedList<T> abstraction to represent paged collection with lazy loading support and pagination setting changes (slicing).

Declaration:

Definition:

Usage in Liquid:

Unique SEO keywords within one tenant (Store)

Now Categories and Products can have unique SEO information defined for each store. This feature allows to maintain URL uniqueness when multiple products with the same SEO are exposed within one store.

Another useful scenario is to use different SEO for a single product sold in different stores.

Product SEO management for "Electronics" store

Store settings

Individual settings for each store added. That is in addition to Dynamic properties that we had already:

Individual asset container for each store

Manage assets for each store independently. A dedicated folder for each store now exists in the assets management system. Access and manage assets directly from store:

Other improvements

  • New "Memory" Hangfire job storage type added. It’ll be used by default instead of database based storage;
  • Permalinks in blogs and pages made more compatible with Jekyll permalinks.

Platform API changes

New methods

  • GET /api/members/ - Get member by id. Member is a base type for multiple derivative types such as Organization, Contact or other custom type;
  • DELETE /api/members - Delete members by ids;
  • POST /api/members - Create new member (of concrete, known member type). (Not finished, will be done in next releases);
  • PUT /api/members - Update any member. (Not finished, will be done in next releases).

Obsolete methods