<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Filip Rakowski on Medium]]></title>
        <description><![CDATA[Stories by Filip Rakowski on Medium]]></description>
        <link>https://medium.com/@frakowski?source=rss-2f6fdc60db8b------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*tr4DtjNFD63Tha03JA9sOw.png</url>
            <title>Stories by Filip Rakowski on Medium</title>
            <link>https://medium.com/@frakowski?source=rss-2f6fdc60db8b------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 17:18:41 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@frakowski/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Vue Storefront — What’s Next?]]></title>
            <link>https://medium.com/the-vue-storefront-journal/vue-storefront-whats-next-362362db44da?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/362362db44da</guid>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[magento]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Thu, 19 Dec 2019 10:04:33 GMT</pubDate>
            <atom:updated>2020-02-15T15:45:43.932Z</atom:updated>
            <content:encoded><![CDATA[<h3>Vue Storefront — What’s Next?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Htt9t--n2udxBAuFOoXPVw.png" /></figure><p><strong>After almost 3 years of building </strong><a href="http://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_FRA"><strong>Vue Storefront</strong></a><strong> together with our community, we learned a lot. It’s safe to say that after such a long time we have very deep and unique knowledge about the needs, weaknesses, and strengths of headless eCommerce. From the very beginning, we were constantly improving Vue Storefront with every iteration by applying our learnings and responding to community feedback. Now we want to take these improvements to a whole new level!</strong></p><p><strong>TL;DR:</strong> Vue Storefront Next is a common name for our R&amp;D efforts to improve Vue Storefront quality, architecture and developer experience. The goal of these efforts is to make it <strong>easy to use</strong>, <strong>modular</strong>, <strong>flexible</strong> and <strong>easy to upgrade </strong>by building independent tools. Improvements will be implemented incrementally.</p><h3>Introducing Vue Storefront Next architecture!</h3><p>Vue Storefront is currently the most mature eCommerce PWA solution that has proven its value in more than <a href="https://www.vuestorefront.io/live-projects/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_FRA">40 live implementations</a>! After more than 2 years of constant improvements, we know exactly how great it is but we also know very well about all its weaknesses. We always want to push forward, experiment with new ideas and use cutting-edge tech to be the best in our category. After all this time we know exactly how “perfect Vue Storefront “ should look like but we are slowly getting to the point where current architecture is a limitation. Don’t get me wrong — it’s a great piece of software and we are really proud of it. It’s probably the best one in the market and can serve well in almost every use case. But we are ambitious. “Better” is not something that satisfies us. We want it to be as good as possible and to achieve that we need to make bold moves.</p><p>For quite some time we are discussing and maturing a concept of new Vue Storefront architecture that will be a solution to all its current weaknesses (especially updates) but also a natural evolution of our concepts that will embrace all the modern best practices and trends in building Progressive Web Apps.</p><p>Surprisingly, the biggest challenge we faced was not about the architecture itself — we are discussing it heavily on a daily basis from the beginning of the project existence so we had a lot of time to develop mature ideas for improvement of almost every aspect of Vue Storefront. The hardest part was to make it a natural evolution that everyone can benefit from. No matter if you already have a shop on Vue Storefront or just plan to make it in the future — you should be able to benefit from its new architecture.</p><p>I’m really happy to announce that after countless meetings, discussions with our community and arguments in the core team we have a concept that we are really proud of and is mature enough to be shown to a broader audience! Ladies and gentlemen — introducing Vue Storefront Next — our new R&amp;D pipeline!</p><h3>What is it all about?</h3><p>Vue Storefront Next is a common name for our R&amp;D efforts to improve Vue Storefront quality, architecture and developer experience. The goal of these efforts is to make it <strong>easy to use</strong>, <strong>modular</strong>, <strong>flexible</strong> and <strong>easy to upgrade</strong>.</p><p><strong>The next pipeline will go along with the standard cycle of updates and improvements for Vue Storefront and won’t slow it down. We have some exciting stuff for next releases like NPM packaging of VSF Core. You can expect a full article about our plans for other improvements soon.</strong></p><p>Every project is different. We want to give our users best in class tools to build stunning eCommerce shops but let them decide on scope of their usage. Sometimes the only thing you need from Vue Storefront is an agnostic API layer, sometimes it’s just a UI library. We want to keep this decision up to you.</p><p><strong>Modularity is a keyword of the new architectur</strong>e. Instead of providing Vue Storefront as a single piece of software we decided to divide it into smaller, independent pieces that are not depending on each other— each of them can be used standalone or in combination with other ones.</p><p><strong>Modularizing Vue Storefront is a process</strong>. We are slowly detaching another layers from the main product, testing them, improving and releasing as a part of a new architecture. It won’t happen all at once. We will provide an easy way of adopting new features one by one.</p><p>Currently, there are two ready to use products that are part of Vue Storefront Next architecture:</p><ul><li><a href="https://www.storefrontui.io/"><strong>Storefront UI </strong></a>— a highly customizable, well-performing UI library that will help developers deliver the best in class mobile-first eCommerce user experience with minimal effort.</li><li><a href="https://github.com/DivanteLtd/storefront-api"><strong>Storefront API </strong></a>—which was released just a week ago is a GraphQL based agnostic eCommerce API that is essentially just a natural evolution of vue-storefront-api</li></ul><p>We are already developing a theme based on Storefront UI for Vue Storefront and it should be ready in Q1 of 2020. Replacement of vue-storefront-api with Storefront API is also on our roadmap but without a specific deadline as it’s a new product that still needs some tests.</p><h3>More products in progress</h3><p>We have products and concepts that are still under development and not suitable for production usage yet. They will most likely be finished and adopted in 2020. It’s not certain if they will be included in Vue Storefront in the described form but we certainly want to explore these ideas as we see them as major improvements over current solutions. We learned that in some situations publishing early is a good decision and in some cases - not. These products are meant to be our new public API and we want to be absolutely sure that they are delivering the best possible experience to both users and developers.</p><ul><li><strong>Vue Storefront CLI<br></strong>This product can be used even today as @vue-storefron/cli package but its capabilities are for now limited to creating new Vue Storefront projects from GitHub repo. In the future, we want to make it a go-to scaffolding tool for new Vue Storefront projects letting users decide which eCommerce platform, CMS and specific features (like URL dispatching) they want to use. Similarly to what Vue CLI offers right now.</li><li><strong>Integrations based on Composition API from Vue.js 3<br></strong>Composition API is one of the greatest features of Vue 3 that truly makes this framework stand out from other ones. It’s a completely new approach to code reuse and something letting library authors like us deliver much simpler and powerful APIs. We see a lot of potential in this approach as a major simplification of core interactions (compared to mixins) and a way of delivering great developer experience. <br>We want eCommerce and CMS integrations to be just a sets of Vue 3 composables that are not coupled with any other part of Vue Storefront architecture. It will improve the modularity of the whole ecosystem and make it possible to use Vue Storefront integrations in other Vue.js projects.<br>We are currently <a href="https://github.com/DivanteLtd/next/blob/master/packages/core/interfaces/index.ts">experimenting</a> with common interfaces that will ensure consistent developer experience across multiple platforms.</li><li><strong>Nuxt.js themes<br></strong>Since the beginning, we were using our own Server Side Rendering which led to many issues related to maintainability or lack of certain features. Using Nuxt will not only improve the quality of our SSR but also the overall developer experience of Vue Storefront development. Apart from purely technical benefits using Nuxt will give Vue Storefront developers access to hundreds of Nuxt modules which will enormously speed up common tasks like setting up authentication or internationalization. After many discussions with Nuxt.js core team, we are sure that it’s is a perfect match for Vue Storefront.</li></ul><p>As you have seen we have a lot of exciting plans for the next releases and we can’t wait to hear your feedback about the closest improvements which will be a new theme based on Storefront UI and after that — Storefront API integration.</p><h3>More details about Vue Storefront Next architecture</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uRrpBUYs5yAxOGTSQgCieg.png" /></figure><p>You can find a deeper explanation of Vue Storefront Next architecture in <a href="https://vsf-next-plan.netlify.com/">this document</a>.</p><h3>New integrations on Next architecture</h3><p>We are very excited about Vue Storefront Next but we are also aware that it&#39;s our only chance to deliver major improvements for the next few years. We want to spend more time testing and discussing new tools to be sure that on the day of publishing they will be stable enough to not drastically change in the future. We want to give you a tool that, once adopted won’t require major efforts to stay up to date.</p><p>At the same time, we want to deliver new exciting features as fast as possible. We were always iterating fast and adopting cutting-edge technologies before others and we want to stay like this.</p><p>There is no better way to quickly validate and improve your ideas than making them happen. Because of that, we decided to test new architecture by doing native integrations with two new eCommerce platforms:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ZWvMcqRlRwubRB12.jpg" /></figure><p><strong>Shopware 6 </strong>— <a href="https://www.vuestorefront.io/shopware/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_FRA">Vue Storefront</a> is now an exclusive partner of Shopware for their headless storefronts. Together with their team, we are building native integration for recently announced Shopware 6 based on Next architecture. You can expect a longer post about our cooperation and project itself soon.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*tnWjt1XtQo33A3Nj.jpg" /></figure><p><strong>Commercetools </strong>— We are receiving a lot of questions about commercetools integration from our partners and clients. It seems like a natural choice for us to integrate with this platform — they are focused on delivering great API and we are focused on delivering great frontend. This is why we decided to do a native integration with commercetools on Vue Storefront Next architecture.</p><p>Building two integrations at the same time will help us make sure that our new API is not platform-specific and can handle all the different scenarios. Additionally, we will be able to test how all the new tools are working together. Once we are satisfied with the result of native integrations, based on them we will implement these ideas for our main, “agnostic” integration.</p><h3>Adoption strategy</h3><p>Every new tool once ready will be adopted into the main Vue Storefront project.</p><p>You will be able to use new features immediately after they are released in both new and existing Vue Storefront shops. Just keep in mind that using them is not obligatory. The decision about which ones to use is up to you.</p><p>Many of the upcoming changes focus heavily on letting developers build Vue Storefront shops faster. Because of that for already existing projects, you might decide to omit some of them. I’m very happy to inform you that because all of the upcoming projects are independent tools touching only a certain layer of the application you don’t need to make a decision between using all the new tools or none of them.</p><p>If your shop is already working and performing well you can freely use only the tools that make sense for you and keep the rest of the application untouched.</p><h3>Video version</h3><p>You can learn about Vue Storefront Next from <a href="https://www.youtube.com/watch?v=0e2wyhR0ZyQ&amp;t=1s">this video.</a></p><h3>Core team hangouts</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dEhRPFj8YzHmB5_1" /></figure><p>We want to be even closer to the community and openly discuss all the exciting stuff around Vue Storefront. Because of that from this Friday we are starting regular monthly (or bi-monthly) core team hangouts where we will be presenting updates about the progress on Next architecture.</p><p>Everyone can join, ask questions and propose changes. If you don’t want to participate in the discussion it&#39;s still a great way to stay up to date with all the development-related news in Vue Storefront ecosystem. For other news, you can also subscribe to our newsletter to be always up to date with new releases, implementations and educational materials from Vue Storefront community.</p><p>See you on Friday!</p><p>Learn more about <a href="https://www.vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_FRA">Vue Storefront </a>— a PWA solution for eCommerce.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=362362db44da" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-vue-storefront-journal/vue-storefront-whats-next-362362db44da">Vue Storefront — What’s Next?</a> was originally published in <a href="https://medium.com/the-vue-storefront-journal">The Vue Storefront Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue Storefront 1.10-rc]]></title>
            <link>https://medium.com/the-vue-storefront-journal/vue-storefront-1-10-rc-cf84e036dd40?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/cf84e036dd40</guid>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Wed, 26 Jun 2019 13:56:43 GMT</pubDate>
            <atom:updated>2019-06-26T14:04:19.946Z</atom:updated>
            <content:encoded><![CDATA[<h3>Vue Storefront 1.10-RC is here — new CTO, Shopware partnership, native indexer and almost 90 PRs merged!</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZzowWgdLjtsutPHr_Iy7tA.png" /></figure><p><strong>We are happy to announce that release candidate for Vue Storefront 1.10 is now ready to test! In this release, despite stabilization and bug fixing, we focused on improving Vue Storefront frontend API layer and expanding possibilities of current features. Even more exciting things happened outside of the code world. Let me walk you through them!</strong></p><h3>All about Vue Storefront 1.10-RC</h3><p>Below you can find the gigantic list of around 90 PRs merged with improvements, bug fixes and enhancements made by our community for Vue Storefront 1.10-RC release.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/618/0*tU4QAX_tq2BMHbDg.jpg" /></figure><p>You must admit it’s impressive ;)</p><h4>Added</h4><ul><li>Make installer work for windows — <a href="https://github.com/Flyingmana">@Flyingmana</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2616">#2616</a>)</li><li>“Clear cart” button in the cart — <a href="https://github.com/jablpiotrek">@jablpiotrek</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2587">#2587</a>)</li><li>Global config API path under api.url - <a href="https://github.com/BartoszLiburski">@BartoszLiburski</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2622">#2622</a>)</li><li>Google Tag Manager integration — <a href="https://github.com/talalus">@talalus</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/841">#841</a>)</li><li>Portuguese (pt-PT) translation — <a href="https://github.com/xlcnd">@xlcnd</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2695">#2695</a>)</li><li>Module Mailchimp is removed in favor of more generic Newsletter — <a href="https://github.com/mdesmet">@mdesmet</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2558">#2558</a>)</li><li>syncTasks cleanup, elasticCacheQuota lowered to 3096KB - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2729">#2729</a>)</li><li>Back-button on order detail page [<a href="https://github.com/DivanteLtd/vue-storefront/pull/2819">#2819</a>]</li><li>Elastic Search Suggestions in the Search Response — <a href="https://github.com/jpetar">@jpetar</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2853">#2853</a>)</li><li>Linting for typescript files <a href="https://github.com/ResuBaka">@ResuBaka</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2843">#2843</a>)</li><li>Back to top functionality — <a href="https://github.com/vishal-7037">@vishal-7037</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2866">#2866</a>)</li><li>Thumbnail sizes are now configurable within the config.products.thumbnails and config.cart.thumbnails - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2897">#2897</a>)</li><li>In multistore mode, it’s now possible to configure multiple instances with different hosts, not only the paths — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/3048">#3048</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/3052">#3052</a>).</li><li>In multistore mode now there is a possibility to skip appending store code to URL with appendStoreCodeconfig option - <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/3048">#3048</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/3052">#3052</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/3074">#3074</a>).</li><li>Add support for API.url in the Task module — <a href="https://github.com/basvanpoppel">@basvanpoppel</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/3011">#3011</a>)</li><li>Products column change functionality — <a href="https://github.com/vishal-7037">@vishal-7037</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/3017">#3017</a>)</li><li>New Module order-history this provides the pagination via lazy load — <a href="https://github.com/Hackbard">@Hackbard</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2810">#2810</a>)</li><li>OrderNumber on ThankYouPage — <a href="https://github.com/Flyingmana">@Flyingmana</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2743">#2743</a>)</li></ul><h4>Removed</h4><ul><li>The getter cart/totals has been replaced with cart/getTotals - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2522">#2522</a>)</li><li>The getter cart/coupon has been replaced with cart/getCoupon - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2522">#2522</a>)</li><li>The getter cart/totalQuantity has been replaced with cart/getItemsTotalQuantity - <a href="https://github.com/pkarw">@pkarw</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2522">#2522</a>)</li><li>The event cart-before-save has been removed - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2522">#2522</a>)</li><li>The action cart/save has been removed - <a href="https://github.com/pkarw">@pkarw</a> - (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2522">#2522</a>)</li><li>Some deprecated config options: useShortCatalogUrls and setupVariantByAttributeCode have been removed - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2915">#2915</a>)</li><li>Button for filters acceptance added with new styles for clear filters button — <a href="https://github.com/965750">@965750</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2811">#2811</a>)</li><li>Added “Clear wishlist” button — <a href="https://github.com/aniamusial">@aniamusial</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2806">#2806</a>)</li><li>Make all links with the primary color — <a href="https://github.com/Hackbard">@Hackbard</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2932">#2932</a>)</li></ul><h4>Fixed</h4><ul><li>The back button on the Error page has been fixed — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/3077">#3077</a>)</li><li>Special price got zeroed — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2940">#2940</a>)</li><li>Microcart tax + discount totals fix — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2892">#2892</a>)</li><li>Microcart offline prices now forced down to original prices — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/3012">#3012</a>)</li><li>Login/Register error message added in case of FetchError (no network connectivity) — <a href="https://github.com/pkarw">@pkarw</a></li><li>Products removed from the cart are no longer add back on the connectivity return — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2898">#2898</a>)</li><li>Sidebar menu wasn’t possible to scroll — <a href="https://github.com/PanMisza">@PanMisza</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2627">#2627</a>)</li><li>Confirmation popup ‘Product has been added to cart’ is displayed only once — <a href="https://github.com/JKrupinski">@JKrupinski</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2610">#2610</a>)</li><li>Moved My Account options from Categories — <a href="https://github.com/bartdominiak">@bartdominiak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2612">#2612</a>)</li><li>Fix displaying (and adding) reviews for configurable products — <a href="https://github.com/afirlejczyk">@afirlejczyk</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2660">#2660</a>)</li><li>Image switching fix — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2709">#2709</a>)</li><li>Respect store code on order/PROCESS_QUEUE for shop store — <a href="https://github.com/Zulcom">@Zulcom</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2727">#2727</a>)</li><li>Unexpected window.localStorage use in user module actions - <a href="https://github.com/Zulcom">@Zulcom</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2735">#2735</a>)</li><li>Fix handling state of same address checkbox in the checkout — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2730">#2730</a>)</li><li>Fix for everythingNew collection on the home page - <a href="https://github.com/vishal-7037">@vishal-7037</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2761">#2761</a>)</li><li>Fixed display of chevron arrows when there is only one product image — RGijsberts — (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2911">#2911</a>)</li><li>Fixed Clear cart option as it previously was not syncing the changes with the server - therefore when the user was logged in and cleared the cart all the products were restored - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2587">#2587</a>)</li><li>Fixed the cart sync for a rare case that current cart token was empty — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2592">#2592</a>)</li><li>Use event bus to emit ‘application-after-init’ event (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2852">#2852</a>)</li><li>Validation of fields ‘company name’ and ‘tax’ in checkout doesn’t work correctly — <a href="https://github.com/dimasch">@dimasch</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2741">#2741</a>)</li><li>Fixed wrong price, displayed in instant checkout module — <a href="https://github.com/vishal-7037">@vishal-7037</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2884">#2884</a>)</li><li>Incorrect working of checkboxes in checkout — <a href="https://github.com/dimasch">@dimasch</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2730">#2730</a>)</li><li>Fixed ios input zoom on category page — <a href="https://github.com/VictorKadup">@VictorKadup</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2815">#2815</a>)</li><li>Fixed Load more in Search Results not working when typed too fast — <a href="https://github.com/Flyingmana">@Flyingmana</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2659">#2659</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2946">#2946</a>)</li><li>Subscribe button responsive — <a href="https://github.com/exlo89">@exlo89</a>, @webdiver, @przemyslawspaczek (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2886">#2886</a>)</li><li>Multiple instances for search adapter invocations — <a href="https://github.com/bratok">@bratok</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2960">#2960</a>)</li><li>Fixed issue with login popup state not resetting on mobile devices — <a href="https://github.com/aniamusial">@aniamusial</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2699">#2699</a>)</li><li>Fix sortBy for the category page — <a href="https://github.com/Jensderond">@Jensderond</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2868">#2868</a>)</li><li>Fixed incorrect prices in Instant Checkout (PR API) — <a href="https://github.com/qiqqq">@qiqqq</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2874">#2874</a>)</li><li>Fixed placeholders in the gallery in offline mode — <a href="https://github.com/przspa">@przspa</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2863">#2863</a>)</li><li>Incorrect user_id set on the order object - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2966">#2966</a>)</li><li>Problem with SSR render on the product page with logged in user — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2888">#2888</a>)</li><li>NaN displayed as shipping method — button disabled — <a href="https://github.com/aniamusial">@aniamusial</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2881">#2881</a>)</li><li>Logo on the Error page has been fixed — <a href="https://github.com/przspa">@przspa</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/3077">#3077</a>)</li><li>No placeholders / no photos for the Get Inspire section in offline — <a href="https://github.com/przspa">@przspa</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/3072">#3072</a>)</li><li>The back icon on product page causing inconsistent behavior — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/3056">#3056</a>)</li></ul><h4>Changed / Improved</h4><ul><li>The cart/sync, cart/addItems, cart/removeItem and cart/updateQuantity now returns the diffLog object with all the notifications, server statuses, and items changed during the shopping cart sync</li><li>The cart/addItem is no longer displaying the error messages - please use the diffLog.clientNorifications to update the UI instead (take a look at the AddToCart.ts for a reference)</li><li>The action cart/userAfterLoggedin got renamed to cart/authorize - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2522">#2522</a>)</li><li>The action cart/refreshTotals got renamed to cart/syncTotals - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2522">#2522</a>)</li><li>The action cart/serverPull got renamed to cart/sync - <a href="https://github.com/pkarw">@pkarw</a> - (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2522">#2522</a>)</li><li>The way we’re getting the user and cart tokens got refactored — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2513">#2513</a>)</li><li>Changed the way to access the configuration. Currently the rootStore.state.config is deprecated. Please do use import config from &#39;config&#39; &gt; config instead - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2649">#2649</a>)</li><li>Changed the order number (from entity_id to increment_id) on MyOrders and MyOrder pages - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2743">#2743</a>)</li><li>Disabled the server cart sync in case a user is in the checkout — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2749">#2749</a>)</li><li>Improved ProductGalleryCarousel component to handle non-numeric options id’s — <a href="https://github.com/danieldomurad">@danieldomurad</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2586">#2586</a>)</li><li>Number of displayed products is now visible on PLP on desktop — <a href="https://github.com/awierzbiak">@awierzbiak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2504">#2504</a>)</li><li>Improved visibility of product SKU in wishlist — <a href="https://github.com/PanMisza">@PanMisza</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2606">#2606</a>)</li><li>Instant focus to search input field after clicking on the search icon in navbar — <a href="https://github.com/ca1zr">@ca1zr</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2608">#2608</a>)</li><li>Login flow from authorized pages after session expired, show the modal with the new error message and redirect after login — <a href="https://github.com/gdomiciano">@gdomiciano</a>, <a href="https://github.com/natalledm">@natalledm</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2674">#2674</a>)</li><li>Added support for the newest node version — <a href="https://github.com/gdomiciano">@gdomiciano</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2669">#2669</a>)</li><li>Default store ID from 0 to 1 for multistore and CMS data logic - <a href="https://github.com/janmyszkier">@janmyszkier</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2590">#2590</a>)</li><li>Used $bus plugin instead of EventBus import - <a href="https://github.com/szafran89">@szafran89</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2630">#2630</a>)</li><li>BaseCheckbox now uses v-model. <a href="https://github.com/click">@click</a> is not needed anymore — <a href="https://github.com/haukebri">@haukebri</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2630">#2630</a>)</li><li>Image selection supporting multiple configurable options — <a href="https://github.com/mdesmet">@mdesmet</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2599">#2599</a>)</li><li>Product video — retrieve video id from ‘video_id’ field (if set) instead of ‘id’ — <a href="https://github.com/afirlejczyk">@afirlejczyk</a></li><li>Webpack config improvement — <a href="https://github.com/yogeshsuhagiya">@yogeshsuhagiya</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2689">#2689</a>)</li><li>BaseSelect input event — <a href="https://github.com/ResuBaka">@ResuBaka</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2683">#2683</a>)</li><li>Fixed static file handler to immediately return 404 status for missing files — @grimason (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2685">#2685</a>)</li><li>Fixed maxAge Response Header for static files and Content-Type for Service Worker — @grimason (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2686">#2686</a>)</li><li>Default log verbosity is changed to show only errors — <a href="https://github.com/lromanowicz">@lromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2717">#2717</a>)</li><li>Remembering last search query — @webdiver, <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2787">#2787</a>)</li><li>Extracted ProductImage component to support faster images loading — @przemyslawspaczek (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2925">#2925</a>)</li><li>Improve performance with preventing render ‘404 page’ on the server side if some of the static content is missed, simple 404 response uses instead — <a href="https://www.phoenix-media.eu/">PHOENIX MEDIA</a> — Yuri Boyko <a href="https://github.com/yuriboyko">@yuriboyko</a>, Anton Lobodenko <a href="https://github.com/sniffy1988">@sniffy1988</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/3002">#3002</a>)</li><li>Logger refactor + now it takes showErrorOnProduction into account - <a href="https://github.com/lromanowicz">@lromanowicz</a> - (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2717">#2717</a>)</li><li>Jest updated from 24.1 to 24.7 along with typings — <a href="https://github.com/lromanowicz">@lromanowicz</a> — (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2717">#2717</a>)</li><li>Jest globals added to .eslint — <a href="https://github.com/lromanowicz">@lromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2717">#2717</a>)</li><li>The default store ID was removed from the configurations — <a href="https://github.com/nuovecode">@nuovecode</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2718">#2718</a>)</li><li>‘Multitab cart’ sync — <a href="https://github.com/BartoszLiburski">@BartoszLiburski</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2547">#2547</a>)</li><li>Back to login button now shows the Login modal window instead of closing it — <a href="https://github.com/RGijsberts">@RGijsberts</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2882">#2882</a>)</li><li>Status filter in Related Products query (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2805">#2805</a>)</li><li>The ‘Apply’ button size has been reduced — <a href="https://github.com/idodidodi">@idodidodi</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2807">#2807</a>)</li><li>Added return to shopping button on ‘Thank You’ page — <a href="https://github.com/ZeevGerstner">@ZeevGerstner</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2818">#2818</a>)</li><li>Added optional attributes to catalog/product.ts — <a href="https://github.com/ZeevGerstner">@ZeevGerstner</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2792">#2792</a>)</li><li>Formatted dates in CHANGELOG.md to match ISO standard — <a href="https://github.com/phoenixdev-kl">@phoenixdev-kl</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2839">#2839</a>)</li><li>Moved Filter Price Ranges (used for ES aggregations and UI Filter) to the config — <a href="https://github.com/jpetar">@jpetar</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2873">#2873</a>)</li><li>Extra space if not found products in everything new section home page — <a href="https://github.com/cnviradiya">@cnviradiya</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2846">#2846</a>)</li><li>Load custom fonts without webfont.js — @jahvi (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2944">#2944</a>)</li><li>Added some structured data to the product page — @cewald (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2910">#2910</a>)</li><li>Improved the Size Guide feature, so it opens in a modal popup instead of a new page — <a href="https://github.com/RGijsberts">@RGijsberts</a> — (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2913">#2913</a>)</li><li>Refactored Travis config @Tjitse-E (<a href="https://github.com/DivanteLtd/vue-storefront/pull/3035">#3035</a>)</li></ul><h3>Native Magento 2 Indexer</h3><p>Our standard data importers were designed to solely use the platform APIs to push the data into Elastic Search. This is precisely how the <a href="https://github.com/DivanteLtd/mage2vuestorefront/">mage2vuestorefront</a> works.</p><p>As flexible, this solution is, it comes with some severe limitations. One of the most critical limitations it has is the performance. Executing API requests for each product might have a sense for 1–2K SKUs but doesn’t work with the databases counting a hundred thousand items.</p><p><strong>This was our motivation to create the native indexers for Magento. Currently, you can find two native indexers on our Github:</strong></p><ul><li><strong>Magento 2: </strong><a href="https://github.com/DivanteLtd/magento2-vsbridge-indexer">https://github.com/DivanteLtd/magento2-vsbridge-indexer</a></li><li><strong>Magento 1:</strong> <a href="https://github.com/DivanteLtd/magento1-vsbridge-indexer/pulls">https://github.com/DivanteLtd/magento1-vsbridge-indexer</a></li></ul><p>Read more about native Magento indexers <a href="https://medium.com/the-vue-storefront-journal/native-magento-data-indexer-aec3c9ebfb">here</a>.</p><h3>Magento MSI support</h3><p>Thanks to our fantastic partner, BitBull, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2310">Vue Storefront is now supporting Magento Multi Stock Inventory</a>. Special thanks to <strong>Alessandro Ronchi </strong>who made it possible and ensured high code quality!</p><h3>What else?</h3><h4>Vue Storefront has new CTO!</h4><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*_yWJB1MYfcjZrmzfvHrPpA.jpeg" /></figure><p>Following to rapid growth of Vue Storefront, we have decided to expand the Vue Storefront team with a new tech leader. Everyone — please meet Mr. Sander Mangel, Magento community legend and our new CTO!</p><p>Sander is working with us for only one month, and we already see exceptional results of this cooperation!</p><p>You can read more about Sander joining our team <a href="https://medium.com/the-vue-storefront-journal/embrace-vue-storefront-new-tech-leader-234e0ba29c82">here</a> along with the short <a href="https://medium.com/the-vue-storefront-journal/meet-the-vs-team-sander-mangel-interview-5f87b0b1b9e3">interview</a>.</p><h4>Vue Storefront as Shopware exclusive PWA solution!</h4><p>It turns out that May was an excellent month for Vue Storefront! We not only started working with sander but also announced Vue Storefront and Shopware partnership! Now we will work on delivering the best possible PWA experience for Shopware 6 together!</p><p>You can read more about Shopware and Vue Storefront cooperation <a href="https://divante.co/news/divante-to-become-exclusive-technology-partner-for-shopware-pwa-frontend?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">here</a>.</p><h4>Shopware 6 integration</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wHsvxRH-tWKyj-Lp.png" /></figure><p>Followed by our partnership with Shopware we released Vue Storefront integration with newest Shopware 6!</p><p><a href="https://github.com/DivanteLtd/shopware2vuestorefront">Here</a> you can find the code and installation guide.</p><h4>Our QA team will now help you on VS forum!</h4><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*_jqwwymJGWGwdLxSpFgwCw.png" /></figure><p>As we take our support to the next level, we would like you to meet Core QA Team! Gabi, Alina, and Artur help you find or get the answers for your Vue Storefront related questions and issues on our official <a href="https://forum.vuestorefront.io/">forum</a>.</p><h4>Vendic launched Vue Storefront for Meubelplaats</h4><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*uYujAGhUh51WHs_f" /></figure><p>What are the challenges of enriching Magento-based stores with PWA solutions? To find out, we met up with Tjitse and Eugene, developers from Vendic agency, who recently launched a PWA in the Meubelplaats furniture store.</p><p>You can read the full interview <a href="https://medium.com/the-vue-storefront-journal/developers-perspective-incorporating-pwa-technology-into-magento-2-stores-be5b6b697567">here</a>.</p><h4>Vue Storefront hackathon in Deventer by Vendic &amp; Yireo</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*HK2Vfeh6CFgl3nsX" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dtpKnFE7UUpGs_P9" /></figure><p>When speaking about <strong>Vendic,</strong> it’s hard not to mention amazing hackathon they’ve organized together with <strong>Yireo</strong> recently in Deventer! Despite the regular focus on coding many efforts has been put into knowledge sharing.</p><p>We header about PWAs from Sander mangel, Magento PWA solutions comparison from Jisse Reitsma and running Vue Storefront on production from Tjitse Efde</p><p>You can find stunning presentation made by Tjitse from Vendic about running Vue Storefront on production <a href="https://www.slideshare.net/Vendic/running-vue-storefront-in-production-pwa-magento-webshop">here</a>!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Pfq7Ke87ZQjicejT" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*nxL6dqZcGqJa9El7" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*NJn49P4aqglwk5-4" /><figcaption>Coding, knowledge sharing, exclusive T-shirts, and beer. What else would anyone need?</figcaption></figure><h4>Upcoming Vue Storefront hackathons</h4><p>If you missed hackathon in the Netherlands, there is no reason to panic! We have plenty of them coming where you can meet Sander, core team members, our partners, and other Vue Storefront community members!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*mVZtn00HP49AxvYf05Dxkw.png" /><figcaption>Sign up for the Vue Storefront hackathon in Romania <a href="https://www.eventbrite.com/e/vue-storefront-hackathon-13-cluj-napoca-romania-tickets-63762731045">here</a>.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*GcRhb2oC_WZlz1BLhOFuiw.png" /><figcaption>Sign up for the Vue Storefront hackathon in Germany <a href="https://www.eventbrite.com/e/vue-storefront-hackathon-14-stuttgart-germany-tickets-63764114182">here</a>.</figcaption></figure><p>Keep an eye on our <a href="https://www.vuestorefront.io/events/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">event list</a> to stay updated and don’t miss Vue Storefront hackathon near your town!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cf84e036dd40" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-vue-storefront-journal/vue-storefront-1-10-rc-cf84e036dd40">Vue Storefront 1.10-rc</a> was originally published in <a href="https://medium.com/the-vue-storefront-journal">The Vue Storefront Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue Storefront 1.9 — custom URLs, Marketplace challenge, new live websites]]></title>
            <link>https://medium.com/the-vue-storefront-journal/vue-storefront-1-9-custom-urls-marketplace-challenge-new-live-websites-27139d1e7ae2?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/27139d1e7ae2</guid>
            <category><![CDATA[pwa]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Mon, 06 May 2019 14:22:49 GMT</pubDate>
            <atom:updated>2019-05-08T14:01:55.160Z</atom:updated>
            <content:encoded><![CDATA[<h3>Vue Storefront 1.9 — custom URLs, Marketplace challenge, new live websites</h3><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*2fl2NXABgMmC1VVI3AO8MA.jpeg" /></figure><p><strong>Version 1.9 is the first stable release in the new release cycle and the effects are stunning! Not only it’s the most stable version of all time but we managed to ship great features. There are also 5 new modules from our community and 5 new live VS shops! It’s amazing to post such great news each month.</strong></p><h3>New features</h3><ul><li><a href="https://docs.vuestorefront.io/guide/basics/url.html">SEO-friendly URLs</a> came out of beta and are now ready to use.</li><li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API">Payment Request API</a> is now integrated with VS checkout. You can integrate it with a payment provider of your choice and use to drastically simplify the checkout process.</li></ul><p>Of course, that’s not all :) You can find a full list of new features, improvements and bug fixes at the end of this article.</p><h3>New modules</h3><p>There would be no <a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">Vue Storefront</a> without its amazing community. This month our partners released<strong> 6 new modules!</strong></p><ul><li><a href="https://forum.vuestorefront.io/t/layered-navigation-module-with-priceslider-component/197">Layered Navigation</a> by Get_Noticed</li><li>first B2B module <a href="https://forum.vuestorefront.io/t/b2b-request-for-quote-from-product-page/189">Request for Quote from the product page</a> by Interactivated E-Commerce / Dmitriy Schegolihin</li><li><a href="https://forum.vuestorefront.io/t/klarna-checkout/208">Klarna Checkout</a> by Kodbruket</li><li><a href="https://forum.vuestorefront.io/t/storyblok-integration-visual-editor/161">Storyblok Integration</a> (visual editor) by Kodbruket</li><li><a href="https://github.com/new-fantastic/vsf-facebook-pixel">Facebook Pixel</a> by newfantastic</li><li><a href="https://github.com/develodesign/vsf-intercom">Intercom</a> by DeveloDesign</li></ul><p>You can check other modules made by our community at <a href="https://forum.vuestorefront.io/c/modules">the Vue Storefront Forum.</a></p><h3>Marketplace challenge winners</h3><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*lIe28rGvjbsIkbDj" /></figure><p>While speaking about modules it’s hard not to mention marketplace challenge. With this challenge, we wanted to encourage freelance developers and partnering companies to share top quality integrations and popularize their solutions within the open-source community.</p><p><strong>The competition was strong but in the end, we selected 3 excellent modules and integrations for Vue Storefront. The winners are:</strong></p><ul><li>Get_Noticed</li><li>Develo Design</li><li>Kodbruket</li></ul><p><a href="https://medium.com/the-vue-storefront-journal/winners-of-the-vue-storefront-marketplace-challenge-fa04025c9a34">Here</a> you can read more about the challenge and its winners.</p><h3>New Vue Storefront-based websites are live</h3><p>It’s hard to describe how great we feel when we see new production website running Vue Storefront. In last month we felt it 5 times!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IRYP-2nOmO0y3QeTelgF-w.png" /><figcaption><a href="https://www.kentaur.com/">https://www.kentaur.com/</a></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*84FErIU3fCHu5TXAeGBiqA.png" /><figcaption><a href="https://www.meubelplaats.nl/">https://www.meubelplaats.nl/</a></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XDidmgjGBpyX8GgX1qvhYg.png" /><figcaption><a href="https://www.klebefieber.de/">https://www.klebefieber.de/</a></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*B5CwolgZ5f1b7GFdQyVEVg.png" /><figcaption><a href="https://kubotastore.pl/">https://kubotastore.pl/</a></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WBy2fcueQWaVwJxe0sAv7Q.png" /><figcaption><a href="https://sklep.damian.pl/">https://sklep.damian.pl/</a></figcaption></figure><h3>More quality and less bugs!</h3><p>We hired 3 amazing QA engineers (full-time!) that are testing Vue Storefront in and out. Thanks to their hard work and bug reports we are able to shipp more stable versions than ever before.</p><h3>Vue Storefront hackathons</h3><p>Last month Vue Storefront meetups visited Birmingham and Tel Aviv! As always it was a great occasion to meet local Vue Storefront communities and do training for newcomers!</p><h3>Patryk Tomczyk on Twitter</h3><p>We&#39;re at UK #VueStorefront Royal Hackathon 👑💂‍♂️🇬🇧 hosted by @Develodesign. #pwa is in the air!</p><h3>Piotr Karwatka on Twitter</h3><p>Shalom! Our brave @VueStorefront team is in Tel Aviv for the next 2 days - joins us on https://t.co/BHzegKrjQL and do some @vuejs #pwa @VueStorefront</p><p>If you’d like to participate in Vue Storefront hackathon and training <a href="https://www.vuestorefront.io/events/">check our events website</a>. Everyone is welcome! ;)</p><h3>Storefront UI on Vue.js Roadtrip</h3><p>I’m happy to announce that this month <a href="https://github.com/DivanteLtd/storefront-ui/">Storefront UI</a> will be shown publicly for the first time during <a href="https://www.vuejsroadtrip.com/">Vue.js Roadtrip</a> in Barcelona and Paris. If you live there to come and give a hi5!</p><h3>What else?</h3><h4>Added</h4><ul><li>validation for UTF8 alpha and alphanumeric characters in most checkout fields — @lromanowicz (#2653)</li><li>helper to process config urls with default endpoint host config.api.host - @patzick (#2858)</li></ul><h4>Fixed</h4><ul><li>ESlint throwing errors about undefined jest globals in tests — @lukeromanowicz (#2702)</li><li>Fixed changing the country when entering the shipping address in checkout not updating shipping costs — @revlis-x (#2691)</li><li>Instant Checkout fix — @qiqqq (#2750)</li><li>Infinite loop on the multistore page after reload — @patzick (#2713)</li><li>Refreshing MyAccount page on multistore — @patzick (#2780)</li><li>“Toggle password visible” button in password fields works the right way — @lromanowicz (#2772)</li><li>Range queries to elasticsearch — @oskar1233 (#2746)</li><li>BaseInput has minimum height now to avoid jumping on forms — @patzick (#2771)</li><li>Orders with invalid address don’t stack anymore in the queue and have proper notification popup — @AndreiBelokopytov, @lukeromanowicz (#2663)</li><li>Offline orders with out of stock products don’t stack anymore and get canceled after going back to online — @lukeromanowicz (#2740)</li><li>Build ServiceWorker on Docker — @patzick (#2793)</li><li>Product image load after coming back to online — @patzick (#2573)</li><li>Insufficient validation for city field in checkout address — @lromanowicz (#2653)</li><li>Incorrect hover activity on the ‘filter by categories’ in the search view on mobile — @idodidodi (#2783)</li><li>Unit tests written in JavaScript now support async/await functions and dynamic import — @michaelKurowski, @lukeromanowicz (#2851)</li></ul><p>… and everything from RC version:</p><h4>Added</h4><ul><li>Payment Request API integration — <a href="https://github.com/qiqqq">@qiqqq</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2306">#2306</a>)</li><li>The Url Dispatcher feature added for friendly URLs. When config.seo.useUrlDispatcher set to true the product.url_path and category.url_path fields are used as absolute URL addresses (no /cand /p prefixes anymore). Check the latest mage2vuestorefront snapshot and reimport Your products to properly set url_path fields - <a href="https://github.com/DivanteLtd/vue-storefront/issues/2010">#2010</a> - <a href="https://github.com/pkarw">@pkarw</a></li><li>Unit tests of cart module written in jest — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2305">#2305</a>)</li><li>New reactive helper to check online state. Usage: import { onlineHelper } from &#39;@vue-storefront/core/helpers&#39; and then onlineHelper.isOnline - <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2510">#2510</a>)</li><li>Cart count config, allows you to display the item count instead of a sum of the item quantities — <a href="https://github.com/pauluse">@pauluse</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2483">#2483</a>)</li><li>Video support in Product Gallery component. — <a href="https://github.com/rain2o">@rain2o</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2433">#2433</a>)</li></ul><h4>Fixed</h4><ul><li>Gallery low-quality image in offline mode when high quality already cached — @patzick (#2557)</li><li>Problem with placing a second order (unbinding payment methods after first order) — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2195">#2195</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2503">#2503</a>)</li><li>Remaking order on user orders page — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2480">#2480</a>)</li><li>Images blinking on category page — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2523">#2523</a>)</li><li>state.ts not bound in the module-template — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2496">#2496</a>)</li><li>Validation in the Myprofile section for postcode field — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/1317">#1317</a>)</li><li>Non-integer qty of product added to the cart — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2517">#2517</a>)</li></ul><h4>Changed / Improved</h4><ul><li>The core/helpers parsing URL methods exchanged to query-stringpackage - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2446">#2446</a>)</li><li>Unit tests in Karma are now removed in favor of jest — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2305">#2305</a>)</li><li>Material Icons are loaded asynchronously — <a href="https://github.com/JKrupinski">@JKrupinski</a>, <a href="https://github.com/filrak">@filrak</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2060">#2060</a>)</li><li>Update to babel 7 — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2554">#2554</a>)</li><li>Fixed an issue where the correct image for a product configuration wasn’t set on the product page image carousel. Also added the fix on the productcarousel in the zoom component — <a href="https://github.com/DaanKouters">@DaanKouters</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2419">#2419</a>)</li><li>The way of creating VS Modules was changed to use the factory method instead of explicit object creation. — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2434">#2434</a>)</li><li>Added clear filters button on the desktop also and only show if filters are applied — <a href="https://github.com/DaanKouters">@DaanKouters</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2342">#2342</a>)</li><li>Improved docs at contributing.md and configuration.md (spelling etc.) — <a href="https://github.com/ruthgeridema">@ruthgeridema</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2421">#2421</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2422">#2422</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2423">#2423</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2425">#2425</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2426">#2426</a>)</li><li>Fixed design issue of Country label on Edge 17 &amp; Firefox — <a href="https://github.com/ananth-iyer">@ananth-iyer</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2390">#2390</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2399">#2399</a>)</li><li>Wishlist and compare items are loaded from local cache only once, instead of every time when the module component is rendered — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2431">#2431</a>)</li><li>Country field is filled by the first country from the list in cart in payment section — <a href="https://github.com/RakowskiPrzemyslaw">@RakowskiPrzemyslaw</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2428">#2428</a>)</li><li>Improved product quantity change component in product and cart — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2398">#2398</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2437">#2437</a>)</li><li>Updated to Vue 2.6.6 — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2456">#2456</a>)</li><li>Null sidebar menu data on static page fixed — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2449">#2449</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2441">#2441</a>)</li><li>The fix cannot edit previous steps in checkout — <a href="https://github.com/filrak">@filrak</a>, <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2438">#2438</a>)</li><li>Fixed route guard SSR problem — <a href="https://github.com/vue-kacper">@vue-kacper</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2364">#2364</a>)</li><li>Fix links in the footer to static pages bug — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2452">#2452</a>)</li><li>Fix links at docs, Basics/Configuration file explained — <a href="https://github.com/daksamit">@daksamit</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2490">#2490</a>)</li><li>Improve images loading on the category page, corrected alt view and blinking problem — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2465">#2465</a>)</li><li>Improve tsconfig for better IDE paths support — <a href="https://github.com/patzick">@patzick</a>, <a href="https://github.com/filrak">@filrak</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2474">#2474</a>)</li><li>fix breadcrumbs changing too early — <a href="https://github.com/filrak">@filrak</a>, <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2469">#2469</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2529">#2529</a>)</li><li>improved product gallery load view, shows correct image on reload — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2481">#2481</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2482">#2482</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2488">#2488</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2501">#2501</a>)</li><li>Fix an issue where the index.html template within a theme is ignored — <a href="https://github.com/EnthrallRecords">@EnthrallRecords</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2489">#2489</a>)</li><li>Added async sidebar component with async off-screen components error handling and fetch retrying after coming back online — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2408">#2408</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2451">#2451</a>)</li><li>Inconsistent filters behavior — clear filters on page load — <a href="https://github.com/patzick">@patzick</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2435">#2435</a>)</li><li>fix price is never below 0 and user can’t add 0 or below 0 products to cart — <a href="https://github.com/RakowskiPrzemyslaw">@RakowskiPrzemyslaw</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2437">#2437</a>)</li><li>Check for placing single order in case of an error in any payment module — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2409">#2409</a>)</li><li>Display prices in products added in offline mode. — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2450">#2450</a>)</li><li>Updated cypress dependency for e2e tests — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2518">#2518</a>)</li><li>Improved styles on recommendation filters, product title and numeric input — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2458">#2458</a>)</li></ul><h4>Deprecated / Removed</h4><ul><li>@vue-storefront/store package deprecated - <a href="https://github.com/filrak">@filrak</a></li></ul><p>Learn more at <a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">vuestorefront.io</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=27139d1e7ae2" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-vue-storefront-journal/vue-storefront-1-9-custom-urls-marketplace-challenge-new-live-websites-27139d1e7ae2">Vue Storefront 1.9 — custom URLs, Marketplace challenge, new live websites</a> was originally published in <a href="https://medium.com/the-vue-storefront-journal">The Vue Storefront Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue Storefront 2.0 and Theme 2.0]]></title>
            <link>https://medium.com/@frakowski/vue-storefront-2-0-and-theme-2-0-92a4d013f5bf?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/92a4d013f5bf</guid>
            <category><![CDATA[pwa]]></category>
            <category><![CDATA[ui-design]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[ecommerce]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Wed, 17 Apr 2019 12:16:00 GMT</pubDate>
            <atom:updated>2019-04-17T12:16:00.783Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>The default theme has served us well for a long time, but we have learned a lot in the last two years and now we want to turn all those lessons learned into code. This is why we are working on Theme 2.0 (I’m sure in the meantime we will come up with a better name).</strong></p><h3>What is Theme 2.0 and Vue Storefront 2.0?</h3><p>Theme 2.0 is a completely new<a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra"> Vue Storefront</a> default theme, written from scratch and aligned with our plans for future Vue Storefront architecture.</p><p>Vue Storefront 2.0 is just the evolution of the current core with a focus on seamless upgrades, easier setup, and better learning curve. The main difference introduced in Vue Storefront 2.0 is moving the whole core&lt;&gt;theme communication to Vuex stores and better encapsulation of modules. By having one layer of communication, core logic can be completely separated from theme logic which will make its customization and upgrade much easier.</p><p>We also plan to make some upgrades for the modules registration API to make them lazily loadable. <strong>This change won’t affect internals of any currently existing Vue Storefront module though, and they should be able to use the new APIs without any internal changes.</strong></p><h3>How will Theme 2.0 look?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_XPLNu4D_Z-_o-krbpHD-w.png" /><figcaption>More about designing a new Vue Storefront theme in the<a href="https://medium.com/the-vue-storefront-journal/designing-mobile-first-store-themes-for-the-fashion-industry-interview-cf47e8529a54"> interview</a> with Sveta Havaka.</figcaption></figure><p><strong>Theme 2.0 will be based on</strong><a href="https://github.com/DivanteLtd/storefront-ui/"><strong> Storefront UI</strong> </a>— a customization-first library of Vue components dedicated to eCommerce and crafted by the Vue Storefront team and contributors.</p><p>Theme 2.0 is meant to provide the best out-of-the-box experience with a mobile-first design. It is based on the <strong>Google UX Retail Playbook </strong>to ensure the best possible User experience. We want to give developers the ability to customize the design in any way they want while keeping it upgradable, in contrast to the current theme.</p><p><strong>Here is the list of key goals we want to achieve in Theme 2.0:</strong></p><ul><li>Best out-of-the-box experience</li><li>Mobile-first components</li><li>Ability to customize any aspect of the UI without losing upgradability</li><li>Great performance</li><li>Simplified theme structure</li><li>No need for breaking changes in the future</li><li>Great documentation</li><li>Lower learning curve</li><li>Highly requested theme fallback system</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dPk4M5PG048vapJc" /></figure><h3>What about backward compatibility?</h3><p>Even though we are moving the communication layer to Vuex and resigning from core pages, <strong>they will still be maintained and adjusted to changes so everyone using the old Vue Storefront theme can still receive updates</strong>. If you’re already using Vue Storefront in your shop, those changes are not gonna affect you more than regular updates. It’s important to mention that we want to introduce new APIs step by step with each new release so Vue Storefront 2.0 is not gonna be completely new software but just a final step inall the incremental improvements.</p><p><strong>Also, the Vuex state data formats will remain untouched. We will only provide additional actions and getters.</strong></p><h3>When will it be released?</h3><p>We plan to release the Theme 2.0 MVP along with part of VS 2.0 Vuex improvements later this year. Exactly when mostly depends on the number of contributions from our community. The core team is working hard on improving Vue Storefront, preparing it for version 2.0, building Storefront UI and Theme 2.0. If you’d like to help with any of those, we’d be more than happy to guide you. Let’s build a better<a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra"> Vue Storefront</a> together ;)</p><p>Expect more details soon!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=92a4d013f5bf" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue Storefront 1.9-rc— new release cycle, Hybris and Prismic integrations]]></title>
            <link>https://medium.com/the-vue-storefront-journal/vue-storefront-1-9-rc-new-release-cycle-hybris-and-prismic-integrations-2a15f4bf498b?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/2a15f4bf498b</guid>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[mobile-apps]]></category>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[progressive-web-app]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Thu, 07 Mar 2019 14:12:56 GMT</pubDate>
            <atom:updated>2019-03-07T14:18:46.021Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2fl2NXABgMmC1VVI3AO8MA.jpeg" /></figure><p><a href="https://github.com/DivanteLtd/vue-storefront/releases/tag/v1.9.0-rc.1"><strong>Version 1.9</strong></a><strong> is a huge milestone in Vue Storefront history. It’s not only a new release. It’s our promise to the community that Vue Storefront is mature enough to be a trustworthy enterprise solution that can keep its position as a leader in eCommerce Storefronts.</strong></p><h3>New release cycle</h3><p>Since the product is mature enough to fulfill most of the needs we want to focus on polishing it by eliminating bugs, enriching APIs, making the product more stable and future-proof, providing better tooling with cli and dedicated snippets/dev tools.</p><p>From version 1.9 each <a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">Vue Storefront</a> release will be divided into two steps (approx. 1 month each):</p><ol><li><strong>The release candidate </strong>(1.x-rc)— is a rough version with the newest features. It’s not production-ready but developers are able to test and play with newest additions to the core. During this milestone, we are mostly focusing on widening our APIs and adding new features.</li><li><strong>Stable version</strong> (1.x) — Once all features and API additions are in the core we are working next month on polishing these new APIs, improving performance/stability and writing tests. After this milestone, we are publishing the production-ready and well-tested version of Vue Storefront.</li></ol><p>You can read more about the new release cycle <a href="https://github.com/DivanteLtd/vue-storefront/blob/master/docs/guide/basics/release-cycle.md">here</a>.</p><blockquote><strong>Important note</strong>: The most recent stable version is 1.8.3. If you wish to upgrade to the latest codebase or make a new shop this is the right one to grab. We made tons of improvements in terms of stability during this release.</blockquote><h3>Product roadmap</h3><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*fdDZlJofjr92wLVDNCUTpw.png" /></figure><p>Even though <a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">Vue Storefront</a> is fully mature and ready to use the product we want to make it even better and our plans for its future are really exciting! We plan to incorporate many DX improvements with dedicated tooling and lower the entry level with each version. We also have four main long-term business goals;</p><ul><li>Goal #1: to keep the Magento PWA leader status, support all ongoing and future implementations, maintain stability and backward compatibility at the highest level. We set the “<strong>implementations” </strong>work stream for that.</li><li>Goal #2: to improve our developer’s framework, improve the test coverage and code quality. We set the <strong>“improvements”</strong> work stream for this purpose.</li><li>Goal #3: to extend the number of supported backends in the ”<strong>integrations”</strong> workstream</li><li>Goal #4: to add new business features — in the “<strong>features</strong>” workstream.</li></ul><p><a href="https://medium.com/the-vue-storefront-journal/the-vs-roadmap-8a6a1cf162a9">Here</a> you can read the details in Piotr Karwatka’s post.</p><h3>SAP Hybris integration</h3><p>Recently Rauf and Timofey from <a href="https://www.epam.com/">epam</a> <a href="https://hybrismart.com/2019/02/13/vue-storefront-sap-commerce-open-source-pwa-storefront-integration-demo/">wrote a post on Hybrismart</a> about Vue Storefront integration with <a href="https://divante.co/news/divante-to-cooperate-with-sap-on-commerce-cloud-pwa-frontend/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">SAP Hybris</a>. They even recorded a demo!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FGVoJF6D_XIw%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DGVoJF6D_XIw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FGVoJF6D_XIw%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/e3ab1b5b835a334e3de9977acdcd52a8/href">https://medium.com/media/e3ab1b5b835a334e3de9977acdcd52a8/href</a></iframe><h3>Magento 1 integration open sourced!</h3><p>Recently thanks to Piotr’s efforts we published full Magento 1 integration. It’s a perfect choice for Magento 1 -&gt; Magento 2 migration. <br>Of course, it’s open source and MIT licensed!</p><p>Below you can find the bridge and data indexer:</p><ul><li><a href="https://github.com/DivanteLtd/magento1-vsbridge">Magento 1 bridge</a></li><li><a href="https://github.com/DivanteLtd/magento1-vsbridge-indexer">Magento 1 data indexer</a></li></ul><h3>Magento 2 native indexer open sourced!</h3><p>Mage2vuestorefront indexer is soon to be replaced by native Magento 2 module! It will speed up the indexing process and makes it easier to jump in by Magento 2 developers thanks to the same technology stack.</p><p>The native indexer is available on GitHub to test and after we’re sure that it’s efficient and stable it’s gonna replace the current one.</p><p><a href="https://github.com/DivanteLtd/magento1-vsbridge-indexer">Here</a> you can find the repo.</p><h3>Prismic integration by Agency Dn’D</h3><p><a href="https://www.dnd.fr/">Agency Dn’D </a>just released a <a href="https://prismic.io/">Prismic</a> connector for Vue Storefront.<br>Prismic is a headless CMS that you can now use to manage content in your Vue Storefront store.</p><h3>Agence Dn&#39;D on Twitter</h3><p>#NEWS ] 📢 Dn&#39;D Agency is proud to present its new #connector between @VueStorefront and @prismicio ! Discover all the connector features : 👉 https://t.co/j3GyuVivyi</p><h3>Vue Storefront Hackathon #6 in Amsterdam</h3><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*YXAhy_17cmT64sLvfCPYNA.jpeg" /></figure><p>Last month just before Vue.js Amsterdam our core partner Get_Noticed organized 6th Vue Storefront hackathon. As always it started with free training from the core team member and for the first time, it was Patryk Tomczyk!</p><p><a href="https://medium.com/the-vue-storefront-journal/recap-of-the-6th-vue-storefront-hackathon-610edc8dc995">Here</a> you can read the recap of this awesome event!</p><h3>Vue Storefront Hackathon #7 in Stockholm</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*m6dkiopqkftwWyRcanaGWQ.png" /></figure><p>30th of March Vue Storefront hackathon is taking place in Stockholm! The event will be hosted by joined forces of <a href="https://www.awacademy.de/">AW Academy</a>, <a href="https://www.dahl.se/store/dahl">Dahl</a> and <a href="https://www.digitalent.se/">Digitalent</a>. Everyone around (or remotely) — feel invited :)</p><p>As always it’s a great chance to attend free training and learn Vue Storefront from core team members.</p><p><a href="https://www.eventbrite.com/e/stockholm-vuejs-vuestorefront-hackathon-registration-57992158106">Here</a> you can sign up for the hackathon.</p><h3>SEO-friendly URL’s beta</h3><p>We published a beta version of highly requested feature — SEO friendly URLs created by Piotr Karwatka. Now you can customize every URL exactly in a way you want!</p><p>You can read the details and a long discussion about this feature <a href="https://github.com/DivanteLtd/vue-storefront/pull/2446">here</a>.</p><h3>Payment Request API alpha</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/869/0*Pqn7o4D915-kOSF9.png" /></figure><p>Another big feature in this release is support for <a href="https://paymentrequest.show/">Payment Request API</a> as an alternative to traditional checkout.</p><p>It’s a game-changer in terms of mobile checkout conversion and something we wanted in Vue Storefront for a very long time. Currently, it’s lacking only payment providers integration but our friends from Develo Design (authors of PayPal and Stripe modules) are already on it. You can expect a fully working version in the next release.</p><h3>What else?</h3><h4>Added</h4><ul><li>Payment Request API integration — <a href="https://github.com/qiqqq">@qiqqq</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2306">#2306</a>)</li><li>The Url Dispatcher feature added for friendly URLs. When config.seo.useUrlDispatcher set to true the product.url_path and category.url_path fields are used as absolute URL addresses (no /cand /p prefixes anymore). Check the latest mage2vuestorefront snapshot and reimport Your products to properly set url_path fields - <a href="https://github.com/DivanteLtd/vue-storefront/issues/2010">#2010</a> - <a href="https://github.com/pkarw">@pkarw</a></li><li>Unit tests of cart module written in jest — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2305">#2305</a>)</li><li>New reactive helper to check online state. Usage: import { onlineHelper } from &#39;@vue-storefront/core/helpers&#39; and then onlineHelper.isOnline - <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2510">#2510</a>)</li><li>Cart count config, allows you to display the item count instead of a sum of the item quantities — <a href="https://github.com/pauluse">@pauluse</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2483">#2483</a>)</li><li>Video support in Product Gallery component. — <a href="https://github.com/rain2o">@rain2o</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2433">#2433</a>)</li></ul><h4>Fixed</h4><ul><li>Gallery low-quality image in offline mode when high quality already cached — @patzick (#2557)</li><li>Problem with placing a second order (unbinding payment methods after first order) — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2195">#2195</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2503">#2503</a>)</li><li>Remaking order on user orders page — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2480">#2480</a>)</li><li>Images blinking on category page — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2523">#2523</a>)</li><li>state.ts not bound in the module-template — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2496">#2496</a>)</li><li>Validation in the Myprofile section for postcode field — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/1317">#1317</a>)</li><li>Non-integer qty of product added to the cart — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2517">#2517</a>)</li></ul><h4>Changed / Improved</h4><ul><li>The core/helpers parsing URL methods exchanged to query-string package - <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2446">#2446</a>)</li><li>Unit tests in Karma are now removed in favor of jest — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2305">#2305</a>)</li><li>Material Icons are loaded asynchronously — <a href="https://github.com/JKrupinski">@JKrupinski</a>, <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2060">#2060</a>)</li><li>Update to babel 7 — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2554">#2554</a>)</li><li>Fixed an issue where the correct image for a product configuration wasn’t set on the product page image carousel. Also added the fix on the productcarousel in the zoom component — <a href="https://github.com/DaanKouters">@DaanKouters</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2419">#2419</a>)</li><li>The way of creating VS Modules was changed to use the factory method instead of explicit object creation. — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2434">#2434</a>)</li><li>Added clear filters button on the desktop also and only show if filters are applied — <a href="https://github.com/DaanKouters">@DaanKouters</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2342">#2342</a>)</li><li>Improved docs at contributing.md and configuration.md (spelling etc.) — <a href="https://github.com/ruthgeridema">@ruthgeridema</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2421">#2421</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2422">#2422</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2423">#2423</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2425">#2425</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2426">#2426</a>)</li><li>Fixed design issue of Country label on Edge 17 &amp; Firefox — <a href="https://github.com/ananth-iyer">@ananth-iyer</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2390">#2390</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2399">#2399</a>)</li><li>Wishlist and compare items are loaded from local cache only once, instead of every time when module component is rendered — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2431">#2431</a>)</li><li>Country field is filled by first country from the list in cart in payment section — <a href="https://github.com/RakowskiPrzemyslaw">@RakowskiPrzemyslaw</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2428">#2428</a>)</li><li>Improved product quantity change component in product and cart — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2398">#2398</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2437">#2437</a>)</li><li>Updated to Vue 2.6.6 — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2456">#2456</a>)</li><li>Null sidebar menu data on static page fixed — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2449">#2449</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2441">#2441</a>)</li><li>Fix cannot edit previous steps in checkout — <a href="https://github.com/filrak">@filrak</a>, <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2438">#2438</a>)</li><li>Fixed route guard ssr problem — <a href="https://github.com/vue-kacper">@vue-kacper</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2364">#2364</a>)</li><li>Fix links in the footer to static pages bug — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2452">#2452</a>)</li><li>Fix links at docs, Basics/Configuration file explained — <a href="https://github.com/daksamit">@daksamit</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2490">#2490</a>)</li><li>Improve images loading on the category page, corrected alt view and blinking problem — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2465">#2465</a>)</li><li>Improve tsconfig for better IDE paths support — <a href="https://github.com/patzick">@patzick</a>, <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2474">#2474</a>)</li><li>fix breadcrumbs changing too early — <a href="https://github.com/filrak">@filrak</a>, <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2469">#2469</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2529">#2529</a>)</li><li>improved product gallery load view, shows correct image on reload — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2481">#2481</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2482">#2482</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2488">#2488</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2501">#2501</a>)</li><li>Fix an issue where the index.html template within a theme is ignored — <a href="https://github.com/EnthrallRecords">@EnthrallRecords</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2489">#2489</a>)</li><li>Added async sidebar component with async off-screen components error handling and fetch retrying after coming back online — <a href="https://github.com/filrak">@filrak</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2408">#2408</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2451">#2451</a>)</li><li>Inconsistent filters behavior — clear filters on page load — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2435">#2435</a>)</li><li>fix price is never below 0 and user can’t add 0 or below 0 products to cart — <a href="https://github.com/RakowskiPrzemyslaw">@RakowskiPrzemyslaw</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2437">#2437</a>)</li><li>Check for placing single order in case of error in any payment module — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2409">#2409</a>)</li><li>Display prices in products added in offline mode. — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2450">#2450</a>)</li><li>Updated cypress dependency for e2e tests — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2518">#2518</a>)</li><li>Improved styles on recommendation filters, product tile and numeric input — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2458">#2458</a>)</li></ul><h4>Deprecated / Removed</h4><ul><li>@vue-storefront/store package deprecated - <a href="https://github.com/filrak">@filrak</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2a15f4bf498b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-vue-storefront-journal/vue-storefront-1-9-rc-new-release-cycle-hybris-and-prismic-integrations-2a15f4bf498b">Vue Storefront 1.9-rc— new release cycle, Hybris and Prismic integrations</a> was originally published in <a href="https://medium.com/the-vue-storefront-journal">The Vue Storefront Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue.js App Performance Optimization: part 3— Lazy loading Vuex modules]]></title>
            <link>https://itnext.io/vue-js-app-performance-optimization-part-3-lazy-loading-vuex-modules-ed67cf555976?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/ed67cf555976</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[front-end-development]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Fri, 22 Feb 2019 08:24:06 GMT</pubDate>
            <atom:updated>2019-07-11T09:49:46.929Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Z8V4nPzrELcD2Tkjy4DtNQ.png" /></figure><p><strong>In the </strong><a href="https://itnext.io/vue-js-app-performance-optimization-part-2-lazy-loading-routes-and-vendor-bundle-anti-pattern-4a62236e09f9"><strong>previous part</strong></a><strong> we learned pattern that is powerful enough to drastically improve performance of your application — splitting code per routes. While splitting code per route can be very helpful there is still a lot of code inside them that is not needed right after user visits our site. In this part of the series we will focus on code splitting our state management — Vuex modules.</strong></p><p>This series is based on learnings from <a href="https://github.com/DivanteLtd/vue-storefront">Vue Storefront</a> performance optimization process. By using below techniques we were able to cut off size of our initial bundle by 70% and made it load in a blink of an eye.</p><p><a href="https://vueschool.io/articles/vuejs-tutorials/lazy-loading-and-code-splitting-in-vue-js/">Part 1 — Introduction to performance optimization and lazy loading.</a></p><p><a href="https://itnext.io/vue-js-app-performance-optimization-part-2-lazy-loading-routes-and-vendor-bundle-anti-pattern-4a62236e09f9">Part 2 — Lazy loading routes and vendor bundle anti-pattern.</a></p><p><a href="https://itnext.io/vue-js-app-performance-optimization-part-3-lazy-loading-vuex-modules-ed67cf555976">Part 3 — Lazy loading Vuex modules</a></p><p>Part 4 — Delivering good waiting experience and lazy loading individual components — soon</p><p>Part 5 — Lazy loading libs and finding smaller equivalents — soon</p><p>Part 6 — Performance-friendly usage of UI libraries</p><p>Part 7 — Making use of Service Worker cache — soon</p><p>Part 8 — Prefetching</p><h3>Two types of Vuex modules</h3><p>There is one important thing you need to be aware of before we will go further and see how to load <a href="https://vuex.vuejs.org/guide/modules.html">Vuex modules</a> lazily. You need to understand what are the possible ways to register a Vuex module and what are their pros and cons.</p><p><strong>Static Vuex modules</strong> are declared during the Store initialization. Here is an example of explicitly created static module:</p><pre>// store.js<br>import { userAccountModule } from &#39;./modules/userAccount&#39;</pre><pre>const store = new Vuex.Store({<br>  modules: {<br>    user: userAccountModule<br>  }<br>})</pre><p>Above code will create a a new Vuex Store with static module userAccountModule. Static modules can’t be unregistered (also their registration can’t be delayed) and their structure (not state!) can’t be changed after the Store initialization.</p><p>While this limitations won’t be a problem for most of the modules and declaring all of them in one place is really helpful for keeping all data-related stuff in one place there are some downsides of this approach.</p><p>Let’s say we have Admin Dashboard in our application with a dedicated Vuex module.</p><pre>// store.js<br>import { userAccountModule } from &#39;./modules/userAccount&#39;<br>import { adminModule } from &#39;./modules/admin&#39;</pre><pre>const store = new Vuex.Store({<br>  modules: {<br>    user: userAccountModule, <br>    admin: adminModule<br>  }<br>})</pre><p>You can imagine that such module can be pretty huge. Even though dashboard will be used only by a small part of users and in a restricted area of application (let’s say under a special /admin route) due to centralized registration of static Vuex modules all of it’s code will end up in the main bundle.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EMvePcANptY83r80Go3Mtg.png" /><figcaption>All of our modules are bundled into one file</figcaption></figure><p>This is certainly not a situation that we want to end up in. We need a way to load this module only in /admin route. As you may have guessed static modules can’t fulfill our need. All static modules needs to be register at the moment of Vuex Store creation therefore they can’t be registered later.</p><p>This is where dynamic modules<strong> </strong>can help us!</p><p><strong>Dynamic modules</strong> in opposite to the static ones can be registered <strong>after </strong>Vuex Store creation. This neat capability implies that we don’t need to download dynamic module on app initialization and can bundle it in different chunk of code or load lazily when it’s needed.</p><p>First let’s see how the previous code will look like with dynamically registered admin module.</p><pre>// store.js<br>import { userAccountModule } from &#39;./modules/userAccount&#39;<br>import { adminModule } from &#39;./modules/admin&#39;</pre><pre>const store = new Vuex.Store({<br>  modules: {<br>    user: userAccountModule, <br>  }<br>})</pre><pre>store.registerModule(&#39;admin&#39;, adminModule)</pre><p>Instead of passing adminModule object directly into modules property of our store we registered it after Store creation with <a href="https://vuex.vuejs.org/api/#registermodule">registerModule</a> method.</p><p>Dynamic registration doesn’t require any changes inside the module itself so any Vuex module can be registered either statically or dynamically.</p><p>Of course in current form this dynamically registered module is not giving us any advantage.</p><h3>Properly code-splitted Vuex modules</h3><p>Let’s go back to our problem. Now that we know how to register admin module dynamically we can certainly try to put it’s code into /admin route bundle.</p><p>Let’s stop for the moment to briefly understand the application we are working with.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/928/1*ult4uXG6nDjt4nzEipGECQ.png" /></figure><pre>// router.js<br>import VueRouter from &#39;vue-router&#39;<br>const Home = () =&gt; import(&#39;./Home.vue&#39;)<br>const Admin = () =&gt; import(&#39;./Admin.vue&#39;)</pre><pre>const routes = [<br>  { path: &#39;/&#39;, component: Home },<br>  { path: &#39;/admin&#39;, component: Admin }<br>]</pre><pre>export const router = new VueRouter({ routes }) </pre><p>In router.js we have two code-splitted routes that are loaded lazily. With the code that we have seen above our admin Vuex module is still in main app.js bundle because of it’s static import in the store.js.</p><p>Let’s fix this and deliver this module only to the users entering /admin route so other’s will not download the redundant code.</p><p>To do so we will load the admin module in /admin route component instead of importing and registering it instore.js.</p><pre>// store.js<br>import { userAccountModule } from &#39;./modules/userAccount&#39;</pre><pre>export const store = new Vuex.Store({<br>  modules: {<br>    user: userAccountModule, <br>  }<br>})</pre><pre>// Admin.vue<br>import adminModule from &#39;./admin.js&#39;</pre><pre>export default { <br>  // other component logic<br>  mounted () { <br>    this.$store.registerModule(&#39;admin&#39;, adminModule)<br>  },<br>  beforeDestroy () {<br>   this.$store.unregisterModule(&#39;admin&#39;)<br>  }<br>}</pre><p>Let’s take a look at what happened!</p><p>We are importing and registering admin Store inside Admin.vue (/admin route) right after it’s mounted. Later in the code we are unregistering the module once the user exits admin panel to prevent multiple registrations of the same module.</p><p>Now because admin module is imported inside Admin.vue instead of store.js it will be bundled together with code-splitted Admnin.vue!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/911/1*6w7lmBHGSniC1nfz4qLdUg.png" /></figure><blockquote><strong>Important note</strong>: If you’re using SSR mode make sure that you’re registering the module in mounted hook. Otherwise it can led to memory leaks since beforeDestroy hook is not evaluated on the server side.</blockquote><p>Now we know how to use dynamic Vuex module registration to distribute our route-specific modules into proper bundles. Let’s take a look at slightly more complicated use case.</p><h3>Lazy loading Vuex modules</h3><p>Let’s say we have testimonials section on our Home.vue where we want to display positive opinions about our services. There’s a lot of them so we don’t want to show them right after user enters our website. It’s much better to display them only if user want it. We can add <em>“Show Testimonials”</em> button that will load and display the testimonials below it after clicked.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Y8puS6MPWVBsR_amfZT1Rw.png" /></figure><p>To store testimonials data we need one more Vuex module. Let’s call it testimonials. The module will be responsible for showing previously added testimonials and adding new one. We don’t need to know about implementation details.</p><p>We want testimonials module to be downloaded ONLY if user clicks the button since it’s not needed before. Let’s see how we can make use of dynamic module registration and dynamic imports to achieve this functionality. Testimonials.vue is a component inside Home.vue.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2-b6NfyNgstA2S8siebyMw.png" /></figure><p>Let’s quickly review the code.</p><p>When user clicks Show Testimonials button getTestimonials() method is invoked. It is responsible for invoking getTestimonialsModule() which is fetching testimonials.js. Once promise is resolved (which means module is loaded) we are dynamically registering it and dispatching action responsible for fetching testimonials.</p><p>Thanks to dynamic imports testimonials.js content is bundled into a separate file that is downloaded only when getTestimonialsModule method is invoked.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eQjEeTznwCQQgPA3ftDrbw.png" /></figure><p>When we need to exit admin panel we’re just unregistering previously registered module in beforeDestroy lifecycle hook so it’s not gonna be duplicated if we enter this route again.</p><h3>Wrap up</h3><p>Even though static Vuex modules registration is sufficient for most use cases there are some certain situations when we might want to make use of dynamic registration.</p><ul><li><strong>If module is needed only on specific route, </strong>then we can register it dynamically in proper route components so it‘s not ending up in main bundle.</li><li><strong>If module is needed only after some interaction , </strong>then we need to combine dynamic module registration with dynamic import and load module lazily in a proper method.</li></ul><p>Ability to code split Vuex modules is a powerful tool. The more data-related operations you’re dealing with in your application the more savings you’ll get in terms of bundle size.</p><p>In the next part of the series we will learn how to lazily load individual components and, what is more important, which components should be loaded lazily.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ed67cf555976" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/vue-js-app-performance-optimization-part-3-lazy-loading-vuex-modules-ed67cf555976">Vue.js App Performance Optimization: part 3— Lazy loading Vuex modules</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue.js App Performance Optimization: part 2- Lazy loading routes and vendor bundle anti-pattern]]></title>
            <link>https://itnext.io/vue-js-app-performance-optimization-part-2-lazy-loading-routes-and-vendor-bundle-anti-pattern-4a62236e09f9?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/4a62236e09f9</guid>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[web-performance]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Sat, 09 Feb 2019 16:51:49 GMT</pubDate>
            <atom:updated>2019-09-11T09:41:09.118Z</atom:updated>
            <content:encoded><![CDATA[<h3>Vue.js App Performance Optimization: part 2— Lazy loading routes and vendor bundle anti-pattern.</h3><p><strong>In the </strong><a href="https://itnext.io/vue-js-app-performance-optimization-part-1-introduction-to-performance-optimization-and-lazy-29e4ff101019"><strong>previous article </strong></a><strong>we learned what code splitting is, how it works with Webpack and how to make use of it with lazy loading in Vue app. Now we will dig a little bit deeper into the code and learn most useful pattern for code splitting Vue.js apps.</strong></p><p>This series is based on learnings from <a href="https://github.com/DivanteLtd/vue-storefront">Vue Storefront</a> performance optimization process. By using below techniques we were able to cut off size of our initial bundle by 70% and made it load in a blink of an eye.</p><p><a href="https://vueschool.io/articles/vuejs-tutorials/lazy-loading-and-code-splitting-in-vue-js/">Part 1 — Introduction to performance optimization and lazy loading.</a></p><p><a href="https://vueschool.io/articles/vuejs-tutorials/vue-js-router-performance/">Part 2 — Lazy loading routes and vendor bundle anti-pattern.</a></p><p><a href="https://itnext.io/vue-js-app-performance-optimization-part-3-lazy-loading-vuex-modules-ed67cf555976">Part 3 — Lazy loading Vuex modules</a></p><p>Part 4 — Delivering good waiting experience and lazy loading individual components — soon</p><p>Part 5 — Lazy loading libs and finding smaller equivalents — soon</p><p>Part 6 — Performance-friendly usage of UI libraries</p><p>Part 7— Making use of Service Worker cache — soon</p><p>Part 8— Prefetching</p><h3>Article moved</h3><p>Hey this article has been updated with much more insights and moved to VueSchool blog <a href="https://vueschool.io/articles/vuejs-tutorials/vue-js-router-performance/">here</a>!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4a62236e09f9" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/vue-js-app-performance-optimization-part-2-lazy-loading-routes-and-vendor-bundle-anti-pattern-4a62236e09f9">Vue.js App Performance Optimization: part 2- Lazy loading routes and vendor bundle anti-pattern</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue Storefront 1.8 — the power of VS community!]]></title>
            <link>https://medium.com/the-vue-storefront-journal/vue-storefront-1-8-power-of-vs-community-6809711824e3?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/6809711824e3</guid>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[pwa]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Fri, 08 Feb 2019 10:12:29 GMT</pubDate>
            <atom:updated>2019-02-19T19:12:29.091Z</atom:updated>
            <content:encoded><![CDATA[<h3>Vue Storefront 1.8 — the power of the VS community!</h3><p><strong>The 1.8 milestone is truly showing the power and scale of the </strong><a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra"><strong>Vue Storefront</strong></a><strong> community. Even though the core team is focused mostly on delivering the new default theme, our community members are extremely active: organizing hackathons, creating new modules, themes and contributing to the core! Looks like VS can be safely considered a truly community-driven project!</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jtlAIbnIJ6thnqrqFgUwSw.png" /></figure><h3>The Demo Theme Challenge — winners</h3><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*k8kWByBg3I8oRgyp" /></figure><p>A few months ago, we announced The Demo Theme Challenge and we are happy to announce the winner! Our partner <a href="http://absoluteweb.com/"><strong>Absolute Web Services</strong></a><strong> </strong>not only made a stunning design but also implemented it as a live VS shop! Congrats!</p><h3>Vue Storefront on Twitter</h3><p>Vuetique created by @AbsoluteWebINC represents user-friendly approach by giving the layout a totally fresh, tidy look ✅ No wonder it won our Demo Theme Contest 🤷 https://t.co/Troa9KtgSv</p><p><a href="https://medium.com/the-vue-storefront-journal/and-the-winner-is-vuetique-io-451c29003791">Here</a> you can find the full results of The Demo Theme Challenge and <a href="https://demo.vuetique.io/">here</a> is the Vuetique demo.</p><h3>The Marketplace Challenge</h3><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*q5chX0m1jElHUo6iNq8zzA.png" /></figure><p>The Vue Storefront community is getting bigger and bigger. <strong>We’ve decided that now is the perfect time to introduce Vue Storefront marketplace</strong> where community members can share their work and make money on it.</p><p>To launch our official Marketplace, we need to build the critical mass of the modules, themes, and integrations first, that is why <strong>we are inviting freelancers and companies to build:</strong></p><ul><li><strong>Integrations</strong> — like WooCommerce, IBM Websphere, Hybris, Demandware, and Prestashop. Other third-party platforms are welcome;</li><li><strong>Custom Vue Storefront Modules</strong> — especially for Payment providers — like our <a href="https://github.com/danrcoull/vsf-payment-braintree">Braintree</a>, <a href="https://github.com/develodesign/vsf-payment-paypal">Paypal integrations</a>;</li><li><strong>Custom Vue Storefront Themes.</strong></li></ul><p>Send us your work <strong>before 1st of March</strong>. The best authors will be promoted and officially showcased. Moreover, we have prepared some cool rewards. You can read about the contest and rewards <a href="https://medium.com/the-vue-storefront-journal/the-vue-storefront-marketplace-9c2bfa00d1a6">here</a>.</p><h3>Improved External Checkout by Vendic</h3><p>Our Core Partner Vendic.nl has taken care of the External Checkout Module, porting it to the new VS architecture and extending the configuration capabilities. <a href="https://github.com/Vendic/magento2-external-checkout">Check the official repository</a>.</p><h3>Vue Storefront hackathon #5 in Milan by BitBull</h3><p>Last week our core partner BitBull organized the first Vue Storefront hackathon in Italy, and it’s safe to say that it was a huge success!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wQrkkfVmeJEISxrS" /><figcaption>The grand opening by Andrea Chiarottino — CTO of Eataly. They provided us with an amazing venue and food.</figcaption></figure><p><a href="https://medium.com/the-vue-storefront-journal/vue-storefront-hackathon-goes-international-summary-of-5th-edition-in-milan-d31fa366f97">Here</a> you can read the event’s summary by Gennaro Vietri — CTO of BitBull.</p><h3>Vue Storefront hackathon #6 in Amsterdam by Get_Noticed</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*cj0xqidhlvkZDXSDtANZYw.png" /></figure><p>Just two weeks after the hackathon in Milan, we are moving to Amsterdam. <br>Two days before one of the biggest (or just the biggest?) <a href="https://divante.co/news/events?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">Vue.js conferences</a> in the world our core partner <strong>Get_Noticed is hosting another Vue Storefront hackathon</strong>. This time it’s the first one ever in the Netherlands!</p><p><strong>If you want to participate in person or remotely please sign up </strong><a href="https://www.eventbrite.com/e/vue-storefront-hackathon-amsterdam-tickets-54973518273"><strong>here</strong></a><strong>.</strong></p><p>Before the hackathon, there will be free training that’ll cover the Vue Storefront basics.</p><h3>Tom Karwatka on #MM19IN</h3><p>Last week, Divante CEO <a href="https://twitter.com/tomik99">Tom Karwatka</a> was speaking about Progressive Web Apps in eCommerce and <a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">Vue Storefront</a> during Meet Magento India 2019. The amount of positive feedback at the conference and on social media was stunning, and it looks like we had no idea as to the extent of VS’s popularity in India!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*0ul2zCBUhZG59etUbkCvGA.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JGRwoNklmzeoz-sW613SKQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*54jRRR0PY1usOoRuXZyIZQ.jpeg" /></figure><p>The outcome is the first official Vue Storefront partner in India — <a href="https://aureatelabs.com/">Aureate Labs</a>. Welcome to the community!</p><h3>What else?</h3><ul><li>Upcoming Magento MSI integration</li></ul><h3>Filip Rakowski on Twitter</h3><p>@magento MSI support for @VueStorefront is coming https://t.co/7Zt8ofccUt. Amazing job @aleron75! I really like this in-depth analysis you made ;)</p><ul><li>Payment Request API integration PoC</li></ul><p><a href="https://github.com/DivanteLtd/vue-storefront/pull/2306">Feature 2184: Payment Request API Integration by qiqqq · Pull Request #2306 · DivanteLtd/vue-storefront</a></p><ul><li>Adyen payment’s support by Melvin Hamilton Digital</li></ul><p><a href="https://github.com/melvin-hamilton-digital/vsf-payment-adyen">melvin-hamilton-digital/vsf-payment-adyen</a></p><ul><li>The first usages of PWA/AMP combination in Vue Storefront</li></ul><h3>Filip Rakowski on Twitter</h3><p>Did you know that you can use @Google #AMP in combination with #PWA in @VueStorefront ? It&#39;s an amazing combo for SEO and is serving our users very well! https://t.co/znCIJpdBNq #javascript</p><h3>What’s new?</h3><h4>Added</h4><ul><li>Chinese translation added — <a href="https://github.com/wadereye">@wadereye</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2265">#2265</a>)</li><li>Categories filter in search view — <a href="https://github.com/kjugi">@kjugi</a>, <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/1710">#1710</a>)</li><li>AsyncDataLoader feature — <a href="https://github.com/pkarw">@pkarw</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2300">#2300</a>)</li><li>Events list page in docs — <a href="https://github.com/jablpiotrek">@jablpiotrek</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/776">#776</a>)</li><li>Keyboard support for account and cookie close buttons — <a href="https://github.com/anqaka">@anqaka</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2258">#2258</a>)</li><li>Support typescript in build scripts — <a href="https://github.com/marlass">@marlass</a>, <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2260">#2260</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2273">#2273</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2324">#2324</a>)</li><li>Possibility to have sticky notifications — <a href="https://github.com/phoenixdev-kl">@phoenixdev-kl</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2307">#2307</a>)</li><li>Added a scss to manage global form style — <a href="https://github.com/lorenaramonda">@lorenaramonda</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2316">#2316</a>)</li><li>Manage products with zero price — <a href="https://github.com/MarcoGrecoBitbull">@MarcoGrecoBitbull</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2327">#2327</a>)</li></ul><h4>Changed / Improved</h4><ul><li>Theme structure improvements — <a href="https://github.com/filrak">@filrak</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2223">#2223</a>)</li><li>Type interfaces and refactor ing— <a href="https://github.com/filrak">@filrak</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2227">#2227</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2267">#2267</a>)</li><li>Changed beforeRegistration and afterRegistration hooks signature. Now it contains only one object VSF. The subfields are the same as before so changing beforeRegistration( Vue, config, store, isServer ) to beforeRegistration({ Vue, config, store, isServer })(and same with afterRegistration) is enough to make a proper migration to the new API. — <a href="https://github.com/filrak">@filrak</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2330">#2330</a>)</li><li>Typo fixes — <a href="https://github.com/youanden">@youanden</a>, Micheledinocera (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2229">#2229</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2329">#2329</a>)</li><li>Bundle products price calculation fix — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2371">#2371</a>)</li><li>Added the Hotjar snippet and fixed isServer flag in module hooks — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/840">#840</a>)</li><li>Location of type files — <a href="https://github.com/kruchy8">@kruchy8</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2226">#2226</a>)</li><li>Improved theme registration — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2233">#2233</a>)</li><li>SSR renderings for logged in users — <a href="https://github.com/vue-kacper">@vue-kacper</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2234">#2234</a>)</li><li>ElasticSearch fuzzy search — <a href="https://github.com/qbo-tech">@qbo-tech</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2340">#2340</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2354">#2354</a>)</li><li>Documentation improvements — <a href="https://github.com/martaradziszewska">@martaradziszewska</a>, <a href="https://github.com/wilfriedwolf">@wilfriedwolf</a>, <a href="https://github.com/fvillata">@fvillata</a>, <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2210">#2210</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2244">#2244</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2289">#2289</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2369">#2369</a>)</li><li>Support regional characters in urls — <a href="https://github.com/Aekal">@Aekal</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2243">#2243</a>)</li><li>store/lib/search has been moved to core/lib/search — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2225">#2225</a>)</li><li>store/lib/multistore has been moved to core/lib/multistore — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2224">#2224</a>)</li><li>BaseSelect syntax improvements — <a href="https://github.com/jszczech">@jszczech</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2237">#2237</a>)</li><li>Optional cart discounts display on side cart — <a href="https://github.com/mcspronko">@mcspronko</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/1758">#1758</a>)</li><li>Special price dates checking — backport of <a href="https://github.com/Igloczek">@Igloczek</a>’s (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2245">#2245</a>)</li><li>Category filters reset functionality on mobile — <a href="https://github.com/vue-kacper">@vue-kacper</a>, <a href="https://github.com/patzick">@patzick</a>, <a href="https://github.com/renatocason">@renatocason</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2262">#2262</a>)</li><li>Improve sortBy mobile view — <a href="https://github.com/martaradziszewska">@martaradziszewska</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2251">#2251</a>)</li><li>Slide animations to menu, search, wishlist and minicart components — <a href="https://github.com/Aekal">@Aekal</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2256">#2256</a>)</li><li>Fixed wishlist store module to not be lazy loaded — <a href="https://github.com/vue-kacper">@vue-kacper</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2249">#2249</a>)</li><li>Share webpack typescript config with docker container — <a href="https://github.com/lukeromanowicz">@lukeromanowicz</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2269">#2269</a>)</li><li>After checkout create logged-in cart for logged-in users if using order Direct Backend Sync — <a href="https://github.com/grimasod">@grimasod</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2302">#2302</a>)</li><li>Output cache clearing supports versioning — <a href="https://github.com/Igloczek">@Igloczek</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2333">#2333</a>, <a href="https://github.com/DivanteLtd/vue-storefront/pull/2359">#2359</a>)</li><li>Cash on delivery + Shipping addresses fixed for virtual products — <a href="https://github.com/pkarw">@pkarw</a>(<a href="https://github.com/DivanteLtd/vue-storefront/pull/2366">#2366</a>)</li><li>Improved static pages caching strategy — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2281">#2281</a>)</li><li>Magento 2.3 MSI work-around (it’s still not supported fully) — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2366">#2366</a>)</li><li>Product zoom picture centered — <a href="https://github.com/ptylek">@ptylek</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2178">#2178</a>)</li><li>Fixed tracking in analytics module — <a href="https://github.com/jahvi">@jahvi</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2278">#2278</a>)</li><li>Improved merge the store modules array with extended module config — <a href="https://github.com/DaanKouters">@DaanKouters</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2274">#2274</a>)</li><li>ElasticSearch fuzzy search, scoring, boosting + other improvements — <a href="https://github.com/qbo-tech">@qbo-tech</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2340">#2340</a>)</li><li>Turned off compression plugin, nginx serves brotli compression — <a href="https://github.com/patzick">@patzick</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2254">#2254</a>)</li><li>Improved user account menu UX on the desktop — <a href="https://github.com/vue-kacper">@vue-kacper</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2363">#2363</a>)</li><li>Added About us missing route — <a href="https://github.com/lorenaramonda">@lorenaramonda</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2320">#2320</a>)</li><li>Fixed used variable for products count in category — <a href="https://github.com/renatocason">@renatocason</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2304">#2304</a>)</li><li>Override console with logger — <a href="https://github.com/daaru00">@daaru00</a>(<a href="https://github.com/DivanteLtd/vue-storefront/issues/2235">#2235</a>)</li><li>Fixed variable call about feedback email — <a href="https://github.com/PhantomDraven">@PhantomDraven</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2318">#2318</a>)</li><li>Output cache clearing versioning — <a href="https://github.com/Igloczek">@Igloczek</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2333">#2333</a>)</li><li>Improved paddings on select fields — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2361">#2361</a>)</li><li>Fixed lack of modal backdrop — <a href="https://github.com/vue-kacper">@vue-kacper</a>, <a href="https://github.com/giuliachiola">@giuliachiola</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2319">#2319</a>)</li><li>Form validations and improvements — <a href="https://github.com/vue-kacper">@vue-kacper</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2348">#2348</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2349">#2349</a>, <a href="https://github.com/DivanteLtd/vue-storefront/issues/2347">#2347</a>)</li><li>Changing product quantity in cart — <a href="https://github.com/mdanilowicz">@mdanilowicz</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2345">#2345</a>)</li><li>Product attribute values as array — <a href="https://github.com/afirlejczyk">@afirlejczyk</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2379">#2379</a>)</li><li>Improved fetching customAttributes — <a href="https://github.com/afirlejczyk">@afirlejczyk</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2107">#2107</a>)</li><li>Removed compare button from product mobile view — <a href="https://github.com/patzick">@patzick</a> (<a href="https://github.com/DivanteLtd/vue-storefront/issues/2370">#2370</a>)</li><li>Configurable options attribute descriptor — <a href="https://github.com/pkarw">@pkarw</a> (<a href="https://github.com/DivanteLtd/vue-storefront/pull/2384">#2384</a>)</li></ul><p>Learn more about Vue Storefront community and partners at <a href="https://www.vuestorefront.io/partners/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_FRA&amp;utm_content=medium_FRA">vuestorefront.io</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6809711824e3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-vue-storefront-journal/vue-storefront-1-8-power-of-vs-community-6809711824e3">Vue Storefront 1.8 — the power of VS community!</a> was originally published in <a href="https://medium.com/the-vue-storefront-journal">The Vue Storefront Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introduction to Vue Storefront — a quick ‘getting started’ guide.]]></title>
            <link>https://medium.com/the-vue-storefront-journal/introduction-to-vue-storefront-a-quick-getting-started-guide-d119023ed67d?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/d119023ed67d</guid>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[progressive-web-app]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Mon, 04 Feb 2019 11:36:00 GMT</pubDate>
            <atom:updated>2019-02-09T17:12:33.406Z</atom:updated>
            <content:encoded><![CDATA[<h3>Introduction to Vue Storefront — a quick ‘getting started’ guide</h3><p><strong>Vue Storefront is rather a complex solution with a lot of possibilities. Learning all of them can take some time. In this article, I’ll try to explain all its crucial concepts in a few minutes to prove that it’s all you need to start playing with </strong><a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra"><strong>Vue Storefront</strong></a><strong>.</strong></p><h4><strong>What is Vue Storefront?</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/430/0*X7cXhVkWidbWFrbM" /></figure><p>Vue Storefront is a headless and backend-agnostic eCommerce <a href="https://developers.google.com/web/progressive-web-apps/">Progressive Web App</a> written in Vue.js. The fact that it uses headless architecture allows Vue Storefront to be connected with any eCommerce platform, so it can be a frontend PWA for Magento, Shopify, BigCommerce, WooCommerce, etc.</p><p>It’s a very popular <a href="https://github.com/DivanteLtd/vue-storefront">Open Source project</a> with a strong and growing community.</p><p><strong>Key features of Vue Storefront are:</strong></p><ul><li>being platform-agnostic</li><li>focus on performance</li><li>mobile-first approach</li><li>cutting-edge tech</li><li>no limitations in theming and customization</li><li>being Open Source with MIT license</li><li>great developer experience</li><li>out of the box Server-Side Rendering (for SEO)</li><li>offline mode</li></ul><p><a href="https://vuestorefront.io/?utm_source=medium&amp;utm_medium=social&amp;utm_campaign=medium_fra&amp;utm_content=medium_fra">Here</a> you can find Vue Storefront landing page and <a href="https://github.com/DivanteLtd/vue-storefront">here</a> is a GitHub repository.</p><h3><strong>How does it connect with backend platforms?</strong></h3><p>Vue Storefront manages to be platform agnostic thanks to the <a href="https://github.com/DivanteLtd/vue-storefront-api">vue-storefront-api</a> and <a href="https://github.com/DivanteLtd/vue-storefront#integrations">dedicated API connectors </a>for eCommerce backend platforms. The data format in vue-storefront-api is always the same for any platform, which means no matter which eCommerce backend you use, your frontend remains the same — without any changes.</p><p>It’s a great strategy for migrations since you can easily migrate from one platform to another (or from one version to another, e.g. Magento 1 -&gt; 2) without touching your frontend.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*hMx8sOXxiSefz-3S.png" /></figure><p>The API connector works in two phases:</p><ul><li><strong>data pump</strong> (on the image <a href="https://github.com/DivanteLtd/mage2vuestorefront">mage2nosql</a>) pulls static data (catalog, orders etc) from your eCommerce platform to Vue Storefront ElasticSearch and changes its format to the one consumed by vue-storefront-api. After pulling the data, you can display your product catalog in Vue Storefront. After pumping the data into ElasticSearch, it will stay in sync with changes on the backend platform side and update its content.</li><li><strong>worker pool </strong>is synchronization of so-called dynamic calls (user sessions, cart rules etc) that can’t be stored in the database and need to be called by vue-storefront-api directly from the backend platform.</li></ul><p>While managing these two phases of integration, Vue Storefront can work with your backend platform.</p><p>Some of the most popular backend platforms already have their integrations (<a href="https://github.com/DivanteLtd/mage2vuestorefront">Magento 2</a>, <a href="https://github.com/DivanteLtd/magento1-vsbridge">Magento 1</a>, <a href="https://github.com/DivanteLtd/coreshop-vsbridge">CoreShop</a>, <a href="https://github.com/DivanteLtd/bigcommerce2vuestorefront">BigCommerce</a>, <a href="https://github.com/DivanteLtd/woocommerce2vuestorefront">WooCommerce</a>) but you can easily make your own with the <a href="https://github.com/DivanteLtd/vue-storefront-integration-boilerplate">integration boilerplate</a>.</p><p>The blue parts on the diagram are responsible for offline cache and will be explained later in the article.</p><h3>How does it work?</h3><p>There are 3 concepts you need to be familiar with while working with Vue Storefront.</p><ul><li><strong>Vue Storefront Core </strong>(<a href="https://github.com/DivanteLtd/vue-storefront/tree/master/core">core</a> folder) is the glue for all its features that allow Vue Storefront to work. It contains all the entry points, SSR behavior, builds process, in-app libs and helpers. You shouldn’t touch this folder directly when building your own implementations in order to continue to receive updates.</li><li><a href="https://docs.vuestorefront.io/guide/modules/introduction.html"><strong>Vue Storefront Modules</strong></a> (core/modules and src/modules) is the eCommerce features. Each module is one encapsulated feature (like cart, wishlist, catalog, some third-party integration). You can add/remove/edit these modules as you will and compose your Vue Storefront shop with only the features that you need. They are also used for 3rd party extensions</li><li><strong>Vue Storefront Themes </strong>(src/themes) are the actual shop implementations. In themes, you can use and extend all the logic from registered modules/core and add your HTML markup and styles. Vue Storefront provides a fully customizable default theme.</li></ul><p>To summarize: your shop is basically a Vue storefront theme that uses features provided by modules. Vue Storefront core glues it all together.</p><p>Knowing these three concepts allows you to confidentially work with Vue Storefront and make your own shops.</p><p>Useful materials: <a href="https://docs.vuestorefront.io/guide/basics/project-structure.html#structure-details">Vue Storefront project structure</a>.</p><h3>Installing Vue Storefront</h3><p>When you want to play with Vue Storefront there are three options:</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*dz-mwiEQ_Qkzpd5H" /><figcaption>This is everything you need to have VS working with our demo backend.</figcaption></figure><ul><li>You can set up the frontend connected to our demo backend platform (best to try out the Vue Storefront).</li><li>You can set up the frontend with your own vue-storefront-api and database dumped from demo.</li><li>You can set up the frontend with vue-storefront-api connected to your eCommerce backend.</li></ul><p>To do any of this, simply type &quot;yarn installer&quot; in the root directory of the project and answer the questions in the console. Once the installation is done, type &quot;yarn dev&quot; to run your project (by default on port 3000). No matter what option you choose, you can change the settings in config file later.</p><h3>Vue Storefront config file</h3><p>Most of the Vue Storefront configuration (like the active theme, backend API addresses, multi store setup, etc.) is done through its <a href="https://docs.vuestorefront.io/guide/basics/configuration.html">config file</a> which can be found under the &quot;config&quot; folder. The default.json file contains all the default setup.</p><p>For your own implementation, you should create a local.json file and include the fields from default.json that you want to override. These two files will be merged in favour of local.json during the build process. If you use the installer to set up your Vue Storefront instance, it’ll generate the proper config files.</p><h3>Building themes in Vue Storefront</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jMel95nhs5UTIi2DQdeq4Q.png" /></figure><p>While making themes in Vue Storefront in most cases, all you need to take care of is creating your own HTML and CSS markup. All the required business logic is exposed by the core with its core modules and can be easily injected into any of the theme components.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tMwC0smduKIwKh82jTiJmw.png" /><figcaption>The business logic from the core component can be easily injected into any theme component as a Vue.js mixin.</figcaption></figure><p>The mechanism of injecting core business logic into themes is very simple. We use <a href="https://vuejs.org/v2/guide/mixins.html">Vue.js mixins</a> to keep upgradable business logic in the core. So assuming we have a core Microcart component with business logic like this (left side), we can easily inject it into any of our theme components (right side) just by importing it and adding as a mixin mixins: [Microcart]. This is all you need to make use of core business logic inside your theme. With this approach, we can easily ship updates to all core components without breaking your shop.</p><p>The easiest way to create your own theme is to create a copy of the default one, change its name in its package.json file, change the active theme in config/local.json and run yarnto make <a href="https://github.com/lerna/lerna">Lerna</a> linking (which we use for monorepos).</p><h3>Offline mode and cache</h3><p>Vue Storefront still works even while the user is offline. We managed to do this by making heavy use of the browser cache.</p><ul><li><strong>For the static assets</strong> (only prod) we use the <a href="https://github.com/GoogleChromeLabs/sw-precache">sw-precache</a> plugin (config can be found in core/build/webpack.prod.sw.config.js ). They are cached in Service Worker and can be inspected under theApplication tab of your dev tools.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BHVzt7oCIxcM3bNPZriKmw.png" /><figcaption>Here you can find cached static assets. Please notice that Service Worker works only in production mode.</figcaption></figure><ul><li><strong>For the catalog and store data cache</strong> we use IndexedDB and Local Storage. We also prefetch products from visited categories so once you enter one, all of its products are available offline. The mechanism of offline storage is located under core/lin./storage.</li></ul><p>We use some of the cached data even while the user is online, to display the content instantly. This is why Vue Storefront is so fast.</p><h3>What else</h3><p>You may not believe me but this is all you need to know to start working with Vue Storefront! After learning the basics just visit our docs and community slack to dig deeper into the project.</p><h3>Useful links</h3><ul><li><a href="https://docs.vuestorefront.io/">Documentation</a></li><li><a href="https://join.slack.com/t/vuestorefront/shared_invite/enQtMzA4MTM2NTE5NjM2LTI1M2RmOWIyOTk0MzFlMDU3YzJlYzcyYzNiNjUyZWJiMTZjZjc3MjRlYmE5ZWQ1YWRhNTQyM2ZjN2ZkMzZlNTg">Community slack invitation link</a></li><li><a href="https://docs.vuestorefront.io/guide/basics/project-structure.html">Project structure explained</a></li><li><a href="https://docs.vuestorefront.io/guide/basics/configuration.html">Configuration file explained</a></li><li><a href="https://docs.vuestorefront.io/guide/extensions/introduction.html">Extending Vue Storefront</a></li><li><a href="https://docs.vuestorefront.io/guide/basics/contributing.html#branches">How to contribute</a></li></ul><h3>Video with training</h3><p>You can also watch a video recording from 4th Vue Storefront hackathon with free introduction training</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FIL2HMtvf_hw%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DIL2HMtvf_hw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FIL2HMtvf_hw%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/3b12d19924c2806fb29b911a0927478d/href">https://medium.com/media/3b12d19924c2806fb29b911a0927478d/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d119023ed67d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/the-vue-storefront-journal/introduction-to-vue-storefront-a-quick-getting-started-guide-d119023ed67d">Introduction to Vue Storefront — a quick ‘getting started’ guide.</a> was originally published in <a href="https://medium.com/the-vue-storefront-journal">The Vue Storefront Journal</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue.js App Performance Optimization: part 1 — Introduction to performance optimization and lazy…]]></title>
            <link>https://itnext.io/vue-js-app-performance-optimization-part-1-introduction-to-performance-optimization-and-lazy-29e4ff101019?source=rss-2f6fdc60db8b------2</link>
            <guid isPermaLink="false">https://medium.com/p/29e4ff101019</guid>
            <category><![CDATA[web-performance]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Filip Rakowski]]></dc:creator>
            <pubDate>Tue, 29 Jan 2019 10:25:34 GMT</pubDate>
            <atom:updated>2019-07-11T09:49:26.371Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2wAMCucmzFu_u8L0yQrQNw.png" /></figure><h3>Vue.js App Performance Optimization: part 1 — Introduction to performance optimization and lazy loading.</h3><p><strong>While mobile-first approach becomes a standard and uncertain network conditions are something we should always take into consideration it’s harder and harder to keep your application loading fast. In this series I’ll dig deep into Vue performance optimization techniques that we are using in </strong><a href="https://github.com/DivanteLtd/vue-storefront"><strong>Vue Storefront</strong></a><strong> and that you can use in your Vue.js applications to make them loading instantly and perform smooth. My goal is to make this series a full and complete guide on Vue apps performance.</strong></p><p><a href="https://vueschool.io/articles/vuejs-tutorials/lazy-loading-and-code-splitting-in-vue-js/">Part 1 — Introduction to performance optimization and lazy loading.</a></p><p><a href="https://itnext.io/vue-js-app-performance-optimization-part-2-lazy-loading-routes-and-vendor-bundle-anti-pattern-4a62236e09f9">Part 2 — Lazy loading routes and vendor bundle anti-pattern.</a></p><p><a href="https://itnext.io/vue-js-app-performance-optimization-part-3-lazy-loading-vuex-modules-ed67cf555976">Part 3 — Lazy loading Vuex modules</a></p><p>Part 4 — Delivering good waiting experience and lazy loading individual components — soon</p><p>Part 5 — Lazy loading libs and finding smaller equivalents — soon</p><p>Part 6 — Performance-friendly usage of UI libraries</p><p>Part 7 — Making use of Service Worker cache — soon</p><p>Part 8 — Prefetching</p><h3>Article moved and refreshed!</h3><p>Hey! This article was moved to Vue School blog <a href="https://vueschool.io/articles/vuejs-tutorials/lazy-loading-and-code-splitting-in-vue-js/">here</a>. I refreshed it with better examples and few more tricks :) Stay tuned for the next parts also on Vue School blog!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=29e4ff101019" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/vue-js-app-performance-optimization-part-1-introduction-to-performance-optimization-and-lazy-29e4ff101019">Vue.js App Performance Optimization: part 1 — Introduction to performance optimization and lazy…</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>