<?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>Forem: StackBlitz</title>
    <description>The latest articles on Forem by StackBlitz (@stackblitz).</description>
    <link>https://forem.com/stackblitz</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%2F5299%2F3d6e2f74-98b6-437d-99d9-8222bb7ffad9.png</url>
      <title>Forem: StackBlitz</title>
      <link>https://forem.com/stackblitz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/stackblitz"/>
    <language>en</language>
    <item>
      <title>What is pnpm? Is it really so fast and space-efficient?</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Thu, 13 Oct 2022 12:57:41 +0000</pubDate>
      <link>https://forem.com/stackblitz/what-is-pnpm-and-is-it-really-so-fast-and-space-efficient-29la</link>
      <guid>https://forem.com/stackblitz/what-is-pnpm-and-is-it-really-so-fast-and-space-efficient-29la</guid>
      <description>&lt;p&gt;&lt;em&gt;We announced at ViteConf that our &lt;strong&gt;WebContainers now support pnpm&lt;/strong&gt;. It was a major achievement in our commitment to support the Vite ecosystem as many projects running on Vite also use pnpm (examples include Vue, Astro, SvelteKit).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this post, I’d like to talk about &lt;strong&gt;what sets pnpm apart from other package managers - and why we need package managers at all&lt;/strong&gt;. As a person who best operates through analogy, I will also talk about: 🍣 sushi, 🪦 cemetery, 🎁 birthdays, and 🖼 memes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are package managers?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;I've also written an &lt;a href="https://dev.to/stackblitz/explain-like-im-five-package-managers-1a7a"&gt;“Explain like I’m 5” version of this section&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s start with the terminology.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0dx6ny86uj9izv6tld3l.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0dx6ny86uj9izv6tld3l.jpeg" alt="A surrealist image of massive clouds with a shiba-inu dog head that is consuming a city. The clouds are labelled "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  package, dependency, node module
&lt;/h3&gt;

&lt;p&gt;A “&lt;strong&gt;package&lt;/strong&gt;” (or “&lt;strong&gt;dependency&lt;/strong&gt;”) is one or a few files bundled neatly together that can be downloaded from a package registry. Once it’s downloaded and installed, it resides in the &lt;code&gt;node_modules&lt;/code&gt; folder in a project’s directory. In this post, I will use the words a Node module, a package, and a dependency interchangeably as many folks in the tech community do. That being said, &lt;a href="https://docs.npmjs.com/about-packages-and-modules" rel="noopener noreferrer"&gt;the npm docs offer a differing opinion&lt;/a&gt; so check it out if you’re interested in trivia and precision. 🙂&lt;/p&gt;

&lt;h3&gt;
  
  
  package.json
&lt;/h3&gt;

&lt;p&gt;Each package has a file called &lt;code&gt;package.json&lt;/code&gt; which contains information on the package author, its version, its dependencies, and so on. A package can have many dependencies, which in turn can also have many dependencies (called "sub-dependencies"). This sounds like a lot of files, doesn’t it! It really is, especially if your project requires bigger packages.&lt;/p&gt;

&lt;p&gt;In the olden times, you’d manually download, install, and configure the dependencies of your app. Keep in mind that most packages are frequently updated, which means that you’d have to always make sure that your project's dependencies (and their sub-dependencies!) are up to date - or that in a given project you use a correct version of a given package. This sounds not only stressful but also unnecessarily repetitive! This is where a package manager comes in.&lt;/p&gt;

&lt;h3&gt;
  
  
  package managers
&lt;/h3&gt;

&lt;p&gt;A package manager is a tool that helps you keep track of all dependencies of your app in a consistent way. It automates the tasks of dependency installation, upgrading, configuration, and removal. It makes sure that all the packages that your app needs are installed, of the correct version, and up-to-date. This frees so much time for coding… and procrastination 🤪&lt;/p&gt;

&lt;p&gt;The first package manager for the Node runtime was introduced only in 2010 and it was npm, (which, contrary to popular belief, &lt;a href="https://github.com/npm/cli#is-npm-an-acronym-for-node-package-manager" rel="noopener noreferrer"&gt;doesn’t stand for “Node package manager” and, in fact, is an empty acronym&lt;/a&gt;). Twelve years later, npm is now managed by Microsoft and there are two other contenders to the iron throne of the package universe: yarn and pnpm.&lt;/p&gt;

&lt;h2&gt;
  
  
  What do package managers do?
&lt;/h2&gt;

&lt;p&gt;A package manager grabs the published source files from the online registry and installs them into a directory (a folder) called &lt;code&gt;node_modules&lt;/code&gt;. This is the folder where your app will look for the packages when you call the &lt;code&gt;require()&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;You can think about the &lt;code&gt;node_modules&lt;/code&gt; folder as a box with helpful tools that you can plug into your app so it works in a desired way. Except that all the tools are made of iron (or &lt;a href="https://sciencing.com/metals-heaviest-8751708.html" rel="noopener noreferrer"&gt;osmium&lt;/a&gt;!) and the box is massive. What I mean to say is that, sadly, prior to pnpm the &lt;code&gt;node_modules&lt;/code&gt; folder would usually be bulky and take a lot of disk space. This resulted in a collection of memes such as:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgm7t956uxawl53si8cyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgm7t956uxawl53si8cyp.png" alt="A popular meme portraying heaviest objects in the universe such as Sun, neutron star, black hole, and Node modules"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine that you have numerous projects on your local machine, and each project comes with its own node_modules folder. Most likely, many of these projects use a similar stack. In such a case, you end up with the same packages in numerous projects. Duplication and redundancy! Think about all those inspired side projects that never left the boilerplate stage, all the past attempts to check out all the hot new frameworks - all of them are chilling on your precious disk space.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2uizq6rsnnena1dzkl3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2uizq6rsnnena1dzkl3.png" alt="A comic strip where a computer folder containing Windows brags about being the biggest just to be intimidated by the "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who cursed the &lt;code&gt;node_modules&lt;/code&gt; folder?
&lt;/h2&gt;

&lt;p&gt;To understand these jokes, we need to take a stroll down memory lane and look at how package management has traditionally been handled.&lt;/p&gt;

&lt;p&gt;To the best of its intentions and abilities, npm handled the dependencies by splitting the installation (which is triggered by, for example, &lt;code&gt;npm install&lt;/code&gt; ) process into three phases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Resolving&lt;/strong&gt;, when the package manager is checking all the project’s dependencies (and their sub-dependencies) listed in the &lt;code&gt;package.json&lt;/code&gt; file, finds a version that satisfies the version specifier (for instance, &lt;code&gt;^1.0.0&lt;/code&gt; would install any future minor/patch versions). Afterwards, it creates a file like &lt;code&gt;package-lock.json&lt;/code&gt; for npm and &lt;code&gt;pnpm-lock.yaml&lt;/code&gt; for pnpm. you can think about it like a project’s equivalent of a birthday gift wishlist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetch&lt;/strong&gt;, when the package manager takes the list of resolved dependencies and fetches all the packages from the package registry, which is an equivalent of the feverish shopping in a crowded mall two hours before the party for the gifts all of your friends will give to the birthday person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linking&lt;/strong&gt;, when the package manager writes all the dependencies into the project’s &lt;code&gt;node_modules&lt;/code&gt; folder, which, finally, is an equivalent of placing all the gifts in the corner of the party room for when they are needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this scenario, each phase needs to end for the next one to begin. This means that if one dependency has twenty dependencies itself or if one package takes forever to be downloaded, you may have to wait for a long time. If we follow the birthday analogy, imagine that the wishlist included a new version of a popular phone and a box of chocolates. You end up queuing &lt;a href="https://www.inc.com/business-insider/massive-lines-iphone-x-apple-store-people-queue-days-tim-cook.html" rel="noopener noreferrer"&gt;for a few days&lt;/a&gt; in front of the phone store to only then buy the chocolates. In such a system, you can’t “save” your spot in the queue, go buy the chocolates and join the party, even if that looked like a better use of your time. You see that t*&lt;em&gt;he way npm manages its tasks is just not efficient.&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;As we said earlier, it is also the matter of the disk space. You will end up with numerous duplications of the same packages. And even if there are different versions of the same package, it is rarely the case that all of the files have been changed from one version to another. You still end up with some number of copies. We can agree that &lt;strong&gt;the way npm manages the disc space is not efficient either.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How is pnpm a solution to all our worries and troubles?
&lt;/h2&gt;

&lt;p&gt;On its docs page you can read that pnpm is a “fast, disk space efficient package manager.” It really is fast - locally, up to three times faster than the alternatives - and space-efficient. But - how?&lt;/p&gt;

&lt;h3&gt;
  
  
  pnpm is fast
&lt;/h3&gt;

&lt;p&gt;Do you remember the birthday wishlist analogy? As a gofer, npm first collected all the wishes, then bought all the gifts, then placed them in the corner of the party room. Each phase needed to end for another to begin. This is how the npm gofer organizes its way through life.&lt;/p&gt;

&lt;p&gt;Well, if pnpm were the gofer, they’d buy the gift as soon as they’ve read the wish, and designated the spot in the room as soon as they placed the order. They may not even have the physical gift yet to already be able to mark the space in the room where the gift will stand. This happens for each gift separately and independently from others. By design, pnpm doesn’t have the blocking stages of installation - the processes run for each of the packages independently. &lt;/p&gt;

&lt;h3&gt;
  
  
  pnpm is disc space efficient
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Let’s talk about food. I love veggie sushi. I order a lot of veggie sushi&lt;/strong&gt;. I also eat a lot of wasabi and I don’t like waste. Even though it would be fair to assume that such portions surely are to be shared, I usually order just for myself. &lt;strong&gt;My order always arrives with two pairs of chopsticks even though I say on the phone that I don’t need them - I have metal ones at home.&lt;/strong&gt; I wouldn’t just throw unused chopsticks away and now I have a drawer full of them, and you can also see them laying around in the most surprising places in the kitchen. Similarly, I have my own wasabi tube but would I throw away those little sachets? Never. They chill on the shelf in my fridge in an ever-expanding fashion.&lt;/p&gt;

&lt;p&gt;My chopsticks and wasabi could work as an analogy for how npm manages disc space. &lt;strong&gt;“Oh, you’ve already installed React two hundred times? I’m SURE you NEED the 201st copy!”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To my relief, pnpm checks what is already available on your disk and only adds what you additionally need for your project to run. All the dependencies are located in one global location (for instance, &lt;code&gt;~/.pnpm-store/&lt;/code&gt; - you can check it by running &lt;code&gt;pnpm store path&lt;/code&gt; in the terminal) called “a content-addressable store”. In your project’s &lt;code&gt;node_modules&lt;/code&gt; folder there is a &lt;code&gt;.pnpm&lt;/code&gt; file that contains the “virtual store” with many so-called “&lt;a href="https://pnpm.io/faq#why-does-my-node_modules-folder-use-disk-space-if-packages-are-stored-in-a-global-store" rel="noopener noreferrer"&gt;hard link&lt;/a&gt;s”. it creates one hard link for each file of each package. &lt;a href="https://pnpm.io/faq#why-does-my-node_modules-folder-use-disk-space-if-packages-are-stored-in-a-global-store" rel="noopener noreferrer"&gt;I like this explanation that pnpm docs offer&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So, for example, if you have &lt;code&gt;foo&lt;/code&gt; in your project as a dependency and it occupies 1MB of space, then it will look like it occupies 1MB of space in the project's &lt;code&gt;node_modules&lt;/code&gt; folder and the same amount of space in the global store. However, that 1MB is the same space on the disk addressed from two different locations. So in total &lt;code&gt;foo&lt;/code&gt; occupies 1MB, not 2MB.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This makes the &lt;code&gt;node_modules&lt;/code&gt; folder more like a portal (like the wardrobe in Narnia) to files located in different nooks of the global store, and not like a bloated storage unit. This diagram illustrates the strategy employed by pnpm:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FFGx92b4aUAEAfn5%3Fformat%3Djpg%26name%3D4096x4096" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fmedia%2FFGx92b4aUAEAfn5%3Fformat%3Djpg%26name%3D4096x4096" alt="A graph explaining how pnpm store works"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But, does pnpm “know” if there are duplicate files between two versions of the same package? Yes, because, just like git, it identifies the files by a hash id (called also “content integrity” or “checksum”) and not by the filename. This means that two same files will have identical hash id and pnpm will determine that there’s no reason for duplication.&lt;/p&gt;

&lt;h3&gt;
  
  
  pnpm has got your back
&lt;/h3&gt;

&lt;p&gt;There are so many ways that pnpm looks out for you. One of them is that it is impossible to &lt;a href="https://www.kochan.io/nodejs/pnpms-strictness-helps-to-avoid-silly-bugs.html" rel="noopener noreferrer"&gt;invite silly bugs&lt;/a&gt; by trying to use modules that are not directly specified in the project's &lt;code&gt;package.json&lt;/code&gt; but, for instance, are required by your project’s dependencies. While it’s not the end of the world if everything works well, what happens if your project’s dependency no longer requires one of the packages and as a result it is no longer available in the the &lt;code&gt;node_modules&lt;/code&gt; folder? Well, everything crashes and you don’t even know why.&lt;/p&gt;

&lt;p&gt;Such bugs may happen in npm and Yarn Classic because of the flat &lt;code&gt;node_modules&lt;/code&gt; directory because during installation, they hoist (elevate) all of the packages to the &lt;code&gt;node_modules&lt;/code&gt; , regardless of whether they are directly required by your app or not. As a result, your project gets access to distant “relatives” of its dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  …but what if my project doesn’t support symbolic links?
&lt;/h3&gt;

&lt;p&gt;And even if your project presents an edge case and doesn’t work well with symbolic linking, worry not! You can still use pnpm but set it to an npm-like mode. While it will not be space-efficient, it will still be faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  But… what about Yarn?
&lt;/h2&gt;

&lt;p&gt;There are two editions of Yarn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Yarn Classic”, which comprises versions below v2 and is no longer maintained,&lt;/li&gt;
&lt;li&gt;“&lt;a href="https://yarnpkg.com/" rel="noopener noreferrer"&gt;Yarn Berry&lt;/a&gt;”, which is v2 and higher.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yarn Classic operates similarly to npm with regards to managing the &lt;code&gt;node_modules&lt;/code&gt; folder. Yarn Berry, on the other hand, offers three solutions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the npm-like mode&lt;/li&gt;
&lt;li&gt;the “Plug'n'Play” mode&lt;/li&gt;
&lt;li&gt;the pnpm-like mode, which uses hard links to reduce the disc space (&lt;a href="https://yarnpkg.com/configuration/yarnrc#nodeLinker" rel="noopener noreferrer"&gt;not available by default&lt;/a&gt; and not thoroughly documented)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="https://yarnpkg.com/features/pnp#the-node_modules-problem" rel="noopener noreferrer"&gt;Plug’n’Play seems like an intriguing option&lt;/a&gt; but it has been met with the community’s apprehension as the &lt;code&gt;.zip&lt;/code&gt; files are not so easily accessible during the dev workflow. The earlier-mentioned &lt;a href="https://www.takeshape.io/articles/why-we-switched-from-yarn-to-pnpm/" rel="noopener noreferrer"&gt;post by TakeShape&lt;/a&gt; explains some of the other challenges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing remarks
&lt;/h2&gt;

&lt;p&gt;Considering how space-efficient and fast pnpm is, it is not a surprise that more and more projects make a move towards it and that its popularity is rapidly growing. This year, the weekly download rate for pnpm was &lt;a href="https://npm-stat.com/charts.html?package=pnpm&amp;amp;package=yarn&amp;amp;package=npm&amp;amp;from=2021-01-01&amp;amp;to=2022-09-20" rel="noopener noreferrer"&gt;seven times as high as last year&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;If you’re interested in learning about why projects choose to switch to pnpm, check out these posts by &lt;a href="https://gestaltjs.org/docs/contributors/decision-record/2022-09-01-pnpm/" rel="noopener noreferrer"&gt;Gestalt&lt;/a&gt; and &lt;a href="https://www.takeshape.io/articles/why-we-switched-from-yarn-to-pnpm/" rel="noopener noreferrer"&gt;TakeShape&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;p&gt;Here are further readings that may give you a better understanding of the current landscape of package managers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://pnpm.io/feature-comparison" rel="noopener noreferrer"&gt;feature comparison&lt;/a&gt; between the three package managers&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.logrocket.com/javascript-package-managers-compared/" rel="noopener noreferrer"&gt;an in-depth comparison&lt;/a&gt; of the three package managers by LogRocket&lt;/li&gt;
&lt;li&gt;package managers speed benchmarks on the &lt;a href="https://pnpm.io/benchmarks" rel="noopener noreferrer"&gt;pnpm page&lt;/a&gt; and &lt;a href="https://p.datadoghq.eu/sb/d2wdprp9uki7gfks-c562c42f4dfd0ade4885690fa719c818?tpl_var_npm%5B0%5D=%2A&amp;amp;tpl_var_pnpm%5B0%5D=%2A&amp;amp;tpl_var_yarn-classic%5B0%5D=%2A&amp;amp;tpl_var_yarn-modern%5B0%5D=%2A&amp;amp;tpl_var_yarn-nm%5B0%5D=%2A&amp;amp;tpl_var_yarn-pnpm%5B0%5D=no&amp;amp;from_ts=1664821962982&amp;amp;to_ts=1665426762982&amp;amp;live=true" rel="noopener noreferrer"&gt;yarn page&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Come work with us on package managers!
&lt;/h2&gt;

&lt;p&gt;While you’re here, an announcement: &lt;strong&gt;we are looking for a new team member who will work on package managers including pnpm, npm, yarn, and our own &lt;a href="https://developer.stackblitz.com/docs/platform/turbo/" rel="noopener noreferrer"&gt;Turbo&lt;/a&gt;&lt;/strong&gt;. Interested? Apply today or reach out to me on Twitter!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>tooling</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Hacktoberfest: docs updates in three steps</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Wed, 12 Oct 2022 14:57:36 +0000</pubDate>
      <link>https://forem.com/stackblitz/hacktoberfest-docs-updates-in-three-steps-17f</link>
      <guid>https://forem.com/stackblitz/hacktoberfest-docs-updates-in-three-steps-17f</guid>
      <description>&lt;p&gt;Hacktoberfest is a celebration of Open Source contributions and new developers are eagerly encouraged to join in. However, many projects require so much setup, which not only stressed me out but also discouraged me from considering contributing.&lt;/p&gt;

&lt;p&gt;Of course, there is the Markdown Preview on GitHub - however, it only changes Markdown to HTML and doesn't render the whole page. You can't see how the changes you're introducing will look on the page unless you close, install dependencies, start the dev server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But what if updating docs wasn't this complicated? Well, good news is that it doesn't have to be!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Below, I'm offering a workflow that helps you focus on the content update or creation, without the hassle of the setup. If you prefer to watch a video instead, I got you covered as well - check the end of the post!&lt;/p&gt;

&lt;h2&gt;
  
  
  Content editing hack
&lt;/h2&gt;

&lt;p&gt;Follow these three steps for a productivity hack:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the docs repository, find the file you want to edit - can be markdown, can be anything, really. Click "edit" icon.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffrcm6qwf5mdnmu5n8oo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffrcm6qwf5mdnmu5n8oo.gif" alt="Opening a file in GitHub and entering an edit view"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the browser's address tab, add "pr.new" to the beginning of the URL address, press enter, and enjoy updating the content.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;Once you're happy with the result, propose the changes and submit a PR!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qxlc8ewb103dvbiclxr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qxlc8ewb103dvbiclxr.gif" alt="Proposing changes and submitting a PR"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is this tool?
&lt;/h2&gt;

&lt;p&gt;What you see above is a tool called &lt;strong&gt;&lt;a href="https://developer.stackblitz.com/codeflow/content-updates-with-web-publisher" rel="noopener noreferrer"&gt;Web Publisher&lt;/a&gt;&lt;/strong&gt;. It is - and will remain - free for Open Source projects and for public repositories. &lt;/p&gt;

&lt;p&gt;Web Publisher allows you to edit any file and see the changes rendered on the live preview. You don't have to do any special setup - you can even use it on your phone (on Chrome or Firefox). Now even the new developers can contribute their talents to Open Source by proofreading, translating, editing the text without the stress of the environment setup.&lt;/p&gt;

&lt;p&gt;I have been using Web Publisher for weeks now and it really helped me a lot in my daily workflow. The other day I corrected a dead link on our page while waiting in line for an appointment 😂&lt;/p&gt;

&lt;h2&gt;
  
  
  Wanna try it out?
&lt;/h2&gt;

&lt;p&gt;You can either edit a page of any of the public repos or... &lt;a href="https://ilovecodeflow.com" rel="noopener noreferrer"&gt;Add your name to this page&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  See it in action
&lt;/h2&gt;

&lt;p&gt;In case you'd like to see how I use the tool, see this video:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/KtdOs4rhikw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;At StackBlitz, we love our community. Don't be a stranger - &lt;a href="https://discord.gg/EQ7uJQxC" rel="noopener noreferrer"&gt;join our Discord&lt;/a&gt; or reach out to me on &lt;a href="https://twitter.com/sylwiavargas" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; with your StackBlitz ideas, dreams, and wishes!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>writing</category>
      <category>hacktoberfest</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>One-click treat for Open Source maintainers</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Tue, 11 Oct 2022 18:18:21 +0000</pubDate>
      <link>https://forem.com/stackblitz/one-click-treat-for-open-source-maintainers-49f7</link>
      <guid>https://forem.com/stackblitz/one-click-treat-for-open-source-maintainers-49f7</guid>
      <description>&lt;p&gt;It's October. For some, a month of beautiful foliage, Halloween, and pumpkin spice. Some Open Source maintainers live through their own version of Halloween - the stream of PRs coming their way to celebrate Hacktoberfest🎃&lt;/p&gt;

&lt;p&gt;At ViteConf earlier today, StackBlitz has just unveiled Codeflow. It is a tool that I have been using for the past few weeks to build our docs site, to quickly fix typos, and to review PRs. Codeflow is and will be free for Open Source projects and for public repos, just like other StackBlitz tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, what's the charm? One click and the entire IDE for the PR boots up inside your browser&lt;/strong&gt;. No more cloning, committing, running dependencies, stashing your local changes.&lt;/p&gt;

&lt;p&gt;If you prefer to watch people do things instead of reading about it, let me show you how I reviewed a PR from my colleague today:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Tmhvg42VFT4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  One-click solution to PR reviews
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.stackblitz.com/codeflow/integrating-codeflowapp-bot" rel="noopener noreferrer"&gt;CodeflowApp bot&lt;/a&gt; is a part of StackBlitz Codeflow. Once you install it on your account, organization, or a single repository, it will detect PRs (and issues containing &lt;a href="https://developer.stackblitz.com/guides/integration/bug-reproductions" rel="noopener noreferrer"&gt;bug reproductions in StackBlitz&lt;/a&gt;) and immediately spin up an entire IDE so you can explore and review it.&lt;/p&gt;

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

&lt;p&gt;Don't believe it? See it yourself on this &lt;a href="https://github.com/stackblitz/docs/pull/40" rel="noopener noreferrer"&gt;pull request&lt;/a&gt; I prepared for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: you need to have a &lt;a href="//stackblitz.com"&gt;StackBlitz&lt;/a&gt; account.&lt;/p&gt;




&lt;h2&gt;
  
  
  But what is Codeflow?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.stackblitz.com/codeflow/what-is-codeflow" rel="noopener noreferrer"&gt;Codeflow&lt;/a&gt; is a one-click integration with GitHub for seamless coding workflows.&lt;/p&gt;

&lt;p&gt;StackBlitz now helps you switch contexts seamlessly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.stackblitz.com/codeflow/working-in-codeflow-ide" rel="noopener noreferrer"&gt;&lt;strong&gt;Codeflow IDE&lt;/strong&gt;&lt;/a&gt; is a fully fledged desktop-grade dev environment capable of running your whole workflow - from production-level dev work to reviewing pull requests.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.stackblitz.com/codeflow/content-updates-with-web-publisher" rel="noopener noreferrer"&gt;&lt;strong&gt;Web Publisher&lt;/strong&gt;&lt;/a&gt; is a publishing tool that makes editing docs or blogs pleasant thanks to a realtime preview of the changes.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.stackblitz.com/codeflow/using-pr-new" rel="noopener noreferrer"&gt;&lt;strong&gt;pr.new&lt;/strong&gt;&lt;/a&gt; is a short URL that can be used on any repository to explore code, a branch or an issue, to review a PR, or even to edit a file, all in a live environment with a realtime preview.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.stackblitz.com/codeflow/integrating-codeflowapp-bot" rel="noopener noreferrer"&gt;&lt;strong&gt;CodeflowApp&lt;/strong&gt;&lt;/a&gt; is a friendly bot, which provides a one-click link that spins up the whole environment for pull requests and issues. No more context-switching or branch-checkouts, just a new browser tab with a full IDE and a dev server running.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;At StackBlitz, we love our community. Don't be a stranger - &lt;a href="https://discord.gg/EQ7uJQxC" rel="noopener noreferrer"&gt;join our Discord&lt;/a&gt; or reach out to me on &lt;a href="https://twitter.com/sylwiavargas" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; with your StackBlitz ideas, dreams, and wishes!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>tooling</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Explain like I’m five: package managers</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Sun, 09 Oct 2022 17:01:44 +0000</pubDate>
      <link>https://forem.com/stackblitz/explain-like-im-five-package-managers-1a7a</link>
      <guid>https://forem.com/stackblitz/explain-like-im-five-package-managers-1a7a</guid>
      <description>&lt;p&gt;For a long time, the subject of package managers was for me an intimidating one. As a bootcamp grad, I knew enough to build a website or set up a database but any configuration issues stressed me out. Every now and then, I'll encounter a discussion on which package manager is the superior one and I'd immediately feel humbled by all the things I still don't know about web dev.&lt;/p&gt;

&lt;p&gt;Now that at StackBlitz we are about to make a big announcement regarding package managers, I thought I'd revisit this topic and take an “Explain like I’m five” route 💕 &lt;/p&gt;

&lt;p&gt;Let’s look into what a Node module, a package, and a package manager are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Metaphor: LEGO sets
&lt;/h2&gt;

&lt;p&gt;I have recently visited a friend who loves LEGO. His whole house looks like an exhibition hall with colorful sets displayed in the most surprising places. There’s a flower standing on a bathroom mirror shelf, a dragon guarding the stairs, a TV series set near the kitchen table, and a wizardry school near his TV stand. I’ve noticed that in most cases one big creation was, in fact, a collection of smaller sets.&lt;/p&gt;

&lt;p&gt;Imagine that the massive wizardry school castle is your app and for it to be complete, you need to add a bunch of extras like a train station, a magic tree, or a phoenix. Each of them is a separate entity that you can move around as you wish. &lt;/p&gt;

&lt;h2&gt;
  
  
  Node modules and packages
&lt;/h2&gt;

&lt;p&gt;If the wizardry school castle is your app, then each of the extras would be a Node module or a package.&lt;/p&gt;

&lt;p&gt;So your castle needs a magic tree. You could design it yourself but it is way easier get the whole set designed and packaged together in a box with an instruction. A ready-made set in this analogy is a “package” and the instruction is the “&lt;code&gt;package.json&lt;/code&gt;” file. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Node module, or a package, is a piece of code that helps you add some functionality to your app. The &lt;code&gt;package.json&lt;/code&gt; file tells us who created the package, when it was created, what other “dependencies” it needs to function, and so on.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To satisfy the folks who like to be very precise, please note that the &lt;a href="https://docs.npmjs.com/about-packages-and-modules"&gt;npm docs page&lt;/a&gt; makes a distinction between "Node modules" and "packages. However, in most cases “Node module” and “package” are used interchangeably.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package managers
&lt;/h2&gt;

&lt;p&gt;Now, if you only have one or two LEGO sets in your home, managing an inventory of all the blocks, sets, and figurines you have would not be that difficult. But what if you are a lifelong collector, pieces break often, there are new sets constantly coming out, and the available color scheme changes faster than the company manages to announce it? Well, ideally you would find a system to keep track of all the pieces you own, need to replace, no longer need, and that that you need to buy?&lt;/p&gt;

&lt;p&gt;This is why in software there is a need for the so-called “package managers”. &lt;strong&gt;A package manager is a tool that helps you keep track of all dependencies of your app in a consistent way.&lt;/strong&gt; It automates the tasks of dependency installation, upgrading, configuration, and removal. It makes sure that all the packages that your app needs are installed, in the correct version, or up-to-date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tl;dr package managers automate all the tasks regarding dependencies, saving your precious time 💕&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;We will share big news regarding package managers at the upcoming &lt;a href="//viteconf.org"&gt;ViteConf&lt;/a&gt;. Grab your free ticket and tune in this week (Oct 12-13) if you're curious 👀&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>StackBlitz Monthly Update Post: September 2022</title>
      <dc:creator>Sylwia Vargas</dc:creator>
      <pubDate>Thu, 06 Oct 2022 23:04:47 +0000</pubDate>
      <link>https://forem.com/stackblitz/stackblitz-monthly-update-post-september-2022-3d6h</link>
      <guid>https://forem.com/stackblitz/stackblitz-monthly-update-post-september-2022-3d6h</guid>
      <description>&lt;p&gt;Hello everyone!&lt;/p&gt;

&lt;p&gt;At StackBlitz, we have been working hard on the new tools that will premiere at &lt;a href="https://viteconf.org/"&gt;ViteConf&lt;/a&gt; and that I believe will be truly game-changing for Open Source maintainers. &lt;/p&gt;

&lt;p&gt;The release will happen before a significant crowd: at this moment, &lt;strong&gt;21,000 devs&lt;/strong&gt; registered to attend ViteConf! If you haven’t yet, &lt;a href="https://viteconf.org/"&gt;click here to get your free ticket&lt;/a&gt;. Here's mine:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zyEJZX6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4t5q5pdjzdjsxnubx7jv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zyEJZX6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4t5q5pdjzdjsxnubx7jv.png" alt="My ViteConf ticket" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Meanwhile, we have been pushing updates and cheering for our community!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Today we are bringing you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;StackBlitz in the wild: news from our community&lt;/li&gt;
&lt;li&gt;DX &amp;amp; Compatibility improvements: the change log&lt;/li&gt;
&lt;li&gt;New Teammates: our team has grown - do you wanna join, too?&lt;/li&gt;
&lt;li&gt;Quick bites for the road&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you’ll have a wonderful month!&lt;/p&gt;




&lt;h2&gt;
  
  
  StackBlitz in the wild
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Does running WordPress in the browser without a PHP server sound like fun?&lt;/strong&gt; Here’s &lt;a href="https://make.wordpress.org/core/2022/09/23/client-side-webassembly-wordpress-with-no-server/"&gt;a delightful writeup on spinning it on StackBlitz&lt;/a&gt; thanks to WASM. We may soon be able to run an in-browser WordPress IDE - something to look forward to!&lt;/li&gt;
&lt;li&gt;Wanda has just released a beautiful &lt;a href="https://twitter.com/equinusocio/status/1566752940127395840?s=21&amp;amp;t=Hi7kYmst3ZlttNHl04Y-tw"&gt;Design System components playground&lt;/a&gt; powered by StackBlitz - have a look:
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oqSUOFuJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugbeppukmrmjbzld4wba.png" alt="Wanda playground" width="800" height="439"&gt;
&lt;/li&gt;
&lt;li&gt;tRPC, a library used for building fully typesafe APIs, added a StackBlitz demo &lt;a href="https://trpc.io/?v=10#try-it-out"&gt;on their homepage&lt;/a&gt; and we love to see it!&lt;/li&gt;
&lt;li&gt;Matt Pocock is soon releasing &lt;a href="https://www.totaltypescript.com/tutorials"&gt;Total TypeScript&lt;/a&gt;, a comprehensive course on TypeScript, which &lt;strong&gt;uses StackBlitz to help users learn as they watch the videos without leaving the browser&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tokencss.com/"&gt;Token CSS&lt;/a&gt; is a new tool that seamlessly integrates Design Tokens into your development workflow - you can launch a Token CSS demo with a single click!&lt;/li&gt;
&lt;li&gt;Josh Morony created a bash script to instantly launch a fresh Angular app for test code, &lt;strong&gt;which publishes the app on StackBlitz&lt;/strong&gt; 🚀
&lt;iframe class="tweet-embed" id="tweet-1567483037906259976-489" src="https://platform.twitter.com/embed/Tweet.html?id=1567483037906259976"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1567483037906259976-489');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1567483037906259976&amp;amp;theme=dark"
  }



&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@neodrag/vanilla"&gt;neodrag&lt;/a&gt; has just dropped. It is a lightweight plain JS library that makes your elements draggable. You can play with it &lt;a href="https://stackblitz.com/edit/typescript-wvnloa?file=index.html"&gt;in this demo&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;And finally, oh so many StackBlitz starters to choose from in the &lt;a href="https://whyframe.dev/docs/overview/#quick-start"&gt;whyframe docs&lt;/a&gt;! whyframe is a library that “gives iframes superpowers, making it easy to render anything in isolation”.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  DX &amp;amp; compatibility improvements
&lt;/h2&gt;

&lt;p&gt;As we’re working on new tools, we are finishing the month with a whole plethora of improvements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bug fixes and improvements&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Updated our dashboard with new project starters: effector, NativeScript (mobile section), Quasar, Remotion, VuePress, VitePress.&lt;/li&gt;
&lt;li&gt;Our dashboard now features a description of each of the projects instead of the project slug.&lt;/li&gt;
&lt;li&gt;New repositories now have their name as a header in the README instead of the project slug.&lt;/li&gt;
&lt;li&gt;Introduced improvements to the &lt;a href="https://developer.stackblitz.com/docs/platform/ide-whats-on-your-screen/#console"&gt;Console&lt;/a&gt; components (for &lt;a href="https://developer.stackblitz.com/docs/platform/available-environments/#engineblock"&gt;EngineBlock&lt;/a&gt; projects):&lt;/li&gt;
&lt;li&gt;Added support for &lt;code&gt;console.table&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fixed the display of &lt;code&gt;NaN&lt;/code&gt;, &lt;code&gt;Infinity&lt;/code&gt; and &lt;code&gt;-Infinity&lt;/code&gt; values&lt;/li&gt;
&lt;li&gt;Improved the color contrast and readability of console log items.&lt;/li&gt;
&lt;li&gt;Improved the responsiveness of the Console when logging over hundreds of messages.&lt;/li&gt;
&lt;li&gt;Improved StackBlitz &lt;a href="https://developer.stackblitz.com/docs/platform/available-environments"&gt;EngineBlock&lt;/a&gt; error messaging when a library referenced from the code has an entry point file that does not exist in the package.&lt;/li&gt;
&lt;li&gt;Fixed issue in the EngineBlock projects with importing &lt;code&gt;ace-builds&lt;/code&gt; package due to the way that it handles AMD and the way that it specifies a webpack file-loader in its &lt;code&gt;webpack-loader.js&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;The ace editor library entry point overrides the require function with its own custom logic (amd loader).&lt;/li&gt;
&lt;li&gt;Fixed a bug &lt;code&gt;Ctrl+S&lt;/code&gt; / &lt;code&gt;Cmd+S&lt;/code&gt; not saving project if all tabs are closed.&lt;/li&gt;
&lt;li&gt;Fixed an issue where a standalone preview tab would get stuck in the loading state if the StackBlitz project had some sort of error. These errors are now shown to the user.&lt;/li&gt;
&lt;li&gt;When reloading the page, now the previously displayed screen is copied and displayed for up to 3 seconds.&lt;/li&gt;
&lt;li&gt;Updated our icon set to use Microsoft’s &lt;a href="https://github.com/microsoft/vscode-codicons"&gt;Codeicons&lt;/a&gt; in more places.&lt;/li&gt;
&lt;li&gt;Fixed an issue with the dashboard's project list not showing the “Delete this project” menu entry.&lt;/li&gt;
&lt;li&gt;Now user can open the commit dialog in the auto commit mode by &lt;code&gt;alt&lt;/code&gt;+&lt;code&gt;click&lt;/code&gt; on the commit button (&lt;a href="https://github.com/stackblitz/core/issues/2034"&gt;GitHub Issue #2034&lt;/a&gt; fix).&lt;/li&gt;
&lt;li&gt;Clarified the UI shown when opening a binary file in the editor.&lt;/li&gt;
&lt;li&gt;Binaries are now preserved when you connect git repository to a project with binaries (&lt;a href="https://github.com/stackblitz/webcontainer-core/issues/787"&gt;Github Issue #787&lt;/a&gt; fix).&lt;/li&gt;
&lt;li&gt;Fixed the storage quota exceeded error, by using &lt;code&gt;indexeddb&lt;/code&gt; instead of &lt;code&gt;localstorage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Clarified context for options in the user menu.&lt;/li&gt;
&lt;li&gt;Now user can use git integration with GitHub "Keep my email addresses private" setting on (&lt;a href="https://github.com/stackblitz/core/issues/1963"&gt;GitHub Issue #1963&lt;/a&gt; fix).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blog&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Replaced the generic social image and added the new social image for category index pages.&lt;/li&gt;
&lt;li&gt;A specific title to each Category page, instead of showing generic &lt;code&gt;StackBlitz::Blog&lt;/code&gt; title.&lt;/li&gt;
&lt;li&gt;Implemented the new Netlify build image (the new Ubuntu 20.04 images).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Created and added numerous demos, like for example this project that showcases all &lt;a href="https://developer.stackblitz.com/docs/platform/javascript-sdk/#openfileoption"&gt;open file options&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Updated the list of the custom project starters with these friends:&lt;/li&gt;
&lt;li&gt;&lt;a href="https://analogjs.org/new"&gt;analogjs.org/new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ladle.dev/new"&gt;ladle.dev/new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nativescript.org/"&gt;NativeScript&lt;/a&gt;:

&lt;ul&gt;
&lt;li&gt;TypeScript: &lt;a href="https://nativescript.new/"&gt;nativescript.new&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JavaScript: &lt;a href="https://nativescript.new/javascript"&gt;nativescript.new/javascript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Angular: &lt;a href="https://nativescript.new/angular"&gt;nativescript.new/angular&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Vue: &lt;a href="https://nativescript.new/vue"&gt;nativescript.new/vue&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;React: &lt;a href="https://nativescript.new/react"&gt;nativescript.new/react&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Svelte: &lt;a href="https://nativescript.new/svelte"&gt;nativescript.new/svelte&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;a href="https://node.new/nx"&gt;node.new/nx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://qwik.new/"&gt;qwik.new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rakkasjs.org/new"&gt;rakkasjs.org/new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://storybook.new"&gt;storybook.new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vitepress.new"&gt;vitepress.new&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Refreshed content across the docs platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  New Teammates
&lt;/h2&gt;

&lt;p&gt;Our team has grown! Please meet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://twitter.com/ykmsd/status/1570511500661628928"&gt;Yuka Masuda&lt;/a&gt;&lt;/strong&gt;, a front-end engineer, a community organizer, a talented knitter, an inspiring baker, and a loving human to a shiba inu 🐕&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dave McChesney, an Enterprise Account Executive&lt;/strong&gt;, a skilled archer, a true enthusiast of the outdoors, and a pet parent to two wonderful poodles 🐩&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Are you looking for a ✨ nurturing ✨ team to join? We have roles open for software engineers (&lt;a href="https://jobs.lever.co/stackblitz/26053a78-242e-400b-aa09-c0e322a2a040"&gt;a senior Rails engineer&lt;/a&gt; and &lt;a href="https://jobs.lever.co/stackblitz/7ccd2472-1416-4448-8642-e58e9b32e129"&gt;a senior TypeScript/Rust/Nodde.js engineer&lt;/a&gt;), as well as a &lt;a href="https://jobs.lever.co/stackblitz/24620a2c-26da-4eb7-bfad-5e20b10a66c5"&gt;Product Marketing Manager&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Here are three tweet threads on how it is to work with us: &lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1479224585899888640-172" src="https://platform.twitter.com/embed/Tweet.html?id=1479224585899888640"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1479224585899888640-172');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1479224585899888640&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1493877657699819523-130" src="https://platform.twitter.com/embed/Tweet.html?id=1493877657699819523"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1493877657699819523-130');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1493877657699819523&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1533109972518715393-515" src="https://platform.twitter.com/embed/Tweet.html?id=1533109972518715393"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1533109972518715393-515');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1533109972518715393&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Wanna learn more? Feel free to reach out!&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick bites for the road
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Are you ready for ViteConf? Our team member, &lt;a href="https://www.youtube.com/watch?v=nKnw-AYIntw"&gt;Patak, spoke recently to the Storyblok folks&lt;/a&gt; about some of the marvels awaiting you there!
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nKnw-AYIntw"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;li&gt;Here’s &lt;a href="https://thenewstack.io/the-rise-of-cloud-development-and-the-end-of-localhost/"&gt;an article predicting a looming end of the localhost&lt;/a&gt;, inspired by Swyx’ &lt;a href="https://dx.tips/the-end-of-localhost"&gt;blog post.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Puru Vijay, our team member spoke recently at Svelte Summit &lt;a href="https://www.youtube.com/watch?v=pJcbZr5VlV4&amp;amp;t=18400s"&gt;on how to migrate React libraries to Svelte&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Do you already have &lt;a href="https://viteconf.org/"&gt;a ticket for ViteConf&lt;/a&gt;? Just in case, it’s an online and free conference with an all-star speaker list celebrating the web ecosystem at large. Excited? See you on 11-12 October 2022!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;We are so excited for what the nearest future will bring — we are cooking something really special for you! In the meantime, stay tuned on &lt;a href="https://twitter.com/stackblitz"&gt;Twitter&lt;/a&gt; or join our &lt;a href="https://discord.gg/stackblitz"&gt;Discord community&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>wordpress</category>
      <category>opensource</category>
      <category>news</category>
    </item>
  </channel>
</rss>
