---
title: "Blog · vuejs.school"
description: "Write-ups on what Vue learners get stuck on: tutorials, deep dives and learning tips from the vuejs.school team."
canonical_url: "https://vuejs.school/community/blog"
meta:
  "og:description": "Write-ups on what Vue learners get stuck on: tutorials, deep dives and learning tips from the vuejs.school team."
  "og:image": "https://vuejs.school/_og/d/a_~VGhlIHZ1ZWpzLnNjaG9vbCBibG9nIMK3IHZ1ZWpzLnNjaG9vbA%2Cc_OgCard.takumi%2Ctitle_The%2Bvuejs.school%2Bblog%2Cdescription_~V3JpdGUtdXBzIG9uIHdoYXQgVnVlIGxlYXJuZXJzIGdldCBzdHVjayBvbjogdHV0b3JpYWxzLCBkZWVwIGRpdmVzIGFuZCBsZWFybmluZyB0aXBzLg%2Ceyebrow_~Q29tbXVuaXR5IMK3IEJsb2c%2Ctint_lilac%2Cp_Ii9jb21tdW5pdHkvYmxvZyI%2Cs_OXLbhXuqBHT6p1dt.png"
  "og:image:alt": "The vuejs.school blog · vuejs.school"
  "og:image:height": "600"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "Blog · vuejs.school"
  "twitter:image": "https://vuejs.school/_og/d/a_~VGhlIHZ1ZWpzLnNjaG9vbCBibG9nIMK3IHZ1ZWpzLnNjaG9vbA%2Cc_OgCard.takumi%2Ctitle_The%2Bvuejs.school%2Bblog%2Cdescription_~V3JpdGUtdXBzIG9uIHdoYXQgVnVlIGxlYXJuZXJzIGdldCBzdHVjayBvbjogdHV0b3JpYWxzLCBkZWVwIGRpdmVzIGFuZCBsZWFybmluZyB0aXBzLg%2Ceyebrow_~Q29tbXVuaXR5IMK3IEJsb2c%2Ctint_lilac%2Cp_Ii9jb21tdW5pdHkvYmxvZyI%2Cs_OXLbhXuqBHT6p1dt.png"
  "twitter:image:alt": "The vuejs.school blog · vuejs.school"
---

> Index of every page on this site: [llms.txt](https://vuejs.school/llms.txt)

# **Blog**

Short, accurate write-ups on the questions learners get stuck on, plus notes on how the school works.

[**RSS feed**](https://vuejs.school/rss.xml)

[cartitemstotaladd()refsRef\<items>Ref\<total>**Deep dive****Pinia**<h2>**Why storeToRefs drops your actions**</h2>You destructure a Pinia store through storeToRefs and the action comes back undefined. Here is what storeToRefs keeps, what it skips, and why. vuejs.school team · 9 Apr 2026 · 5 min read](https://vuejs.school/community/blog/why-storetorefs-drops-your-actions)

## **All posts**

1–12 of 178 posts

- [**Release notes****Vue 3.6 and Vapor Mode: where things stand**Vue 3.6 is at its tenth release candidate and 3.5.43 is the stable release. What 3.6 brings, what the RCs changed, and what to do with your app now.8 Oct 2026 · 7 min read](https://vuejs.school/community/blog/vue-3-6-and-vapor-mode-where-things-stand)
- [**Release notes****What's new in Nuxt 4.6: nuxt/server, typed $fetch, cookie sessions and Vapor**Nuxt 4.6 adds a portable nuxt/server import, cookie sessions, a rebuilt typed $fetch, Vapor components and Nuxt CLI v4. Here is what changes for your app.6 Oct 2026 · 7 min read](https://vuejs.school/community/blog/whats-new-in-nuxt-4-6)
- [**Deep dive****VueUse 15's new composables: useWebMCP, useLiveAnnouncer and useTemporalNow**What useWebMCP, useLiveAnnouncer and useTemporalNow wrap, how to use each one safely, and when a few lines of your own code are the better choice.1 Oct 2026 · 6 min read](https://vuejs.school/community/blog/vueuse-15s-new-composables-usewebmcp-useliveannouncer-usetemporalnow)
- [**Tutorial****Accessible form errors: aria-describedby, live regions and focus**Build form errors that screen readers announce and everyone can fix. Link messages with aria-describedby, announce a summary, move focus, then test it.29 Sep 2026 · 6 min read](https://vuejs.school/community/blog/accessible-form-errors)
- [**Deep dive****Vapor Mode, explained without the hype**What Vapor Mode compiles your component to, what it skips, what you give up, and how to measure whether it would help your app before you switch.24 Sep 2026 · 7 min read](https://vuejs.school/community/blog/vapor-mode-explained-without-the-hype)
- [**Tutorial****useFetch or $fetch? Picking the right one in Nuxt**One question decides it. If the page needs the data to render, call useFetch in setup. If a click causes the request, call $fetch in the handler.22 Sep 2026 · 6 min read](https://vuejs.school/community/blog/usefetch-or-fetch-picking-the-right-one-in-nuxt)
- [**Release notes****VueUse 15: the breaking changes in plain words**VueUse 15.0 removes templateRef and the old timer options, drops Node 20 and changes three behaviours. Each change, what to search for, and the fix.17 Sep 2026 · 6 min read](https://vuejs.school/community/blog/vueuse-15-the-breaking-changes-in-plain-words)
- [**Tutorial****Editor and Vue DevTools setup in 2026**Set up VS Code for Vue with Vue (Official), format on save, ESLint and snippets, then add Vue DevTools 8.2 and check that every piece works.15 Sep 2026 · 8 min read](https://vuejs.school/community/blog/editor-and-vue-devtools-setup-in-2026)
- [**Learning tips****Why your quiz brings old questions back**Old questions return on purpose, timed for just before you would forget them. How the review schedule decides, and how to get the most from the daily mix.10 Sep 2026 · 6 min read](https://vuejs.school/community/blog/why-your-quiz-brings-old-questions-back)
- [**Release notes****Vitest 5: what changed for Vue tests**Vitest 5.0 is faster, clears mocks before every test and fails unawaited assertions. What it changes for Vue tests, Browser Mode and Nuxt, and how to upgrade.8 Sep 2026 · 6 min read](https://vuejs.school/community/blog/vitest-5-what-changed-for-vue-tests)
- [**Tutorial****TypeScript strict mode in a Vue project: the errors you'll hit and the fixes**Strict mode in a Vue project brings six kinds of error. Here is each as vue-tsc prints it, a fix without non-null assertions, and a gradual way in.3 Sep 2026 · 6 min read](https://vuejs.school/community/blog/typescript-strict-mode-in-a-vue-project)
- [**Tutorial****Upgrading a Pinia 3 project to Pinia 4, with the Nuxt and testing packages**A step-by-step upgrade from Pinia 3 to 4.0.3 for a Vite app and a Nuxt app, with the commands, the companion packages and the error each skipped step causes.1 Sep 2026 · 6 min read](https://vuejs.school/community/blog/upgrading-a-pinia-3-project-to-pinia-4)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://vuejs.school/#website","@type":"WebSite","description":"A free AI-instructed school for Vue.js. Short tutorials, runnable code and quizzes that adapt to you.","name":"vuejs.school","url":"https://vuejs.school/","publisher":{"@id":"https://vuejs.school/#identity"}},{"@id":"https://vuejs.school/community/blog#webpage","description":"Write-ups on what Vue learners get stuck on: tutorials, deep dives and learning tips from the vuejs.school team.","name":"Blog","url":"https://vuejs.school/community/blog","@type":["WebPage","CollectionPage"],"isPartOf":{"@id":"https://vuejs.school/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://vuejs.school/community/blog"]}],"primaryImageOfPage":{"@id":"https://vuejs.school/#logo"}},{"@id":"https://vuejs.school/#identity","@type":"Organization","description":"A free AI-instructed school for Vue.js. Short tutorials, runnable code and quizzes that adapt to you.","name":"vuejs.school","url":"https://vuejs.school","logo":{"@id":"https://vuejs.school/#logo"}},{"@id":"https://vuejs.school/#logo","@type":"ImageObject","caption":"vuejs.school","contentUrl":"https://vuejs.school/apple-touch-icon.png","inLanguage":"en","url":"https://vuejs.school/apple-touch-icon.png"}]}
```