Reaction Commerce v1.9.0 Release Notes

  • πŸš€ This release contains a lot of fixes, some of them performance related and several enormous refactors. The three biggest changes are:

    πŸ‘€ 1. We've migrated from the Meteor version of Simple Schema to the npm version. See notes in the breaking changes section below. πŸ“¦ 2. We've dropped our dependency on the deprecated Meteor-CollectionFS package. We've replaced it with an npm package we've created called reaction-file-collections

    1. We've created a new catalog collection for use on the Product Grid when viewed by a consumer or other user without a product admin role

    πŸ›  There's a full list of changes and fixes below, as well as detailed explanations of potential breaking changes and what you might need to do to migrate

    πŸ’₯ BREAKING CHANGES

    πŸ“¦ This is a breaking change for any plugin that implements or modifies a schema based on the Meteor simple-schema package.

    ⚑️ From the Simple Schema update

    πŸš€ This PR updates the aldeed:simple-schema Meteor package dependency to instead depend on the simpl-schema NPM package, which is the newest release of the same library. As part of this change, there are several breaking changes and other gotchas to be aware of.

    πŸš€ IMPORTANT! The NPM package does not play nice with the previous Meteor package. After updating to this Reaction release, run the app one time, and then look at the .meteor/versions file. Make sure that aldeed:simple-schema is not listed. If it is there, that is because you depend on another Meteor package that depends on aldeed:simple-schema. You will have to update or remove any such packages (with meteor remove / meteor add) until aldeed:simple-schema disappears from your .meteor/versions file. Search your app for any import { SimpleSchema } from "meteor/aldeed:simple-schema" lines that you have added in your custom code, and replace them with import SimpleSchema from "simpl-schema" πŸ“¦ Be aware that the package name does not have the "e" on "simpl". (There is a different NPM package called simple-schema with the "e", and that is NOT the one you want.) ⚑️ If you have your own custom schemas, refer to the SimpleSchema changelog to update them for the breaking changes: https://github.com/aldeed/meteor-simple-schema/blob/master/CHANGELOG.md#200 πŸ”€ If you use attachSchema in your code, be aware that passing an array to attachSchema will no longer work. You should first merge all the schemas and then pass the combined schema to attachSchema

    Please read the PR if you need more details Use NPM SimpleSchema rather than Meteor #3331

    From the removal of CollecitonFS

    If you've saved the file URLs anywhere, they're now different.

    /assets/files/:collectionName/:fileId/:filename
    

    becomes

    /assets/files/:collectionName/:fileId/:primaryStoreName/:filename
    

    and

    /assets/files/:collectionName/:fileId/:filename?store=storeName
    

    becomes

    /assets/files/:collectionName/:fileId/:storeName/:filename
    

    ⚑️ We've deleted some unused Blaze templates rather than update URL handling within them:

    • shopBrandImageOption
    • ordersListItems
    • select
    • upload
    • productMetaField
    • productMetaFieldForm
    • metaComponent
    • productDetailEdit
    • productDetailField
    • productImageGallery
    • imageDetail
    • imageUploader
    • productSocial
    • variantList
    • variant
    • Media-related publishing is changed and improved:

    🚚 Publications have been added, removed, or changed:

    • 🚚 CartItemImage publication is removed
    • CartImages now takes an ID
    • βž• Added ProductGridMedia to replace Media being included with the products publication for the grid
    • βž• Added ProductMedia
    • βž• Added OrderImages, similar to CartImages, used for order now rather than reusing CartImages

    Full notes on the PR to replace CFS #3782

    From the customer product catalog

    πŸ”Œ The old imports/plugins/included/product-variants/containers/productsContainer.js has been renamed to productsContainerAdmin.js and a new component named productsContainer.js now handles which products container to load based on the user's permissions. Full notes on the PR #3876

    ⚑️ From the Dockerfile updates

    🚚 reactioncommerce/base:v4.0.1 removed the following:

    • βœ‚ Removed the conditional MongoDB installation (via \$INSTALL_MONGO env). Use mongo as a service in docker-compose, see example in README.
    • βœ‚ Removed the conditional PhantomJS installation (via \$INSTALL_PHANTOMJS env). If PhantomJS is required in your build, you can include it in your custom Dockerfile. Full notes on the PR

    ⚑️ Dockerfile Updates

    • ⚑️ Base image updated to reactioncommerce/base:v4.0.1 which has:
      • node:8.9.4 as base image (same Debian base as before, but with Node 8 preinstalled)
      • Meteor 1.6.1 preinstalled
    • πŸ— Multi-stage build support. This helped reduce the size of the production image by removing un-required dependencies.
    • Final production bundle uses node:8.9.4-slim

    🐳 Docker Compose changes

    • ⚑️ Updated existing docker-compose.yml to serve as the config for running a local development environment.
    • βž• Added a new docker-compose-demo.yml for testing out production builds (this is the replacement for the previous docker-compose.yml).

    ⬆️ Upgrades

    • πŸ‘‰ Use NPM SimpleSchema rather than Meteor (#3331)

    CI

    ⚑️ We've updated our circle ci config to use v2 of Workflows. This permits us to run additional automated tests on circle instead of using other services. We now have 6 workflow steps that must pass before a PR can be merged.

    πŸ”¨ Refactors

    • πŸ”¨ refactor: rename Import to Importer (#3613) .. Resolves ##1364
    • πŸ”¨ refactor: convert search modal wrapper to React (#3853)
    • πŸ”¨ refactor: replace CFS (#3782)
    • πŸ”¨ refactor: customer product grid publishing (#3876) .. Resolves #3662
    • πŸ”¨ refactor: remove unused collection hook (#3950)

    πŸ›  Fix

    • πŸ›  fix: inventory updated on shopify sync (#3897) .. Resolves #3718
    • πŸ›  fix: settings startup error (#3939)
    • πŸ›  fix: email validation (#3899) .. Resolves #3733
    • πŸ›  fix: change all email verification links to use tokens (#3884)
    • πŸ›  fix: update shopId the right way. (#3947) .. Resolves #3945
    • πŸ›  fix: migration version after SimpleSchema NPM merge (#3929)
    • πŸ›  fix: ui glitches using dynamic merchandising (#3932)
    • πŸ›  fix: setting or changing a products perma-link causes hard refresh (#3755) .. #2246
    • πŸ›  fix: removing search-mongo plugin causes errors at startup (#3837) .. Resolves #3797
    • πŸ›  fix: Reaction.getShopId missing () (#3891)
    • πŸ›  fix: added delay and loader (#3796) .. #2863
    • πŸ›  fix: add back missing browser policy (#3894)
    • πŸ›  fix: discount codes limits are not honored (#3824) .. #3783
    • πŸ›  fix: remove cfs:graphicsmagick (#3869) .. Resolves #3868
    • πŸ›  fix: password validation (#3860) .. Resolves #3854
    • πŸ›  fix: set localstorage even when no Meteor.user exists (#3856) .. Resolves #3846
    • πŸ›  fix: handle misconfigured Avalara api (#3827) .. Resolves #3813
    • πŸ›  fix: fix for "capturing bulk orders throws server side error" (#3822) .. Resolves #3705
    • πŸ›  fix: shop switcher opens off-screen (#3809) .. Resolves #3619
    • πŸ›  fix: /shop added to URL (#3794) .. Resolves #2810
    • πŸ›  fix: adding country code to phone number before sending SMS (#3751) .. Resolves #3597
    • πŸ›  fix: changing the permalink before publishing a product results in "not found" (#3748)
    • πŸ›  fix: errors when updating default shipping and billing addresses (#3802)
    • πŸ›  fix: delayed response in localization settings (#3872)
    • πŸ›  fix: handle integer schema type when getting form field type (#3930)
    • πŸ›  fix: check for number if sms is enabled. (#3983) .. Resolves #3965
    • πŸ›  fix: marketplace shipping (#3981) .. Resolves #3979
    • πŸ›  fix: summary not shown in Invoice (#3989)
    • πŸ›  fix: dirty badge in product grid does not work (#3984)
    • πŸ›  fix: reactivity error when products are not published yet (#3970)
    • πŸ›  fix: global route hooks (#3896) .. Resolves #3895
    • πŸ›  fix: added all the missing avalara settings fields to the fieldsProps… (#3969)
    • πŸ›  fix: publishing group related to current shop (#3943) .. Resolves #3942
    • πŸ›  fix: break payment before sending to paypal (#3859) .. Resolves #1236
    • πŸ›  fix: delete shipping rates one at a time (#3968)
    • πŸ›  fix: card validator (#3892) .. Resolves #3875
    • πŸ›  fix: can't input refund properly (#3893) .. Resolves #3703
    • πŸ›  fix: clean paymentMethod objects before validating (#3961)
    • πŸ›  fix: console error during checkout (#3948)

    Chore

    • πŸ‘• chore: add imports/plugins/custom to eslint ignore (#3901)
    • ⚑️ chore: update Docker base for multi-stage builds (#3653)
    • chore: use circleci workflows 2 in circle config (#3959)
    • 🚚 chore: remove ability to load Meteor.settings from settings.json (#3951)
    • ⬆️ chore: upgrade react-dates to 16.3.6 (#3952)

    πŸ“„ Docs

    • πŸ“„ docs(jsdoc) - document and namespace Router.Hooks methods (#3874) .. Resolves #3840

    Contributors

    πŸš€ Thanks to @pmn4 for contributing to this release!