<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nuxt</title>
    <description>The latest articles on DEV Community by Nuxt (@nuxt).</description>
    <link>https://dev.to/nuxt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F473%2F478c6c54-800e-429e-ac0d-9b4ab425c642.png</url>
      <title>DEV Community: Nuxt</title>
      <link>https://dev.to/nuxt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nuxt"/>
    <language>en</language>
    <item>
      <title>NuxtJS: From Terminal to Browser</title>
      <dc:creator>Sébastien Chopin</dc:creator>
      <pubDate>Tue, 04 Jun 2019 13:00:24 +0000</pubDate>
      <link>https://dev.to/nuxt/nuxtjs-from-terminal-to-browser-35bc</link>
      <guid>https://dev.to/nuxt/nuxtjs-from-terminal-to-browser-35bc</guid>
      <description>&lt;p&gt;How we changed the developer experience to stop switching between the terminal and browser.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Nuxt.js is a Vue.js framework to create different kind of web applications with the &lt;strong&gt;same directory structure &amp;amp; conventions&lt;/strong&gt;: Universal, Single Page, PWA or Static Generated.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;ℹ️ These features are all available with &lt;a href="https://github.com/nuxt/nuxt.js/releases/tag/v2.8.0"&gt;v2.8.0 release&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Problems
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Developing JavaScript applications with Webpack or any bundler requires to switch between your browser and terminal for debugging purpose.&lt;/li&gt;
&lt;li&gt;Using &lt;code&gt;console.log&lt;/code&gt; to debug when the app is server rendered requires to remember that logs will be displayed on the terminal when refreshing the page.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Solutions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Forwarding Webpack build state right in the browser and display them in a fancy manner.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZLPlTeE3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://user-images.githubusercontent.com/904724/58880743-ec7a3280-86d8-11e9-8856-8d9d22b89b70.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZLPlTeE3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://user-images.githubusercontent.com/904724/58880743-ec7a3280-86d8-11e9-8856-8d9d22b89b70.gif" alt="foward-webpack-build-state" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Same for Hot Module Replacement (really useful when the project gets bigger and takes more time to re-build).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0MRM-R75--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://user-images.githubusercontent.com/904724/58547105-129a6100-8207-11e9-9c61-a93956a17727.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0MRM-R75--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://user-images.githubusercontent.com/904724/58547105-129a6100-8207-11e9-9c61-a93956a17727.gif" alt="nuxt-build-indicator-hmr" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Forwarding SSR logs to the browser in development mode&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rQ7cyPcF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://user-images.githubusercontent.com/904724/58566291-a3396700-8230-11e9-9dd6-09c3ff8578d2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rQ7cyPcF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://user-images.githubusercontent.com/904724/58566291-a3396700-8230-11e9-9dd6-09c3ff8578d2.gif" alt="nuxt-ssr-logs-forwarding" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  NuxtJS Vision
&lt;/h2&gt;

&lt;p&gt;The purpose to these changes is to use the terminal for commands only.&lt;/p&gt;

&lt;p&gt;Now you can focus right on your code and its visual result 🙂&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Be lazy, be smart, be Nuxt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documentation: &lt;a href="https://nuxtjs.org"&gt;https://nuxtjs.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/nuxt/nuxt.js"&gt;https://github.com/nuxt/nuxt.js&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Loading Screen source code: &lt;a href="https://github.com/nuxt/loading-screen"&gt;https://github.com/nuxt/loading-screen&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/nuxt_js"&gt;https://twitter.com/nuxt_js&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vue</category>
      <category>nuxt</category>
      <category>webpack</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Nuxt.js v2.4.0 is out! TypeScript, Smart prefetching and more...</title>
      <dc:creator>Sébastien Chopin</dc:creator>
      <pubDate>Mon, 28 Jan 2019 18:05:36 +0000</pubDate>
      <link>https://dev.to/nuxt/nuxtjs-v240-is-out-typescript-smart-prefetching-and-more-18d</link>
      <guid>https://dev.to/nuxt/nuxtjs-v240-is-out-typescript-smart-prefetching-and-more-18d</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;You can see this release note on GitHub as well: &lt;a href="https://github.com/nuxt/nuxt.js/releases/tag/v2.4.0" rel="noopener noreferrer"&gt;https://github.com/nuxt/nuxt.js/releases/tag/v2.4.0&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Important news 👀
&lt;/h2&gt;

&lt;h3&gt;
  
  
  New core team member 🐤
&lt;/h3&gt;

&lt;p&gt;We are really proud to announce Kevin Marrec (&lt;a class="mentioned-user" href="https://dev.to/kevinmarrec"&gt;@kevinmarrec&lt;/a&gt;) as a new core team member of Nuxt.js. He is French 🇫🇷 and responsible for the TypeScript integration 💚 &lt;/p&gt;

&lt;h3&gt;
  
  
  Official Consulting ⛑
&lt;/h3&gt;

&lt;p&gt;We now offer official support &amp;amp; consulting from the core team. We partnered with Otechie for the process and already did some beta-tests with selected companies. &lt;/p&gt;

&lt;p&gt;Are you interested or curious?&lt;br&gt;
Learn more on &lt;a href="https://otechie.com/nuxt" rel="noopener noreferrer"&gt;https://otechie.com/nuxt&lt;/a&gt; 🙌&lt;/p&gt;
&lt;h3&gt;
  
  
  RFC Process 📎
&lt;/h3&gt;

&lt;p&gt;We invite you to take a look at our &lt;a href="https://github.com/nuxt/rfcs" rel="noopener noreferrer"&gt;nuxt/rfcs&lt;/a&gt; repository where we discuss the future of Nuxt and its vision.&lt;/p&gt;

&lt;p&gt;Here are some interesting proposals if you want to learn more about the upcoming changes of Nuxt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nuxt/rfcs/issues/22" rel="noopener noreferrer"&gt;Full static generated mode&lt;/a&gt; to generate offline-ready static websites with Nuxt by default&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nuxt/rfcs/issues/20" rel="noopener noreferrer"&gt;Fabula&lt;/a&gt;, a Vue/Nuxt-inspired tool for running tasks on local and remote hosts&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nuxt/rfcs/issues/16" rel="noopener noreferrer"&gt;Improve @nuxt/config package&lt;/a&gt; to support a &lt;code&gt;config/&lt;/code&gt; directory and autocomplete&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nuxt/rfcs/issues/15" rel="noopener noreferrer"&gt;Nuxt Workers&lt;/a&gt; to open more possibilities on the server part (clustering, PM2 integration, HMR on the server and more)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nuxt/rfcs/issues/10" rel="noopener noreferrer"&gt;Module improvements&lt;/a&gt; to give more power to Nuxt modules&lt;/li&gt;
&lt;li&gt;And &lt;a href="https://github.com/nuxt/rfcs/issues" rel="noopener noreferrer"&gt;many more&lt;/a&gt; 💚 &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Release Plan 🚢
&lt;/h3&gt;

&lt;p&gt;Starting with this release, Nuxt will adhere to a formalized release plan (as good as possible). Also, an end of life for older major versions is defined within &lt;a href="https://github.com/nuxt/nuxt.js/blob/dev/RELEASE_PLAN.md" rel="noopener noreferrer"&gt;RELEASE_PLAN.md&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Quick summary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nuxt major releases are planned every 6 months.&lt;/li&gt;
&lt;li&gt;The release cycle for Nuxt.js minor versions is roughly 4 weeks.&lt;/li&gt;
&lt;li&gt;Fixes will be released as soon as possible after the actual PR/commit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We strongly invite you to read the &lt;a href="https://github.com/nuxt/nuxt.js/blob/dev/RELEASE_PLAN.md" rel="noopener noreferrer"&gt;RELEASE_PLAN.md&lt;/a&gt; for further details.&lt;/p&gt;
&lt;h3&gt;
  
  
  Thank you ❤️
&lt;/h3&gt;

&lt;p&gt;We want to specially thanks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Our contributors submitting bug reports, feature requests and commenting on issues&lt;/li&gt;
&lt;li&gt;Our users participating on our &lt;a href="https://discord.gg/9NWWc7E" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt; and sharing the love by mentioning our &lt;a href="https://twitter.com/nuxt_js" rel="noopener noreferrer"&gt;Twitter account&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;All the devs working for companies using Nuxt.js and who helped us building a &lt;a href="https://github.com/nuxt/nuxt.js/issues/4681" rel="noopener noreferrer"&gt;showcases list&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Our backers and sponsors supporting us financially through our &lt;a href="https://opencollective.com/nuxtjs" rel="noopener noreferrer"&gt;open Collective&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  New Features ✨
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Speaking of TypeScript...
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;TypeScript support has landed!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlos1lghsbaofmsanjwk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlos1lghsbaofmsanjwk.gif" alt="nuxt-ts" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to run Nuxt with TypeScript, we created a new distribution, called &lt;a href="http://npmjs.com/package/nuxt-ts" rel="noopener noreferrer"&gt;nuxt-ts&lt;/a&gt; (we also have &lt;a href="http://npmjs.com/package/nuxt-ts-edge" rel="noopener noreferrer"&gt;nuxt-ts-edge&lt;/a&gt;).&lt;br&gt;
We want to thank &lt;a class="mentioned-user" href="https://dev.to/hmsk"&gt;@hmsk&lt;/a&gt; for his donation of the package name on npm ❤️ &lt;/p&gt;

&lt;p&gt;You can explore &lt;a href="https://github.com/nuxt/nuxt.js/tree/dev/examples/typescript" rel="noopener noreferrer"&gt;Nuxt TypeScript example&lt;/a&gt; or play with it directly in our &lt;a href="https://codesandbox.io/s/github/nuxt/nuxt.js/tree/dev/examples/typescript" rel="noopener noreferrer"&gt;Nuxt TS CodeSandBox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For a more advanced example, you can look at the &lt;a href="https://github.com/nuxt-community/hackernews-nuxt-ts" rel="noopener noreferrer"&gt;HackerNews-TS repo&lt;/a&gt; or play with it on &lt;a href="https://codesandbox.io/s/github/nuxt-community/hackernews-nuxt-ts" rel="noopener noreferrer"&gt;CodeSandBox&lt;/a&gt;, made by &lt;a class="mentioned-user" href="https://dev.to/husayt"&gt;@husayt&lt;/a&gt; &amp;amp; &lt;a class="mentioned-user" href="https://dev.to/kevinmarrec"&gt;@kevinmarrec&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This work has been made by &lt;a class="mentioned-user" href="https://dev.to/kevinmarrec"&gt;@kevinmarrec&lt;/a&gt; with the help of &lt;a class="mentioned-user" href="https://dev.to/pi0"&gt;@pi0&lt;/a&gt; &amp;amp; &lt;a class="mentioned-user" href="https://dev.to/atinux"&gt;@atinux&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Experimental:&lt;/strong&gt; We are waiting for your feedback to keep improving it and breaking changes can occur without a semver major release. However, all changes will be documented properly&lt;/p&gt;
&lt;h3&gt;
  
  
  Smart prefetching ⚡️
&lt;/h3&gt;

&lt;p&gt;Nuxt.js will automagically prefetch the code-splitted pages linked with &lt;code&gt;&amp;lt;nuxt-link&amp;gt;&lt;/code&gt; when visible in the viewport &lt;strong&gt;by default&lt;/strong&gt;. This hugely improves the end user performances, inspired by &lt;a href="https://github.com/GoogleChromeLabs/quicklink" rel="noopener noreferrer"&gt;quicklink&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flzkj8cb0y70o0kioamqc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flzkj8cb0y70o0kioamqc.gif" alt="nuxt-prefetch-comparison" width="1200" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demos are online and we recommend you to try it out to feel the difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No prefetching (v2.3): &lt;a href="https://nuxt-no-prefetch.surge.sh" rel="noopener noreferrer"&gt;https://nuxt-no-prefetch.surge.sh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;With prefetching (v2.4): &lt;a href="https://nuxt-prefetch.surge.sh" rel="noopener noreferrer"&gt;https://nuxt-prefetch.surge.sh&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bonus:&lt;/strong&gt; we added &lt;code&gt;$nuxt.isOnline&lt;/code&gt; and &lt;code&gt;$nuxt.isOffline&lt;/code&gt; which is reactive, so you can use it directly inside your components (see &lt;a href="https://github.com/nuxt/nuxt.js/blob/dev/examples/nuxt-prefetch/layouts/default.vue#L3" rel="noopener noreferrer"&gt;this example&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;You can learn more about this feature in the associated PR #4574 and in &lt;a href="https://nuxtjs.org/api/components-nuxt-link" rel="noopener noreferrer"&gt;the documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  HMR &amp;amp; best practices for &lt;code&gt;store/&lt;/code&gt; 👀
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Save more development time with full HMR support for the store (&lt;code&gt;mutations&lt;/code&gt;, &lt;code&gt;getters&lt;/code&gt;, and &lt;code&gt;actions&lt;/code&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1aizbvw6rzelsci6sxp0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1aizbvw6rzelsci6sxp0.gif" alt="nuxt-vuex-hmr" width="948" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/mannil"&gt;@mannil&lt;/a&gt; &amp;amp; &lt;a class="mentioned-user" href="https://dev.to/atinux"&gt;@atinux&lt;/a&gt; on PRs #4589, #4582 and #4791&lt;/p&gt;
&lt;h3&gt;
  
  
  Autocomplete for VS Code (via. Vetur extension) ✅
&lt;/h3&gt;

&lt;p&gt;If you are using VS Code, with this version, you will now have autocomplete for Nuxt.js components:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ffiic75shimpv174rgc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ffiic75shimpv174rgc.gif" alt="nuxt-vs-autocomplete" width="960" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/octref"&gt;@octref&lt;/a&gt; &amp;amp; &lt;a class="mentioned-user" href="https://dev.to/atinux"&gt;@atinux&lt;/a&gt; on PR #4524&lt;/p&gt;
&lt;h3&gt;
  
  
  Port taken? Nuxt got your back! 💪
&lt;/h3&gt;

&lt;p&gt;If Nuxt wants to listen on a port which is already used, it will warn you &lt;strong&gt;in development&lt;/strong&gt; and listen to a free port instead:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fed12gdf99jd1rnyuzscm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fed12gdf99jd1rnyuzscm.png" alt="49249621-efe2e780-f431-11e8-90fb-ba48e67ba5c9" width="776" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In production it will throw an error instead to avoid unwanted behavior:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdznfur0nd2406gle2t7i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdznfur0nd2406gle2t7i.png" alt="49249634-f8d3b900-f431-11e8-9f51-afbf3ffc68ed" width="777" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/ricardogobbosouza"&gt;@ricardogobbosouza&lt;/a&gt; on PR #4428 with the help of &lt;a class="mentioned-user" href="https://dev.to/pi0"&gt;@pi0&lt;/a&gt; and &lt;a class="mentioned-user" href="https://dev.to/mannil"&gt;@mannil&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Suggest installing missing dependencies or mismatches 💯
&lt;/h3&gt;

&lt;p&gt;Nuxt requires all peer like dependencies as a dependency for easier usage. Sometimes this causes unwanted behaviors when users explicitly add a specific version in their package.json which is incompatible with nuxt. This could also help to resolve popular Vue packages version mismatch error (#198, #669, #1084, #1414, #1851, #2079, #2406, #3454).&lt;/p&gt;

&lt;p&gt;Nuxt is now able to automatically self-verify installed dependencies and warn with a proper message in case of detecting problems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cn3kxafvoe4fgjta9wt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cn3kxafvoe4fgjta9wt.png" alt="image" width="627" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/pi0"&gt;@pi0&lt;/a&gt; in PR #4669&lt;/p&gt;
&lt;h3&gt;
  
  
  Auto-detection of modern bundles 🥇
&lt;/h3&gt;

&lt;p&gt;When running &lt;code&gt;nuxt start&lt;/code&gt;, Nuxt will automatically detect if you built your app modern mode enabled. No need to run &lt;code&gt;nuxt start --modern&lt;/code&gt;explicitly anymore 🌟 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbwb7gynq2jo9j3r6hwv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbwb7gynq2jo9j3r6hwv.png" alt="screenshot 2018-11-30 at 16 55 48" width="600" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This detection was created by &lt;a class="mentioned-user" href="https://dev.to/clarkdo"&gt;@clarkdo&lt;/a&gt; on PR #4422&lt;/p&gt;
&lt;h3&gt;
  
  
  Plugin modes and file extensions 💅
&lt;/h3&gt;

&lt;p&gt;Until now, you used &lt;code&gt;ssr: false&lt;/code&gt; in your plugin declarations to disable server-side rendering. We decided to deprecate that option and introduce a &lt;code&gt;mode&lt;/code&gt; instead, which can be &lt;code&gt;'all'&lt;/code&gt;, &lt;code&gt;'client'&lt;/code&gt; or &lt;code&gt;'server'&lt;/code&gt;. No worries, &lt;code&gt;ssr&lt;/code&gt; is still working (until Nuxt 3).&lt;/p&gt;

&lt;p&gt;The new feature coming with the &lt;code&gt;mode&lt;/code&gt; is that you can define it by using the file suffix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;plugins/plugin.server.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugins/plugin.client.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plugins/plugin.js&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By adding the plugins to your &lt;code&gt;nuxt.config.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;~/plugins/plugin.server.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;~/plugins/plugin.client.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;~/plugins/plugin.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The declaration will be internally transformed to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;server&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;~/plugins/plugin.server.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;~/plugins/plugin.client.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;all&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;~/plugins/plugin.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(If you specify the &lt;code&gt;mode&lt;/code&gt; manually, it will overwrite the suffix detection)&lt;/p&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/clarkdo"&gt;@clarkdo&lt;/a&gt; on PR #4592 &lt;/p&gt;

&lt;h3&gt;
  
  
  Module commands 🖥
&lt;/h3&gt;

&lt;p&gt;Nuxt modules can now include &lt;code&gt;bin&lt;/code&gt; scripts that are recognized by Nuxt's CLI.&lt;/p&gt;

&lt;p&gt;Here's an example of &lt;code&gt;my-module/bin/command.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cp"&gt;#!/usr/bin/env node
&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;consola&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;consola&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NuxtCommand&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@nuxt/cli&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;NuxtCommand&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;command&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;My Module Command&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;command &amp;lt;foobar&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;foobar&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;alias&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fb&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Simple test string&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;consola&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command could be run with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx nuxt &lt;span class="nb"&gt;command &lt;/span&gt;arg1 arg2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can learn more about that in the &lt;a href="https://nuxtjs.org/guide/modules#module-package-commands" rel="noopener noreferrer"&gt;modules command documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;⚠️ &lt;strong&gt;Experimental:&lt;/strong&gt; We are waiting for your feedback to keep improving it and breaking changes can occur without a semver major release. However, all changes will be documented properly &amp;lt;3&lt;/p&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/galvez"&gt;@galvez&lt;/a&gt; on PR #4314 with the help of &lt;a class="mentioned-user" href="https://dev.to/pi0"&gt;@pi0&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  PostCSS in Vue Components 💃
&lt;/h3&gt;

&lt;p&gt;You can now use &lt;code&gt;lang="postcss"&lt;/code&gt; in your Vue components. Postcss has applied to &lt;em&gt;all&lt;/em&gt; your styles anyway (e.g. to resolve aliases like &lt;code&gt;~&lt;/code&gt;) but the &lt;code&gt;lang&lt;/code&gt; attribute enables autocomplete and syntax highlighting for some IDEs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F437v5rmy4ylftss2wpvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F437v5rmy4ylftss2wpvv.png" alt="nuxt-postcss" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/mannil"&gt;@mannil&lt;/a&gt; on PR #4417.&lt;/p&gt;

&lt;h3&gt;
  
  
  No more extensions for Stylesheets needed 🦅
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8mr0ckzux7d7pc9pd97.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8mr0ckzux7d7pc9pd97.gif" alt="stylesheet extensions" width="600" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are concerned to improve the Developer Experience ("DX") with each release. This small change allows you to omit the file extension for CSS/SCSS/Postcss/Less/Stylus/... files listed in the &lt;code&gt;css&lt;/code&gt; array inside your &lt;code&gt;nuxt.config.js&lt;/code&gt;. For the &lt;code&gt;plugins&lt;/code&gt; or &lt;code&gt;serverMiddleware&lt;/code&gt; key, this is already possible.&lt;/p&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/mannil"&gt;@mannil&lt;/a&gt; on PR #4671.&lt;/p&gt;

&lt;h3&gt;
  
  
  SSR Bundle improvements 🔹
&lt;/h3&gt;

&lt;p&gt;We made a full rewrite of how SSR bundle is packaged.&lt;/p&gt;

&lt;p&gt;This means better performance, less memory overhead, fewer OOM crashes and easier SSR bundle debugging.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;_&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;th&gt;Diff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dist&lt;/td&gt;
&lt;td&gt;8.2M&lt;/td&gt;
&lt;td&gt;7.2M&lt;/td&gt;
&lt;td&gt;-1M / 12%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dev&lt;/td&gt;
&lt;td&gt;281 MB (RSS: 439 MB)&lt;/td&gt;
&lt;td&gt;237 MB (RSS: 354 MB)&lt;/td&gt;
&lt;td&gt;-44M / 16% (RSS: -85M / 19%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Start&lt;/td&gt;
&lt;td&gt;106 MB (RSS: 169 MB)&lt;/td&gt;
&lt;td&gt;71.7 MB (RSS: 137 MB)&lt;/td&gt;
&lt;td&gt;-34M / 32% (RSS: -32M / 19%)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This feature has been implemented by &lt;a class="mentioned-user" href="https://dev.to/pi0"&gt;@pi0&lt;/a&gt; on PR #4439.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other changes 🌔
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;process.modern&lt;/code&gt; can be used for distinguishing modern environment.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;server.timing&lt;/code&gt; to give Server-Timing header, useful for monitoring and performances overview (PR #4800)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚠️ Experimental:&lt;/strong&gt; Enable &lt;code&gt;HardSourceWebpackPlugin&lt;/code&gt; by &lt;code&gt;hardSource: true&lt;/code&gt; in &lt;code&gt;hardSource&lt;/code&gt; of &lt;code&gt;nuxt.config.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;You can now set &lt;code&gt;scrollToTop&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt; in pages (PR #4564)&lt;/li&gt;
&lt;li&gt;Aliases for &lt;code&gt;nuxt-link&lt;/code&gt; and &lt;code&gt;nuxt-child&lt;/code&gt; (&lt;code&gt;n-link&lt;/code&gt; and &lt;code&gt;n-child&lt;/code&gt;) are available now (PR #4525)&lt;/li&gt;
&lt;li&gt;Components can now be used in &lt;code&gt;PascalCase&lt;/code&gt; as recommended by the Vue styleguide (PR #4396)&lt;/li&gt;
&lt;li&gt;VueMetas &lt;code&gt;headAttrs&lt;/code&gt; are now supported for the appTemplate (PR #4536)&lt;/li&gt;
&lt;li&gt;More browsers are added to the list of modern browsers (PR #4516, PR #4775)&lt;/li&gt;
&lt;li&gt;Loaded resources can now have a &lt;code&gt;crossorigin&lt;/code&gt; attribute (PR #4472)&lt;/li&gt;
&lt;li&gt;Modern mode resources are preloaded and will be pushed via HTTP2 server push if set (PR #4508)&lt;/li&gt;
&lt;li&gt;Add option to disable the &lt;code&gt;compression&lt;/code&gt; middleware (PR #4381)&lt;/li&gt;
&lt;li&gt;Add option to disable the &lt;code&gt;FriendlyErrorsWebpackPlugin&lt;/code&gt; overlay (PR #4381)&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;exclude&lt;/code&gt; option to exclude pages from being &lt;code&gt;generated&lt;/code&gt; (in static mode) but still get rendered via fallback/SPA (PR  #4754)&lt;/li&gt;
&lt;li&gt;Support &lt;code&gt;build.hotMiddleware.client&lt;/code&gt; (PR #4796)&lt;/li&gt;
&lt;li&gt;New examples have been added:

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nuxt/nuxt.js/tree/dev/examples/styled-vue" rel="noopener noreferrer"&gt;styled-vue&lt;/a&gt; (PR #4712)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nuxt/nuxt.js/tree/dev/examples/pug" rel="noopener noreferrer"&gt;pug&lt;/a&gt; (PR #4409)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Internal changes:

&lt;ul&gt;
&lt;li&gt;feat: use &lt;code&gt;runInNewContext: true&lt;/code&gt; for nuxt dev (#4508) &lt;/li&gt;
&lt;li&gt;feat: check modern build file in modern mode (#4467)&lt;/li&gt;
&lt;li&gt;refactor: migrate to extract-css-chunks-webpack-plugin (#4495) &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Further Patches (30+) 🔍
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;hotfix(vue-app): ReferenceError error passed with routeChanged (PR #4444)&lt;/li&gt;
&lt;li&gt;fix(vue-app): properly serialize head functions (PR #4558 #4585)&lt;/li&gt;
&lt;li&gt;fix(vue-app): Handle &lt;code&gt;middleware&lt;/code&gt; correctly when using &lt;code&gt;Vue.extend&lt;/code&gt; in layout (fix #4724)&lt;/li&gt;
&lt;li&gt;fix (vue-renderer): remove &lt;code&gt;undefined&lt;/code&gt; script in modern mode &amp;amp; generated (&lt;a href="https://github.com/nuxt/nuxt.js/commit/0a21d4b34ca2f3bde2a54452f3d6831a0b1ee362" rel="noopener noreferrer"&gt;https://github.com/nuxt/nuxt.js/commit/0a21d4b34ca2f3bde2a54452f3d6831a0b1ee362&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;fix: add option to rewatch on path after raw fs event (PR #4717)&lt;/li&gt;
&lt;li&gt;fix(builder, module): addLayout and nuxt.config precedence over auto-scanned layouts (PR #4702)&lt;/li&gt;
&lt;li&gt;fix: Support plugins with a directory and index.js (PR #4714)&lt;/li&gt;
&lt;li&gt;fix: use case insensitive regex for webpack loader rules (PR #4728)&lt;/li&gt;
&lt;li&gt;fix: require postcss module via resolver (PR #4737)&lt;/li&gt;
&lt;li&gt;fix: Safari fix is not injected in client modern mode  (&lt;a href="https://github.com/nuxt/nuxt.js/commit/ecf76d91f1bec8dcab8f2c7715e0e07a19d0b6fe" rel="noopener noreferrer"&gt;https://github.com/nuxt/nuxt.js/commit/ecf76d91f1bec8dcab8f2c7715e0e07a19d0b6fe&lt;/a&gt;) &lt;/li&gt;
&lt;li&gt;fix(server): allow rendering urls with unicode characters (#4512) &lt;/li&gt;
&lt;li&gt;fix(builder): add lodash inside templates (PR #4368) &lt;/li&gt;
&lt;li&gt;fix: fall back to default value when &lt;code&gt;publicPath&lt;/code&gt; is falsy (PR #4365) &lt;/li&gt;
&lt;li&gt;fix: modern=true or false not work as expected (PR #4378) &lt;/li&gt;
&lt;li&gt;fix: empty error message in dev mode (&lt;a href="https://github.com/nuxt/nuxt.js/commit/3d990fe60675f44a1771b765a73d9bbe5d5fa8f8" rel="noopener noreferrer"&gt;https://github.com/nuxt/nuxt.js/commit/3d990fe60675f44a1771b765a73d9bbe5d5fa8f8&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;fix(progress-bar): allow 0 for values and remove duplicate defaults (PR #4397)&lt;/li&gt;
&lt;li&gt;fix(vue-app): allow passing custom props to error function (PR #4462)&lt;/li&gt;
&lt;li&gt;fix(webpack): deepClone before calling extendConfig (PR #4464) &lt;/li&gt;
&lt;li&gt;fix(vue-app): router.meta is null on extendRoutes(PR #4478) &lt;/li&gt;
&lt;li&gt;fix: merge route.meta into options.meta (PR #4479) &lt;/li&gt;
&lt;li&gt;fix: improvements for build and dev stability (PR #4470) &lt;/li&gt;
&lt;li&gt;fix(vue-app): Fix route meta to handle order (&lt;a href="https://github.com/nuxt/nuxt.js/commit/45be6384794fa5239b27ade8966d5d40955d8bb7" rel="noopener noreferrer"&gt;https://github.com/nuxt/nuxt.js/commit/45be6384794fa5239b27ade8966d5d40955d8bb7&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;fix(dev): Show correct path when webpack watched files changed  (&lt;a href="https://github.com/nuxt/nuxt.js/commit/25dea5f52a30628c43213fdc6d620c0d0eda8d9d" rel="noopener noreferrer"&gt;https://github.com/nuxt/nuxt.js/commit/25dea5f52a30628c43213fdc6d620c0d0eda8d9d&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;fix(webpack): allow changing devtool with extend (PR #4515) &lt;/li&gt;
&lt;li&gt;fix: keepAliveProps broken in  (PR #4521) &lt;/li&gt;
&lt;li&gt;fix: csp SHA hashes accumulate when using custom script-src rules (#4519)&lt;/li&gt;
&lt;li&gt;fix: duplicate style in extractCSS (#4546) &lt;/li&gt;
&lt;li&gt;fix: hmr in modern mode (#4623)&lt;/li&gt;
&lt;li&gt;fix: wrong devMiddleware in non-modern dev mode (&lt;a href="https://github.com/nuxt/nuxt.js/commit/35151150fde5ad21087f14bf22cf1acf0f150979" rel="noopener noreferrer"&gt;https://github.com/nuxt/nuxt.js/commit/35151150fde5ad21087f14bf22cf1acf0f150979&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;fix(ts): fix &lt;code&gt;$nuxt.$loading&lt;/code&gt; typedefs (#4778)&lt;/li&gt;
&lt;li&gt;fix(ts): Add missing &lt;code&gt;loading&lt;/code&gt; property to Component options (#4786)&lt;/li&gt;
&lt;li&gt;fix: match subdir under node_module in transpile (#4850)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Upgrade Note ⚠️
&lt;/h3&gt;

&lt;p&gt;Due to a known problem (webpack/webpack#8656, #4869,  #4839) users of &lt;strong&gt;npm&lt;/strong&gt; should either remove &lt;code&gt;package-lock.json&lt;/code&gt; and reinstall before upgrade or use &lt;code&gt;npm update acorn --depth 20 &amp;amp;&amp;amp; npm dedupe&lt;/code&gt; after upgrading to 2.4.0. &lt;strong&gt;yarn&lt;/strong&gt; users should have no problems but removing &lt;code&gt;yarn.lock&lt;/code&gt; still recommended before the upgrade process.&lt;/p&gt;

</description>
      <category>nuxt</category>
      <category>vue</category>
      <category>javascript</category>
      <category>framework</category>
    </item>
  </channel>
</rss>
