Releases: magento/pwa-studio
v9.0.0
Release 9.0.0
NOTE:
This changelog only contains release notes for PWA Studio and Venia 9.0.0.
For older release notes, see [PWA Studio releases][].
Table of contents
- What's new in 9.0.0
- Pull requests merged in this release
- Known issues
- Upgrading from a previous version
What's new in 9.0.0
PWA Studio 9.0.0 contains new features, refactors, and various improvements.
IMPORTANT:
Due to an issue with the scaffolding tool released in 9.0.0, we released 9.0.1 quickly to resolve this issue.
Extensibility framework improvements
This release adds several improvements to the extensibility framework in PWA Studio to make it easier for developers to customize their storefronts.
For an overview of this framework, check out the new Extensibility framework topic on the docs site.
In previous releases, Peregrine talons had limited Target coverage.
This release adds an automatic API generator to Peregrine that exposes all hooks and talons as Targets.
Now, existing and future hooks and talons in Peregrine automatically get their own Targets API that developers may use to modify or extend functionality.
This release also adds the Targetables feature to the extensibility framework.
These represent source files used in your PWA Studio project, and
they give developers the ability to change the source code during the build process.
With Targetables, developers no longer have to copy PWA Studio source code into their storefront projects to make minor modifications.
PWA Studio extensions
PWA Studio's extensibility framework lets developers create extensions and install them as project dependencies in their storefronts.
As part of the work on the new extensibility framework, we refactored and relocated existing Venia features into PWA Studio extensions.
We also developed new extensions that provide useful Venia features that developers can add to their projects.
The source code for these extensions are available under the packages/extensions
directory in the PWA Studio repository.
upward-security-headers
: intercepts build targets to add security headers to UPWARD
venia-adobe-data-layer
: provides Adobe Client Data Layer support for your project
venia-sample-backends
: provides demo Magento backends and backend validation utilities for your project
(this extension should be removed prior to going live)
venia-sample-language-packs
: provides example translations to illustrate how new languages can be installed into your storefronts
Internationalization and localization
The internationalization(i18n) feature in PWA Studio lets developers localize their storefront content according to different regions and languages.
The Magento backend provides your storefront with this list of regions and languages and the I18n feature provides translated content using PWA Studio language pack extensions.
As part of the i18n feature work, we refactored Venia UI components and gave them the ability to display the correct translations for multi-language storefronts.
This release also gives developers the ability to develop and install PWA Studio language packages as NPM dependencies.
An example of a language pack extension is in the packages/extensions
directory in the PWA Studio repository.
For more information, read the new topic on the Localization feature.
My Account
This release adds components that support My Account features for customers that create an account with a store.
My Account features included in this release:
- Wishlist
- Saved Payments
- Address Book
- Order History
Increased test coverage
Our continued commitment to stability and quality has seen an increase in overall unit test code coverage.
Coverage as reported by coveralls.io:
Current coverage (9.0.0)
: 84.19%
Previous coverage (8.0.0)
: 79.21%
Magento release support change
Previous releases of PWA Studio supported multiple versions of the Magento back-end.
To help us deliver value faster, we modified our support matrix.
Starting with PWA Studio & Venia 9.0.0, we will only support the most recent version of Magento.
For example, version 9.0.0 only supports Magento 2.4.2.
Minor versions of PWA Studio & Venia released between typical Magento releases will support the last publicly available release.
Pull requests merged in this release
Venia (storefront and visual component library)
Description | Change type | PR |
---|---|---|
Created UI skeleton for Saved Payments | Feature | [#2671][] |
Created component for displaying account information | Feature | [#2672][] |
Added ability for shoppers to change locale using a store view switcher | Feature | [#2686][] |
Created the main view for Wishlist | Feature | [#2692][] |
Added the expanded view in the order history table | Feature | [#2703][] |
Created a currency switcher component | Feature | [#2728][] |
Added USE_STORE_CODE_IN_URL environment variable configuration |
Feature | [#2735][] |
Created Wishlist UI | Feature | [#2766][] |
Added ability to determine whether to unmount or just hide child components in the Dialog component | Feature | [#2767][] |
Added ability to remove products from Wishlist | Feature | [#2793][] |
Added a "maskable icon" to Venia for Google Lighthouse | Feature | [#2818][] |
Created message to display when no allowed or configured payment methods are present | Feature | [#2855][] |
Created the main view for Address Book in My Account | Feature | [#2857][] |
Added ability to Add and Edit addresses in the Address Book | Feature | [#2879][] |
Created the main view for Saved payment methods | Feature | [#2882][] |
Added ability to delete Address from Address Book | Feature | [#2888][] |
Created new Sign In view for Checkout flow | Feature | [#2889][] |
Updated logic for routes handling to accept an array of paths | Feature | [#2893][] |
Replaced hardcoded root category id with an actual value retrieved from a query | Feature | [#2902][] |
Added search by order number feature to the order history page | Feature | [#2916][] |
Added pagination for Order History | Feature | [#2928][] |
Refactored Edit Payment to use Dialog component | Refactor | [#2806][] |
Refactored Edit Product to use Dialog component | Refactor | [#2824][] |
Refactored Payment feature to make it extendable | Refactor | [#2838][] |
Added access to checkout's useOverview() talon |
Update | [#2636][] |
Updated the Search trigger button in the site header to behave like My Account and Cart trigger buttons | Update | [#2685][] |
Replaced the ProductQuantity component on the Product page with a QuantityFields stepper component | Update | [#2690][] |
Localized My Account and Signed In sidebar | Update | [#2721][] |
Localized Mini Cart and Search | Update | [#2734][] |
Localized Cart | Update | [#2740][] |
Localized Checkout page | Update | [#2759][] |
Localized CMS | Update | [#2764][] |
Localized Category page | Update | [#2771][] |
Localized Product page ... |
v8.0.0
Release 8.0.0
NOTE:
This changelog only contains release notes for PWA Studio 8.0.0.
For older release notes, see [PWA Studio releases][].
Table of contents
- What's new in 8.0.0
- Pull requests merged in this release
- Known issues
- Upgrading from a previous version
What's new in 8.0.0
PWA Studio 8.0.0 contains new features, refactors, and various improvements.
Improved performance
A lot of work has been done in this release to improve storefront performance.
This means that any project using the latest PWA Studio components will benefit from these updates.
One of the bigger changes is the migration to Apollo Client 3.0.
This version of the Apollo Client provides better cache controls and better network fetching performance in general.
This release also includes various refactors and improvements on the GraphQL queries themselves to reduce the API request times from Magento.
Complete cart and checkout experience
This release finishes the full page cart and checkout features introduced in previous releases.
The complete cart and checkout workflow is based on research made by members of the UX team.
Storefront developers can use this streamlined process as implemented or they can use the different components to customize their own cart and checkout workflow.
Shopping Bag feature
In addition to the complete full page cart and checkout experience, this release introduces a new Mini-Cart/Shopping Bag feature.
This feature is a floating modal that appears when you click on the shopping bag icon.
It replaces the old MiniCart
component, which previously appeared as a drawer from the right side of the app.
Instead of competing with the full page cart feature, it only contains a subset of actions, such as removing an item and checking out.
For additional modifications to cart products, it links to the cart page.
Developers can still use the old MiniCart
component in their projects, but it has been renamed to LegacyMiniCart
.
Branding updates
The UX team continues in their research to improve the look and feel of the Venia brand.
This release includes many style updates to give the Venia storefront a more modern and accessible experience.
Developers get all these improvements right away when they start their projects using this version of Venia as the base storefront or by upgrading their dependencies.
My Account code preview
This releases includes a sneak peak at features associated with My Account, such as Wishlist, Order History, and Address Book.
Even though the Communications Page is the only navigable page, curious developers can peek at the 8.0.0 release codebase to see the initial code for these features.
Targets reference documentation
During 8.0.0 development, the PWA Studio doc site has published reference documentation for extensibility targets in the different packages.
This documentation contains API descriptions and sample code to help developers discover the different PWA Studio extension points.
Pull requests merged in this release
Venia (storefront and visual component library)
Description | Change type | PR |
---|---|---|
Implemented initial code for the new MiniCart component | Feature | [#2494][] |
Created new components for an account menu | Feature | [#2550][] |
Created components for a Newsletter Subscription page | Feature | [#2571][] |
Implemented initial code for an Order History page | Feature | [#2611][] |
Implemented a way to access top/intermediate level categories through the left nav | Feature | [#2616][] |
Implemented initial UX and workflow for a Forgot Password feature for My Account | Feature | [#2619][] |
Implemented initial code for Wishlist | Feature | [#2620][] |
Implemented the ability to translate Venia's header / footer | Feature | [#2643][] |
Added ability to allow PWA Studio to use a different store to localize CMS Pages | Feature | [#2649][] |
Implemented initial code for Address Book | Feature | [#2653][] |
Implemented initial code for an Order History table | Feature | [#2660][] |
Updated Venia's button style to match new design | Update | [#2496][] |
Added product listing to the MiniCart | Update | [#2506][] |
Added a header section to the MiniCart | Update | [#2509][] |
Added a footer section to the MiniCart | Update | [#2511][] |
Adjusted styles for the header, main page, and footer components | Update | [#2513][] |
Update Gallery component to use item.id for key prop on GalleryItem |
Update | [#2520][] |
Added product link for each product in the MiniCart | Update | [#2549][] |
Disabled the visibility of the MiniCart on the checkout page | Update | [#2554][] |
Added product links to the product listings on the cart page | Update | [#2557][] |
Updated Venia's filter modal styles to match the new design | Update | [#2559][] |
Added CSS to handle multiple configurable options | Update | [#2577][] |
Implemented consistent error state handling | Update | [#2588][] |
Added a sign-in section to the new My Account trigger in the header | Update | [#2590][] |
Enabled GET for GraphQL queries (but not mutations) | Update | [#2602][] |
Added React Refresh to improve development server performance | Update | [#2609][] |
Improved error handling when using the Sign-in dropdown | Update | [#2664][] |
Updated static images to reflect new logo | Update | [#2693][] |
Disabled account page routes for v8.0.0 | Update | [#2709][] |
Removed email from the reset password link | Update | [#2726][] |
Refactored code to use tokens for color and weight | Refactor | [#2500][] |
Refactored Venia's inputs to match new design | Refactor | [#2510][] |
Refactored Venia's accordions to match the style guidelines | Refactor | [#2527][] |
Refactored Venia's cards to match the style guidelines | Refactor | [#2545][] |
Fixed a "Data Fetch Error" on the product page during offline mode | Bugfix | [#2490][] |
Fixed a bug that made the product and category sorting component unavailable | Bugfix | [#2493][] |
Resolved remaining issues with Buttons component implementation | Bugfix | [#2523][] |
Fixed scroll lock page shifting | Bugfix | [#2543][] |
Fixed MiniCart blocking page interactions | Bugfix | [#2547][] |
Fixed a sticky sidebar on the checkout page overlapping the footer | Bugfix | [#2582][] |
Fixed a bug that kept rendering the loading spinner on the page | Bugfix | [#2583][] |
Fixed MiniCart bug that prevent guest users from adding a product to an expired cart | Bugfix | [#2612][] |
Fixed button CSS to handle mobile view | Bugfix | [#2655][] |
Fixed improper use of formatMessage() |
Bugfix | [#2698][] |
Fixed Storybook bug caused by i18n work | Bugfix | [#2705][] |
Fixed Payment Information button to disable it while the Payment section loads | Bugfix | [#2723][] |
Fixed an offline homepage error | Bugfix | [#2727][] |
Peregrine library
Description | Change type | PR |
---|---|---|
Added access to the root component type for child components | Feature | [#2443][] |
Enable URL redirects when set in the Magento backend | Feature | [#2504][] |
Added Create Account functionality to the Sign-in trigger in the navigation menu | Feature | [#2657][] |
Added support for an app-wide configurable URL suffix | Feature | [#... |
v7.0.0
Release 7.0.0
NOTE:
This changelog only contains release notes for PWA Studio 7.0.0.
For older release notes, see [PWA Studio releases][].
Table of contents
- What's new in 7.0.0
- Pull requests merged in this release
- Known issues
- Upgrading from a previous version
What's new in 7.0.0
PWA Studio 7.0.0 contains new features, refactors, and various improvements.
Extensibility framework
This release improves on the extensibility framework introduced in version 6.0.0.
It introduces new extension points for the Buildpack, Peregrine, and Venia UI library components.
Developers can use these extension points to extend their storefront project without duplicating and maintaining PWA-Studio code.
As of 7.0.0, PWA-Studio contains the following extension points:
Venia UI extension points
Venia UI extension points are declared in [venia-ui-declare.js
][].
Target name | Description |
---|---|
richContentRenderers |
Add custom rich content renderers to your storefront |
routes |
Add or modify storefront-specific routes |
Peregrine extension points
Peregrine extensions points are declared in [peregrine-declare.js
][].
Target name | Description |
---|---|
talons |
Intercept specific Peregrine talons and wrap them with your custom components |
Wrappable talons:
useProductFullDetail()
useApp()
Buildpack extension points
Buildpack extension points are declared in [declare-base.js
][].
Target name | Description |
---|---|
enVarDefinition |
Add custom environment variables to PWA-Studio's environment variables system |
transformModules |
Apply custom file transformers through webpack |
webpackCompiler |
Access the webpack compiler object |
specialFeatures |
Specify special features to the webpack compiler for components |
New Venia look
Release 7.0.0 introduces numerous improvements to the shopper experience with various stylistic changes to the Venia example storefront.
These storefront changes are the result of extensive research by the UX team to provide an optimal shopping experience.
These improvements are available to developers as individual library components or as a whole when they set up a new storefront project.
Page Builder home page
In addition to the style changes for Venia, release 7.0.0 also adds a new home page built using [Page Builder][].
The content of this CMS page is defined in the Magento Admin using the Page Builder extension.
It showcases Page Builder content types such as Sliders, Banners, and Gallery Items.
This new page replaces the old home page content in Venia.
Check out the new Venia homepage
Standalone Cart and Checkout pages
This release builds on the standalone Shopping Cart page introduced in 6.0.0 and connects it to a new standalone Checkout page.
Developers can use these pages as starting points in their storefront projects or use the new components developed for those pages in their own solutions.
These pages are still under development as of this release, but you can view the current progress at:
https://develop.pwa-venia.com/cart
Order Confirmation page
This release adds an Order Confirmation page at the end of the cart and checkout workflow.
It contains the billing and shipping information specified during checkout along with the items ordered.
This page works with guest and authenticated checkout.
For guest checkout, the shopper is given the option to create an account for the store.
Standard Dialog component
This release introduces a standard modal window with the [Dialog component][].
Modals are child windows that render over the main application.
They are highly visual components that show important messages or prompts for user interactions.
The Dialog component introduced in this release provides a standard way of working with this modal windows.
This guarantees a unified look and feel for all your modal window use cases.
PWA Studio Fundamentals tutorials
Over the course of 7.0.0 development, the PWA Studio doc site has published introductory tutorials for working with the PWA-Studio tools and libraries.
These tutorials provide steps for common tasks associated with storefront development.
They cover everything from setting up the initial project to providing a checklist for deploying to production.
See [PWA Studio fundamentals][] for a list of these tutorials.
Pull requests merged in this release
Venia (storefront and visual component library)
Description | Change type | PR |
---|---|---|
Created a new Portal component | Feature | [#2436][] |
Added support for png image requests for servers that cannot handle webp |
Feature | [#2400][] |
Implemented UX around $0 total checkout | Feature | [#2394][] |
Implemented auto-population of shipping information when authenticated | Feature | [#2380][] |
Implemented shopping cart merging on login | Feature | [#2377][] |
Added ability to specify ratio for image component | Feature | [#2372][] |
Implemented Checkout page price adjustments | Feature | [#2366][] |
Created a new Dialog Component | Feature | [#2365][] |
Added Storybook to Venia concept for scaffolded projects | Feature | [#2355][] |
Added a new CMS home page with Page Builder content | Feature | [#2345][] |
Implemented a guest payment workflow on the Checkout page | Feature | [#2320][] |
Enabled the RadioGroup component to pass rest attributes to radio group items |
Feature | [#2313][] |
Added sorting to search page | Feature | [#2294][] |
Created new Order Confirmation page | Feature | [#2288][] |
Created Items Review component for Cart and Checkout | Feature | [#2257][] |
Added property to specify the cart trigger color | Feature | [#2220][] |
Updated home page route | Update | [#2565][] |
Renamed identities to be culturally appropriate | Update | [#2478][] |
Updated Cart page to show loading state while fetching data from network | Update | [#2454][] |
Updated cache policy for Home page | Update | [#2453][] |
Swapped usage of React Head to React Helmet Async | Update | [#2412][] |
Updated Service Worker to be more strict when doing catalog image checks | Update | [#2392][] |
Removed reference related to recently viewed items | Update | [#2387][] |
Changed the accordion section buttons to type button |
Update | [#2335][] |
Changed the Venia loading spinner image to a simpler CSS spinner | Update | [#2310][] |
Added check for the isRequired validation rule |
Update | [#2303][] |
Implemented Shipping Information form for guest checkout | Update | [#2285][] |
Added Shipping Methods form to Checkout page | Update | [#2280][] |
Made minor updates to the Order Summary feature | Update | [#2278][] |
Styled icons with CSS | Update | [#2272][] |
Added the Order Summary to the Checkout page | Update | [#2271][] |
Cleaned and made Cart and Checkout pages consistent | Update | [#2258][] |
Updated Checkout page GraphQL query | Update | [#2254][] |
Added category description (with PageBuilder support as well) in the category view | Update | [#2226][] |
Updated cms component to include meta data | Update | [#2159][] |
Changed the random swatch color to the actual color | Update | [#... |
v6.0.1
Release 6.0.1
NOTE:
This changelog only contains release notes for PWA Studio 6.0.1.
For older release notes, see PWA Studio releases.
Table of contents
What's new in 6.0.1
PWA Studio 6.0.1 contains a hotfix for the scaffolding generator.
This release fixes an error generated by the scaffolding generator when you run the create-project
command directly.
See PR #2363 for additional details.
Upgrading from a previous version
The method for updating to 6.0.1 from a previous version depends on how PWA Studio is incorporated into your project.
The following are common use cases we have identified and how to update the project code.
PWA Studio fork
Many PWA Studio users have forked the PWA Studio Git repository.
Even though their codebase may have diverged a great deal from the current codebase, there is still a Git relationship.
Upgrade method: Update using Git
Pull and Merge the changes from the upstream repository using Git.
Most of the conflicts will be in components that we have fully refactored.
We recommend merging the library code we changed and updating component calls with any new prop signatures introduced in this version.
Manual code copies
Some PWA Studio users have copied parts of the code into their own projects.
This is similar to the Git workflow, but without the merging tools Git provides.
Upgrade method: Manual copy updates
Updating this code involves manually copying updates for the code they use.
New code may also need to be copied over if the updated code depends on it.
This method can be a chore, and we hope that some of the features in 5.0.0+ will help these users migrate to a package management approach.
NPM packages
Some users have imported the PWA Studio libraries using NPM.
This is the easiest way to work with the released versions of PWA Studio.
Upgrade method: Update package.json
To upgrade to 6.0.1, update the project's package.json
file and change the version string for any PWA Studio package dependencies.
v6.0.0
Release 6.0.0
NOTE:
This changelog only contains release notes for PWA Studio 6.0.0.
For older release notes, see [PWA Studio releases][].
Table of contents
What's new in 6.0.0
PWA Studio 6.0.0 contains new features, refactors, and various improvements.
Initial extensibility framework
This release contains initial work for an extensibility framework in PWA Studio.
This framework gives developers the ability to create an extensibility API for their storefront or write plugins that can tap into those API and modify storefront logic.
An example of this framework in action can be found in the Venia storefront, which exposes an API and installs the Page Builder PWA package as a dependency.
Previously the only way to add Page Builder features was to have a copy of the Page Builder module's source code inside the project itself.
This had the unfortunate side effect of you having to manually apply any code changes to your copy of Page Builder whenever a new version releases.
With the new extensibility framework, updating is as easy as installing the new version.
Caching and data fetching improvements
This release contains improved caching logic and other data fetching optimizations in the Peregrine and Venia UI component libraries.
These components have been refactored to take advantage of Apollo cache features to reduce overfetching or prevent the storage of sensitive data.
Shopping cart page components
This release adds components that can be used for a full page shopping cart experience.
The standalone cart page for Venia is still under development as of this release, but you can view the current progress at: https://develop.pwa-venia.com/cart
PWA Studio tutorials
Since the last release, the PWA Studio doc site has created a new tutorial section for PWA Studio fundamentals.
Topics in this section will be more instructional than the topics found in the Getting started section.
Currently, the following drafts have been published (with more to come):
Thanks to community member rossmc for contributing the drafts for this these topics!
Pull requests merged in this release
Venia (storefront and visual component library)
Description | Change type | PR |
---|---|---|
Added current applied Gift Card balance to UI | Feature | [#2156][] |
Added "Edit Item" feature from mini-cart into Cart Page kebab menu | Feature | [#2191][] |
Added an error toast for invalid Product quantities | Feature | [#2196][] |
Created initial skeleton for a checkout page | Feature | [#2181][] |
Implemented sorting for Category page | Feature | [#2133][] |
Added Gift Cards support to Cart page | Feature | [#2124][] |
Added Shipping Method to Cart page | Feature | [#2123][] |
Added a product quantity stepper to cart items | Feature | [#2115][] |
Added Gift options support in cart page | Feature | [#2114][] |
Added intermediate level breadcrumbs | Feature | [#2113][] |
Added Cart Coupons functionality | Feature | [#2108][] |
Added Cart Price Summary to cart page | Feature | [#2092][] |
Created new ProductListing Component for cart page | Feature | [#2094][] |
Added PriceAdjustments and Accordion components to cart page | Feature | [#2090][] |
Created a standalone Cart Page | Feature | [#2084][] |
Removed client-side Email Validation on Signin, Create Acount, and Forgot Password forms | Update | [#2157][] |
Refactored JSX in some modules to follow standards for conditionals | Refactor | [#2200][] |
Refactored usage of isFastNetwork() in service worker. |
Refactor | [#2193][] |
Refactored Accordion component to close sections instead of unmounting them | Refactor | [#2149][] |
Refactored ErrorView to be more scalable | Refactor | [#2116][] |
Refactored cart style to fit design intent | Refactor | [#2104][] |
Created Firefox-specific CSS to fix text alignment issues | Bugfix | [#2233][] |
Fixed Email field validation bug in Billing Information by removing field | Bugfix | [#2216][] |
Fixed style for quantity field/steppers in Firefox | Bugfix | [#2206][] |
Fixed Cart page sign out error when cart does not exist in cache | Bugfix | [#2189][] |
Fixed a bug in the Cart page where items showed incorrect configurable options | Bugfix | [#2167][] |
Fixed a bug related to search trigger focus | Bugfix | [#2165][] |
Fixed venia-static files not loading out-of-the box with scaffolding command | Bugfix | [#2143][] |
Fixed the incorrect export for PriceSummaryQuery | Bugfix | [#2142][] |
Fixed incorrect cart page title | Bugfix | [#2140][] |
Updated informed version to fix Windows 10/Edge issues | Bugfix | [#2129][] |
Fixed bug that rendered price components when cart is empty | Bugfix | [#2112][] |
Fixed validator for venia-ui | Bugfix | [#2095][] |
Fixed search result counts not matching in different components | Bugfix | [#2037][] |
Peregrine library
Description | Change type | PR |
---|---|---|
Enabled mutation queueing to prevent race conditions when multiple mutations are in flight | Feature | [#2215][] |
Adds validation and input trimming for Gift Card input field | Feature | [#2175][] |
Enabled real Filtering functionality by connect to GraphQL | Feature | [#2166][] |
Refactored Apollo cache use to prevent overfetching | Refactor | [#2250][] |
Removed mutation PII while still updating the cache correctly | Refactor | [#2240][] |
Fixed a bug with the breadcrumbs in the Product Details Page talon for products without categories | Bugfix | [#2224][] |
Fixed bug that showed stale suggestions during searches | Bugfix | [#2150][] |
Fixed Accordion talon bugs that kept resetting sections | Bugfix | [#2147][] |
Page Builder plugin
Description | Change type | PR |
---|---|---|
Re-implemented Page Builder as an extension | Feature | [#2137][] |
Added support for Page Builder's Video Background feature | Feature | [#2187][] |
Fixed video alignment background in embedded videos | Bugfix | [#2201][] |
Fixed bug that would cause extensions utilizing Page Builder to break when upgraded | Bugfix | [#2199][] |
Fixed bug where Row Full-Width contents were horizontally positioned incorrectly in desktop | Bugfix | [#2146][] |
Fixed escaped HTML bug that broke the HTML content type | Bugfix | [#2283][] |
Build tools
Description | Change type | PR |
---|---|---|
Added interception targets for environmental variables | Feature | [#2174][] |
Add ability to conditionally ... |
v5.0.1
Release 5.0.1
NOTE:
This changelog only contains release notes for PWA Studio 5.0.1.
For older release notes, see PWA Studio releases.
Table of contents
What's new in 5.0.1
PWA Studio 5.0.1 is a patch release to fix an Image loading issue and cache persistence issue.
Pull requests merged in this release
Venia (storefront and visual component library)
Description | Change type | PR |
---|---|---|
Fix images not loading correctly | Bugfix | #2164 |
Peregrine library
Description | Change type | PR |
---|---|---|
Prevent invalid mutation caching | Bugfix | #2176 |
Upgrading from a previous version
The method for updating to 5.0.1 from a previous version depends on how PWA Studio is incorporated into your project.
The following are common use cases we have identified and how to update the project code.
PWA Studio fork
Many PWA Studio users have forked the PWA Studio Git repository.
Even though their codebase may have diverged a great deal from the current codebase, there is still a Git relationship.
Upgrade method: Update using Git
Pull and Merge the changes from the upstream repository using Git.
Most of the conflicts will be in components that we have fully refactored.
We recommend merging the library code we changed and updating component calls with any new prop signatures introduced in this version.
Manual code copies
Some PWA Studio users have copied parts of the code into their own projects.
This is similar to the Git workflow, but without the merging tools Git provides.
Upgrade method: Manual copy updates
Updating this code involves manually copying updates for the code they use.
New code may also need to be copied over if the updated code depends on it.
This method can be a chore, and we hope that some of the features in 5.0.0 will help these users migrate to a package management approach.
NPM packages
Some users have imported the PWA Studio libraries using NPM.
This is the easiest way to work with the released versions of PWA Studio.
Upgrade method: Update package.json
To upgrade to 5.0.1, update the project's package.json
file and change the dependency version for PWA Studio.
v5.0.0
Release 5.0.0
NOTE:
This changelog only contains release notes for PWA Studio 5.0.0 and above.
For older release notes, see [PWA Studio releases][].
Table of contents
What's new in 5.0.0
PWA Studio 5.0.0 contains new features, refactors, breaking changes, and various improvements.
Page Builder integration
Page Builder is a content creation tool developed by Magento.
It allows merchants to define store layouts using the Admin panel.
Page Builder integrating with PWA Studio means merchants may now use Page Builder to define the layout in the Magento backend and have that content rendered in a PWA Studio storefront.
This release makes the Venia RichContent
component compatible with the default Page Builder content types.
Scaffolding
Getting a new PWA Studio project up and running is now easier with the @magento/create-pwa
command.
This command is a user-friendly version of the create-project
sub-command in the pwa-buildpack
CLI tool.
Use this command to set up an initial project structure using the Venia storefront as a template.
It provides an interactive questionnaire to help configure the different parts of your project.
For more information see: Scaffolding
Talons
This release introduces the concept of Peregrine Talons.
Peregrine Talons are a set of React Hooks tailored for a specific UI component.
They contain logic for calculating the values rendered by its companion UI component.
Separating the logic and the presentational pieces of a component lets developers swap out either piece when creating custom UI components.
For more information see: Peregrine Talons
New route handler
Routing in the project has been updated to use the React Router library instead of a custom router.
The following is a summary of these changes:
- The new
Routes
component replacesrenderRoutes()
- The new
MagentoRoute
component replacesMagentoRouteHandler
- The new
useMagentoRoute()
Talon replacesMagentoRouteHandler
State management refactors
This release refactors the way PWA Studio handles state management in Venia.
Instead of using Redux directly, Peregrine now provides a set of context providers and Hooks to interact with the different slices of state in the global data store.
For more information, read State management
REST to GraphQL migration
With the increase in GraphQL coverage in the latest Magento release (2.3.4), PWA Studio continues to refactor out REST usage in favor of GraphQL.
Various usage of REST have been converted to GraphQL.
These changes include the various cart interactions, sign-in/sign-out, and fetching country data.
For more information on GraphQL, see: GraphQL Developer Guide
Performance improvements
A lot of work has been done in this release to improve the performance provided by PWA Studio tools and libraries.
Service worker improvements
Service worker changes in this release provides smarter use of the cache and when to invalidate stale data.
Other improvements include more optimized bundles/images and route handling.
Optimized images
Handling images on the storefront has been improved in this release.
Storefronts are now able to load the optimal image for a given viewport.
New features such as pre-fetching and lazy loading also boosts page load performance.
Refactoring classes to functional components
This release refactors various classes into functional components.
This was done to align with the move towards using React Hooks throughout the project.
Breadcrumbs
The breadcrumb feature has been added to Venia's product and category pages.
Use this feature to improve navigation in your storefronts.
Potential breaking changes
Since this is a major release, some of the changes previously listed may break projects dependent on PWA Studio and its tools and components.
These changes include:
- Refactoring to produce Talons have modified the public API of some Venia components
- Converting from REST to GraphQL calls
- Optimizing images required updates that modify how images should be used
- Converting classes to functional components to use React Hooks
- Replacing
MagentoRouteHandler
with new component and Talon
Pull requests merged in this release
Venia (storefront and visual component library)
Description | Change type | PR |
---|---|---|
Added meta descriptions to root pages | Feature | [#2035][] |
Added email validation to ForgotPasswordForm | Feature | [#1997][] |
Improved performance by lazy loading AuthModal | Feature | [#1955][] |
Improved performance by lazy loading Category filters | Feature | [#1971][] |
Improved Image fit with Fastly | Feature | [#1976][] |
Added product page breadcrumbs | Feature | [#1960][] |
Added category page breadcrumbs | Feature | [#1949][] |
Improved product page caching | Feature | [#1935][] |
Added PageBuilder components | Feature | [#1872][] |
Implemented the apollo-link-retry Link |
Feature | [#1799][] |
Created component for showing categories with no products | Feature | [#1496][] |
Updated template HTML to include noscript fallback | Update | [#2034][] |
Removed id from getCustomer response object |
Update | [#2028][] |
Added Email validation in signin form | Update | [#1981][] |
Added support for Carousel appearance for Product content type | Update | [#1951][] |
Updated static to venia-static | Update | [#1932][] |
Upgraded Apollo View layer to Hooks | Update | [#1827][] |
Improved efficiency of the getNavigationMenu query |
Update | [#1867][] |
Added field labels for inputs | Update | [#1845][] |
Update mixin references to Talon | Update | [#1820][] |
Deleted unused home component | Update | [#1798][] |
Implemented route-based code splitting | Update | [#1765][] |
Updated Swatch Treatments | Update | [#1512][] |
Added support for initial selections on the Edit Item screen | Update | [#1592][] |
Replaced connected components with context Hooks | Update | [#1664][] |
Removed sticky attribute from the pagination | Update | [#1735][] |
Replaced rem to pixels in the height and width attribute for the pagination image |
Update | [#1738][] |
Refactored checkout workflow to set shipping address/get shipping methods with GraphQL | Refactor | [#2018][] |
Refactored code to use updateItem mutations |
Refactor | [#2017][] |
Refactored code to use GraphQL for adding items to cart | Refactor | [#1987][] |
Replaced REST endpoing for cart item removal with a removeItemFromCart mutation |
Refactor | [#2015][] |
Refactor code to revoke customer token using GraphQL mutation on sign out | Refactor | [#2012][] |
Refactor code to use GraphQL mutation to create/fetch cartId. | Refactor | [#1988][] |
Removed test.only from test file |
Refactor | [#1989][] |
Refactor components to fetch Countries from GraphQL instead of REST | Refactor | [#1993][] |
Replaced sign-in REST with GraphQL | Refactor | [#1904][] |
Standardized GraphQL files with 4-space indentation | Refactor | [#1914][] |
Replaced the create-account REST endpoint with the createCustomer GraphQL mutation |
Refactor | [#1898][] |
Removed redux.compose() where not needed ... |
v4.0.0
Release 4.0.0
NOTE:
This changelog only contains release notes for PWA Studio 4.0.0 and above.
For older release notes, see [PWA Studio releases][].
Table of contents
What's new in 4.0.0
PWA Studio 4.0.0 contains new features, refactors, breaking changes, and various improvements.
Summary of notable changes
The following is a list of the notable changes included in this release.
New Peregrine Hooks
This release introduces the following new hooks in Peregrine:
- Toast hooks and ToastContainer - Provide logic for managing toast messages and a container for displaying these messages.
useWindowSize()
- A hook that provides window size data and lets you respond to window resizing events.useRestApi()
anduseRestResponse()
- Hooks that expose the API for sending REST calls and handling the response.useScrollLock()
- Hook that gives the ability to lock thedocument
element.usePagination()
- A hook that provides pagination logic for components that need to navigate through paged data.useEventListener()
- A hook that gives the ability to add a callback function when an event is triggered on an element.useCarousel()
- A hook for interacting with the state for a carousel of images.
Component refactors
This release includes code refactors to existing components.
The main purpose for this refactor is to extract the logic from these components and convert them into re-useable Peregrine hooks, such as useCarousel()
and useScrollLock()
.
Another reason for refactoring some of these components is to convert them into functional components.
The list of refactored components in this release include:
- List, List Items, and List Item in Peregrine
- Category in RootComponent
- Header, Checkout, MiniCart, Image, and ProductFullDetail in Venia
- Various left drawer components (See PR [#1552][] for the full list of affected components)
Summary of breaking changes
This release includes changes that may break projects dependent on PWA Studio and its tools and components.
src
to lib
The src
directories in Peregrine and Venia have been renamed to lib
.
This enforces the idea that these packages are meant to be consumed as libraries, but
it also means that you may have to update your import paths in your project.
Venia split
The Venia project is now split into separate venia-ui
and venia-concept
packages.
This paves the way for better extensibility and customizability when it comes to storefront creation.
The venia-ui
package contains the templates and components used to create the Venia storefront.
This package is meant to be used as a component library for custom storefront projects.
The venia-concept
package contains the project scripts and configurations used to build and run the actual Venia storefront project.
This change may also require you to update import paths in your project.
See PR [#1499][]
New build tools
This release contains new tools for building, bundling, and configuring storefront projects.
buildpack
CLI command - A command line toolkit with subcommands for:
- Generating SSL certificates
- Creating a
.env
file - Loading and validating a project's
.env
file.
See PR [#1498][]
configureWebpack()
- A function that provides an opinionated configuration for Webpack.
This replaces a large portion of the webpack.config.js
file in the Venia project in favor of a configurable utility that can be used in other storefront projects.
babel-preset-peregrine
- A new package that defines a preset for Babel.
This preset is required for storefronts using Peregrine and Venia-UI components.
See PR [#1404][].
Pull requests merged in this release
Venia (storefront and visual component library)
Description | Change type | PR |
---|---|---|
Added a feature that allows CSS in node_modules to circumvent CSS modules |
Feature | [#1242][] |
Added a layered navigation modal component for filters | Feature | [#797][] |
Added ability to source media URL from GraphQL | Feature | [#1267][] |
Added height to makeUrl() and enforced crop in middleware if provided |
Feature | [#1361][] |
Improved scroll locking | Feature | [#1449][] |
Update Billing Address Form to show additional fields | Update | [#1286][] |
Removed errant debugger statement in tests | Update | [#1353][] |
Updated feathericons to 2.0.x | Update | [#1416][] |
Updated webpack-bundle-analyzer dependency |
Update | [#1466][] |
Added insecure flag to GraphQL schema validation | Update | [#1313][] |
Refactored the create account form | Refactor | [#835][] |
Refactored templates to allow branded first renders | Refactor | [#1275][] |
Added a name property for the search trigger button to improve accessibility | Refactor | [#1395][] |
Refactored MiniCart components into functions from classes | Refactor | [#1266][] |
Refactored Product Details component to use hooks | Refactor | [#1240][] |
Refactored the Header component into a function | Refactor | [#1241][] |
Refactored create-account route to use appShell to get provided requisite properties |
Refactor | [#1430][] |
Refactored Checkout components to use hooks, fix bugs, and split code into functional components | Refactor | [#1309][] |
Refactored Category RootComponent into functional components and use hooks | Refactor | [#1211][] |
Refactored driver usage to improve Venia portability | Refactor | [#1217][] |
Refactored slide filter UX to make it behave like the nav menu | Refactor | [#1471][] |
Refactored the edit steps out of redux and into local checkout state | Refactor | [#1338][] |
Removed root-relative imports from Venia code | Refactor | [#1497][] |
Moved the majority of Venia components into a separate UI library | Refactor | [#1499][] |
Refactored left drawer components to use hooks, improve performance, and clean up the UI | Refactor | [#1552][] |
Refactored image tags to utilize srcset and sizes for optimized images |
Refactor | [#1584][] |
Fixed the order ID being displayed incorrectly | Bugfix | [#1249][] |
Removed duplicate search icon during load | Bugfix | [#1274][] |
Fixed a bug that prevented the loading of JS resources from root | Bugfix | [#1257][] |
Fixed a bug that reloaded the cart twice when the last item is removed | Bugfix | [#1230][] |
Fixed a bug that created an infinite loop when a product is out of stock | Bugfix | [#1229][] |
Fixed a bug that allowed the submi... |
v3.0.0
Release 3.0.0
NOTE:
This changelog only contains release notes for PWA Studio 3.0.0 and above.
For older release notes, see PWA Studio releases.
Table of contents
What's new in 3.0.0
PWA Studio 3.0.0 contains improvements, new features, and some breaking changes.
Summary of major changes
- Peregrine hooks:
Custom React Hooks that contain data and state management logic has been added to the Peregrine library.
These hooks allow developers to easily create functional components that focus on presentational logic.
These also allow for a more modular use of PWA logic and easier "restyling" of Venia (or any PWA storefront built using PWA Studio).
Summary of breaking changes
-
PR #1169 includes the following breaking changes:
- Removed some public user actions
- Prop type removed in the
CreateAccount
component - Deleted the
ErrorDisplay
component - Deleted the
Input
component
-
PR [#1078][] includes the following breaking changes:
SearchBar
component converted into a React hook that uses custom Peregrine hooks
Peregrine changes
Change type | Description | PR |
---|---|---|
Feature | New custom React hooks | [#1078][] |
Update | Upgrade react-router-dom to 5.0.0 |
[#1063][] |
UPWARD changes
Change type | Description | PR |
---|---|---|
Feature | New resolver added: UrlResolver | #1058, #1175 |
Venia changes
Change type | Description | PR |
---|---|---|
Feature | New SwatchTooltip component | [#956][] |
Feature | Focus search input on search icon button click | [#1019][] |
Update | Improve the usability of the "Remove item" feature in the MiniCart | [#882][] |
Tests | Add component unit tests | [#1027][] |
Bugfix | Make Create Account and Sign In input style consistent | #1169 |
Bugfix | Populate Create Account fields with correct values after guest checkout | #1153 |
Bugfix | Fix expired guest cart errors | #1150 |
Bugfix | Fix header logo width style | #1070 |
Bugfix | Disable adding to cart until product options are selected | #1097 |
Bugfix | Disable update cart button until product options are selected | #1125 |
Bugfix | Update div tag with Fragment |
#1103 |
Bugfix | Fix configurable media loading issue | #1094 |
Bugfix | Use placeholder in carousel while loading next image | [#1085][] |
Bugfix | Add / to graphql validation endpoint |
[#1045][] |
Bugfix | Fix makeUrl for Fastly |
[#1039][] |
Bugfix | Hide menu item from navigation if it is disabled in the Magento admin | [#1022][] |
Bugfix | Prevent adding to cart during rapid multi-clicking | [#910][] |
Buildpack changes
Change type | Description | PR |
---|---|---|
Update | Update workbox-webpack-plugin to v4 |
#1102 |
Misc project changes
Change type | Description | PR |
---|---|---|
Update | Update eslint configuration version | #1088 |
Infrastructure | CI/CD and DevOps fixes and improvements | #1132, #1155, #1087, [#1043][] |
Infrastructure | GitHub template updates | [#1077][], [#1048][] |
Documentation changes
Change type | Description | PR |
---|---|---|
Documentation | Explainer comments added to the venia-upward.yml file |
#1174 |
Documentation | New reference docs for Peregrine hooks | #1253 |
Documentation | New Client side caching topic | #1152 |
Documentation | Hello UPWARD tutorial | [#1080][] |
Update | Add explanation to Magento compatibility table | [#1059][] |
Feature | Documentation linting tool added | #1140, #1177 |
Bugfix | Editorial and minor content fixes | #1171, #1167, #1158, #1139, #1109, [#1020][], [#1000][] |
Updating from 2.1.0
The method for updating to 3.0.0 from 2.1.0 depends on how PWA Studio is incorporated into your project.
The following are common use cases we have identified and how to update the project code.
PWA Studio fork
Many PWA Studio users have forked the PWA Studio Git repository.
Even though their codebase may have diverged a great deal from the current codebase, there is still a Git relationship.
Upgrade method: Update using Git
Pull and Merge the changes from the upstream repository using Git.
Most of the conflicts will be in components that we have fully refactored.
We recommend merging the library code we changed and updating component calls with any new prop signatures introduced in this version.
Manual code copies
Some PWA Studio users have copied parts of the code into their own projects.
This is similar to the Git workflow, but without the merging tools Git provides.
Upgrade method: Manual copy updates
Updating this code involves manually copying updates for the code they use.
New code may also need to be copied over if the updated code depends on it.
This method can be a chore, and we hope that some of the features in 3.0.0 will help these users migrate to a package management approach.
NPM packages
Some users have imported the PWA Studio libraries using NPM.
This is the easiest way to work with the released versions of PWA Studio.
Upgrade method: Update package.json
To upgrade to 3.0.0, update the project's package.json
file and change the dependency version for PWA Studio.
Release 2.1.0
What's new in 2.1.0
Release 2.1.0 is a compatibility release for the core Magento 2.3.1 release.
Notable changes include:
- Updated GraphQL queries
- Magento GraphQL query validation tool
Updated GraphQL queries
The Magento 2.3.1 release contains GraphQL schema changes that are not compatible with PWA Studio 2.0.0 presentational components.
This release adds a mapping layer to the wrapper components to maintain backwards compatibility for the presentational components.
This update also includes a change to the .env.dist
file in the Venia project.
This change sets the MAGENTO_BACKEND_URL
variable to that of a Magento 2.3.1 instance.
If you have previously set up Venia and copied the .env.dist
file into your project's .env
file, you must update the MAGENTO_BACKEND_URL
variable to keep your project compatible.
Pull Request: #990
Query validation tool
PWA Studio 2.1.0 creates a new graphql-cli
plugin called validate-magento-pwa-queries
to replace the validate-queries.js
script in the Venia package.
This tool lets developers know when a breaking change occurs with GraphQL to address incompatibility or breaking changes.
It provides clear error messages regarding where and how to resolve issues.
Pull Request: #1004
Other updates
- Unit tests created to increase test coverage
- Documentation typo fixes
- Devdocs script created for auto-generating reference docs from source
- Misc code cleanup
- Bugfix for shopping cart error when continuing to shop after checkout
- Bugfix for the full screen checkout drawer
- Bugfix for pagination persisting during Query loading state
- Bugfix for Search autocomplete rendering loading component on clear