-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 1.14.0 #4338
Release 1.14.0 #4338
Conversation
just something I noticed while debugging
…cleci-caches Invalidate circleci caches
Updates and pins prerender-node from 2.7.4 to 3.1.1 The breaking changes in 3.1.1 are the removal of support for Node 0.10 and 0.12 As we don't support these versions either, this should not cause any problems.
Updates to the lastest React 16.4.1 from 16.2.0
Updates to the latest react-dom 16.4.1 from 16.2.0
Update and pin react dates from 16.3.6 to 17.1.0
Update and pin prop-types from 15.6.0 to 15.6.2
Update and pin velocity-react from 1.3.3 to 1.4.1
Removes unused react-addons dependencies - react-addons-pure-render-mixin - react-addons-shallow-compare These are unused directly.
Update package-lock.json file Major updates - @babel scoped dependencies - @reactioncommerce/components dependencies - react based dependencies - react - react-dates / airbnb - react-dom Eliminates dependencies on several out-of-date packages with vulnerabilities - base64url@2.0.0 - lodash@4.0.0 - stringstream@0.0.5 - ua-parser-js@0.7.17 Reduces exposure to - tunnel-agent@4.0.3 - hoek@4.2.0
Removes the following .snyk ignore rules - npm:hoek:20180212 - npm:lodash:20180130 - npm:tunnel-agent:20170305 - npm:ua-parser-js:20180227 - npm:stringstream:20180511 - npm:deep-extend:20180409 - npm:base64url:20180511
…checkout-fixes Remove account from anon carts, don't use session for carts
…-num-accounts-affecting-startup #4384 Improve app startup time when large number of Accounts/Users exists
…vent-start_ Fix migration error preventing app startup
…mailer Fix 4343 Cannot set replyTo or other field options when using Reaction.Email.send
…moment-still-included #4454 Dynamically import Moment locales to reduce client bundle size
ActionView Component Typos
@aldeed does the "refactor: remove Accounts.loginWithAnonymous" PR change the way we handle anonymous users? Do anonymous users still have an |
Updates slugify version from 1.3.0 (^1.2.9) to 1.3.1 and pins to 1.3.1
Removes babel-plugin-syntax-dynamic-import @6.18.0 and babel-plugin-dynamic-import-node @1.2.0 from package-lock.json Both were removed automatically when running `meteor npm install`
Fixes a snyk reported vulnerability on react-dom by bumping our pinned version from 16.4.1 to 16.4.2
Chownr has a recently reported issue to snyk, though the issue itself has been known for over a year. isaacs/chownr#14 This issue has been introduced via sharp via tar and tar-fs npm packages We'll continue to follow this issue on the chownr repo. And I've added a comment to the issue thread. isaacs/chownr#14 (comment)
Updates pinned version of React from 16.4.1 to 16.4.2
Spencer update npm deps
@pmn4 There is no change to that aspect. Anonymous users still have a user and an account (for now). Only the That said, eventually we plan to not have accounts for anonymous users, as part of moving off Meteor accounts system in the 2.0 release. Since anonymous user = a specific device or browser, you could future proof code by storing info for anonymous "accounts" in local storage (fallback to session cookie) instead. Reaction client already depends on the "store" NPM package that makes that easy. |
…date-in-invoice #4504: Fix for date not displaying in printable invoice
Adds notes on the updates to the GraphQL Cart to the changelog. Also initialize a list of breaking changes introduced in 1.14.0 and update the list of PRs included.
Adds Breaking Changes and notable features to the CHANGELOG
Adds list of all new npm dependencies with versions, all changed dependencies with versions, and all removed dependencies for production.
TL;DR : Browsers
Process
|
v1.14.0
Removing Optional Plugins
As part of our focus simplifying the core Reaction application and improving performance, we've made the decision to remove optional plugins from the core application. From our blog post on this topic:
Here’s how it will look:
As the first step of this process we've moved a number of packages from the https://github.com/reactioncommerce/reaction repo to independent repositories in the new https://github.com/reaction-contrib organization. You can install these packages by following the instructions located inside of each new repository. Once installed they should work as they did in v1.13. Any issues you have with updating these packages should be filed in the repos created for these packages and not in the core Reaction repo going forward. If you're interested in contributing to or helping to maintain any of the packages that we've moved to reaction-contrib, please reach out to @zenweasel and he can get you setup.
The list of packages that have been removed in this release is as follows:
This work is listed as a breaking change. If your application relies on any of these packages, you will have to install them independently of Reaction going forward. This release will not destroy data associated with these plugins, so you should be able to safely update without losing information. However, please be sure to test this for your specific application before deploying to production and as always, backup your data before updating versions.
GraphQL Cart
This release contains the Cart and Checkout GraphQL schemas along with several cart queries and mutations. We're starting to make some changes to the core cart schemas for Reaction and the process that we use to create and identify carts.
One of these changes is when we create a cart for a customer. To this point, we've created a cart document for each and every visitor to a Reaction storefront. Going forward we'll be creating carts on demand. This means that a customer will not have a cart associated with them until they first add a product to the cart. This is how we've architected the GraphQL API to work and we've made some changes to the legacy Reaction cart system to put it in sync.
We're signifincantly adjusting the Cart schema as well. The best way to understand all of this will be to read through the updated GraphQL Cart Schema in #4307 and #4390 but I'll try to note some things to be aware of going forward.
A cart will have either an account associated with it or may be anonymous.
A cart will have an array of items associated with them. As we will be lazy in creating carts, when the cart is created this array of items will have at least one item in it. We do not destory carts if a customer removes all items from a cart, so it is possible that there will be an empty array of items inside of a cart.
One of the major changes to carts is related to how we store information necessary to create an order from a cart. We're introducing a new field
checkout
to the cart schema which you can dig into in #4309. This will be where fulfillment information, payment information, addresses and any other information necessary to process a checkout will be stored.Recognizing the need to be able to handle orders which have items that require different types of fulfillment, we're organizing items into what we're calling "Fulfillment Groups." The most basic example is that a fulfillment group could be a group of items that is getting shipped to a specific address. For an order with
n
items, there can exist up ton
fulfillment groups within that cart. This specific release doesn't introduce any new functionality for adding new types of fulfillment groups or splitting a single cart into multiple fulfillments, but it does lay the groundwork for splitting orders, creating new fulfillment types such as an in store pickup, ship to store, digital downloads, or generated license keys.We're currently mapping this new GraphQL Schema to the existing Reaction Simple Schema, but will be transitioning all of our existing schemas to match (more or less) our new GraphQL schemas going forward.
A cart will still be associated with a single shop. This is consistent with current behavior.
There are two GraphQL Queries for fetching carts, one for getting anonymous carts
anonymousCartByCartId
and one for getting account cartsaccountCartByAccountId
This release introduces GraphQL Mutations for creating carts, adding items to carts, removing items from carts, updating cart items, and reconciling carts when a customer with an anonymous cart logs into an account.
ReconcileCarts
is a new method which replaces and extends our previousmergeCarts
method with additional functionality. ReconcileCarts has 3 modes:merge
,keepAnonymousCart
, andkeepAccountCart
.merge
is the default mode and works identically to how the existingmergeCarts
method works, where the anonymous cart is combined with the account cart, items are deduped, and quantities are incremented to match the combined qty of the items in the carts.keepAnonymousCart
will keep only the items and the checkout information in the anonymous cart, andkeepAccountCart
will do the same but for the Account Cart.Breaking Changes
Meteor App
File Organization
/server
into plugins. All imports with paths that begin with /server will need to be changed for any custom code or community plugins. See the file changes in https://github.com/reactioncommerce/reaction/pull/4366/files to see examples of changing import paths from/server
to relevant plugin paths.Cart
cart/removeCart
Meteor method behavior is the same as before, but the return value is now{ cart }
Checkout
Tags
Other
createCatalogProduct
has been moved into it's own file. This function was not being exported and should not create any issues, but be aware.Logging
which was used only by the Avalara plugin to this point. If you relied on this plugin, you'll need to reinstall it.GraphQL
Notable Features
Deploy to Heroku Button
We've added a deploy to Heroku button which should appear in the project readme now. You can now deploy Reaction to Heroku by clicking the "Deploy to Heroku" button and then filling out hte information required by Heroku.
Hashing Products
We're now hashing products to determine when a product changes that have not been published to the Catalog. This shows up as an indicator on the publish button when viewing a product that has unpublished changes.
Serve js and css from CDN
We now provide an option to serve the bundled javascript and css files from a CDN. See #4316 for more information.
robots.txt
We've added a permissive default
robots.txt
file. This file permits all bots to crawl and disallows bots from crawling/resources
GraphQL DevServer
Features
resolveAccountFromAccountId
resolver (feat: AddresolveAccountFromAccountId
resolver #4495)Meteor App
Features
Fixes
Performance
Refactors
Plugin Migration
Chores
Contributors
Thanks to @pmn4 and @hrath2015 for contributing to this release 🎉
NPM Package Version Changes
This is a list of all new, changed, and removed dependencies that exist in our dependency graph for a production build. This does not include dev dependencies.
New Dependencies
Updated Dependencies
Removed Dependencies
Metrics
You don't improve what you don't measure. In efforts to improve the size of our bundles, the time to first paint, time to interactive, and overall performance of our applications, we're starting to report on bundle size and some performance metrics in every release. With effort and persistence, we'll see these numbers improve over time.
Bundle Size
We measure bundle size by building the application using
meteor build
and then measuring the js and css bundle size with the commandwc -c /path/to/js-bundle-file.js
JS Modern Browsers: 4872kb
JS Legacy Browsers: 5104kb
CSS All Browsers: 392kb