Vue School
@vueschool.io
#1 source for learning Vue.js & the ecosystem. Trusted by 200,000+ developers worldwide.
https://vueschool.io/
https://vueschool.io/
We’re halfway through Free Weekend ⏰
Time to watch some lessons, fork new ideas, and commit to serious learning!
Don’t let this weekend end with a 404 👀
Jump in now: https://vue.school/vsfw25x
Time to watch some lessons, fork new ideas, and commit to serious learning!
Don’t let this weekend end with a 404 👀
Jump in now: https://vue.school/vsfw25x
November 8, 2025 at 10:58 PM
We’re halfway through Free Weekend ⏰
Time to watch some lessons, fork new ideas, and commit to serious learning!
Don’t let this weekend end with a 404 👀
Jump in now: https://vue.school/vsfw25x
Time to watch some lessons, fork new ideas, and commit to serious learning!
Don’t let this weekend end with a 404 👀
Jump in now: https://vue.school/vsfw25x
Drake gets it. 😎
When the hotline rings, it’s not another YouTube rabbit hole - it’s Free Weekend calling. 📞
Pick up👇
https://vue.school/vsfw25x
When the hotline rings, it’s not another YouTube rabbit hole - it’s Free Weekend calling. 📞
Pick up👇
https://vue.school/vsfw25x
November 8, 2025 at 11:05 AM
Drake gets it. 😎
When the hotline rings, it’s not another YouTube rabbit hole - it’s Free Weekend calling. 📞
Pick up👇
https://vue.school/vsfw25x
When the hotline rings, it’s not another YouTube rabbit hole - it’s Free Weekend calling. 📞
Pick up👇
https://vue.school/vsfw25x
Having fun during Free Weekend?
Don’t let it end with a `404: Learning Not Found` 🚨
Our Black Friday Super Early Bird Deal is still live!
60% off, full access + a bunch of solid extras (worth $2K!)🔥
Easy way to keep going without losing your progress and saving 💸
https://vue.school/vsfw25x
Don’t let it end with a `404: Learning Not Found` 🚨
Our Black Friday Super Early Bird Deal is still live!
60% off, full access + a bunch of solid extras (worth $2K!)🔥
Easy way to keep going without losing your progress and saving 💸
https://vue.school/vsfw25x
November 8, 2025 at 8:00 AM
Having fun during Free Weekend?
Don’t let it end with a `404: Learning Not Found` 🚨
Our Black Friday Super Early Bird Deal is still live!
60% off, full access + a bunch of solid extras (worth $2K!)🔥
Easy way to keep going without losing your progress and saving 💸
https://vue.school/vsfw25x
Don’t let it end with a `404: Learning Not Found` 🚨
Our Black Friday Super Early Bird Deal is still live!
60% off, full access + a bunch of solid extras (worth $2K!)🔥
Easy way to keep going without losing your progress and saving 💸
https://vue.school/vsfw25x
The countdown is on - Free Weekend goes live in a few hours! 🎉
Get ready to fire up your IDE, follow along with our courses, experiment with components, debug tricky reactivity issues, and push some commits as you learn.
Are you ready? 💪
https://vue.school/vsfw25x
Get ready to fire up your IDE, follow along with our courses, experiment with components, debug tricky reactivity issues, and push some commits as you learn.
Are you ready? 💪
https://vue.school/vsfw25x
November 7, 2025 at 7:10 PM
The countdown is on - Free Weekend goes live in a few hours! 🎉
Get ready to fire up your IDE, follow along with our courses, experiment with components, debug tricky reactivity issues, and push some commits as you learn.
Are you ready? 💪
https://vue.school/vsfw25x
Get ready to fire up your IDE, follow along with our courses, experiment with components, debug tricky reactivity issues, and push some commits as you learn.
Are you ready? 💪
https://vue.school/vsfw25x
New Nuxt UI lessons just dropped! 👊🎤
✨ Tie a slideover to a route (for direct deep linking)
🧩 Display and validate forms with Nuxt UI
♿ Plus, a look at Slideover a11y
Watch the new lessons here 👇
vueschool.io/courses/nuxt-ui-build-a-dashboard-template
✨ Tie a slideover to a route (for direct deep linking)
🧩 Display and validate forms with Nuxt UI
♿ Plus, a look at Slideover a11y
Watch the new lessons here 👇
vueschool.io/courses/nuxt-ui-build-a-dashboard-template
November 5, 2025 at 9:17 AM
New Nuxt UI lessons just dropped! 👊🎤
✨ Tie a slideover to a route (for direct deep linking)
🧩 Display and validate forms with Nuxt UI
♿ Plus, a look at Slideover a11y
Watch the new lessons here 👇
vueschool.io/courses/nuxt-ui-build-a-dashboard-template
✨ Tie a slideover to a route (for direct deep linking)
🧩 Display and validate forms with Nuxt UI
♿ Plus, a look at Slideover a11y
Watch the new lessons here 👇
vueschool.io/courses/nuxt-ui-build-a-dashboard-template
Ever wrestled with CSS for hours just to make a button look right?
Time to drop the struggle and watch our Tailwind CSS Fundamentals course - your shortcut to fast, flexible, and beautiful design.
Lock in your access to watch it for FREE this weekend: https://vue.school/vsfw25x
Time to drop the struggle and watch our Tailwind CSS Fundamentals course - your shortcut to fast, flexible, and beautiful design.
Lock in your access to watch it for FREE this weekend: https://vue.school/vsfw25x
November 3, 2025 at 5:13 PM
Ever wrestled with CSS for hours just to make a button look right?
Time to drop the struggle and watch our Tailwind CSS Fundamentals course - your shortcut to fast, flexible, and beautiful design.
Lock in your access to watch it for FREE this weekend: https://vue.school/vsfw25x
Time to drop the struggle and watch our Tailwind CSS Fundamentals course - your shortcut to fast, flexible, and beautiful design.
Lock in your access to watch it for FREE this weekend: https://vue.school/vsfw25x
Slow Vue apps drive users away - fast. 💨
Learn how to build blazing-fast Vue.js apps that feel smooth and responsive in every click.
Our course “The Ultimate Guide to Vue Performance” is your blueprint for serious speed. ⚡
Check below for what you’ll learn + how to get it FREE 👇🧵
Learn how to build blazing-fast Vue.js apps that feel smooth and responsive in every click.
Our course “The Ultimate Guide to Vue Performance” is your blueprint for serious speed. ⚡
Check below for what you’ll learn + how to get it FREE 👇🧵
October 31, 2025 at 5:14 PM
Slow Vue apps drive users away - fast. 💨
Learn how to build blazing-fast Vue.js apps that feel smooth and responsive in every click.
Our course “The Ultimate Guide to Vue Performance” is your blueprint for serious speed. ⚡
Check below for what you’ll learn + how to get it FREE 👇🧵
Learn how to build blazing-fast Vue.js apps that feel smooth and responsive in every click.
Our course “The Ultimate Guide to Vue Performance” is your blueprint for serious speed. ⚡
Check below for what you’ll learn + how to get it FREE 👇🧵
Did you know that poor state management is one of the top causes of unnecessary re-renders in modern web apps?
This is why you need to get up to speed with global state management in Vue.js 3, ASAP. 🧵
This is why you need to get up to speed with global state management in Vue.js 3, ASAP. 🧵
October 30, 2025 at 3:05 PM
Did you know that poor state management is one of the top causes of unnecessary re-renders in modern web apps?
This is why you need to get up to speed with global state management in Vue.js 3, ASAP. 🧵
This is why you need to get up to speed with global state management in Vue.js 3, ASAP. 🧵
We’re giving free access to our epic premium courses!
If you're still stitching together Vue components without a clear pattern - check this out! 🧵
If you're still stitching together Vue components without a clear pattern - check this out! 🧵
October 27, 2025 at 3:18 PM
We’re giving free access to our epic premium courses!
If you're still stitching together Vue components without a clear pattern - check this out! 🧵
If you're still stitching together Vue components without a clear pattern - check this out! 🧵
What does this do within Nuxt UI project?🤔
a) Make default button xl
b) Gives solid cards blue bg
c) Both of these
d) Doesn’t do anything
a) Make default button xl
b) Gives solid cards blue bg
c) Both of these
d) Doesn’t do anything
October 23, 2025 at 2:25 PM
What does this do within Nuxt UI project?🤔
a) Make default button xl
b) Gives solid cards blue bg
c) Both of these
d) Doesn’t do anything
a) Make default button xl
b) Gives solid cards blue bg
c) Both of these
d) Doesn’t do anything
💡 Vue.js Tip: Mutate using Pinia Colada
Fetching data is only half the battle - what about updating it (everywhere)? 🤔
With `useMutation()` in Pinia Colada, you get powerful tools like `mutate`, `mutateAsync`, & lifecycle hooks for declarative write operations, cache invalidation, & more.
Fetching data is only half the battle - what about updating it (everywhere)? 🤔
With `useMutation()` in Pinia Colada, you get powerful tools like `mutate`, `mutateAsync`, & lifecycle hooks for declarative write operations, cache invalidation, & more.
October 17, 2025 at 2:25 PM
💡 Vue.js Tip: Mutate using Pinia Colada
Fetching data is only half the battle - what about updating it (everywhere)? 🤔
With `useMutation()` in Pinia Colada, you get powerful tools like `mutate`, `mutateAsync`, & lifecycle hooks for declarative write operations, cache invalidation, & more.
Fetching data is only half the battle - what about updating it (everywhere)? 🤔
With `useMutation()` in Pinia Colada, you get powerful tools like `mutate`, `mutateAsync`, & lifecycle hooks for declarative write operations, cache invalidation, & more.
Vue.js Tip 💡
Need to switch favicons dynamically (alert, recording, offline)?
Skip manual edits - use useFavicon from VueUse. It’s reactive, clean, and perfect for toggling pre-rendered icons.
No DOM hacks - just Vue.js magic.✨
Need to switch favicons dynamically (alert, recording, offline)?
Skip manual edits - use useFavicon from VueUse. It’s reactive, clean, and perfect for toggling pre-rendered icons.
No DOM hacks - just Vue.js magic.✨
October 7, 2025 at 3:13 PM
Vue.js Tip 💡
Need to switch favicons dynamically (alert, recording, offline)?
Skip manual edits - use useFavicon from VueUse. It’s reactive, clean, and perfect for toggling pre-rendered icons.
No DOM hacks - just Vue.js magic.✨
Need to switch favicons dynamically (alert, recording, offline)?
Skip manual edits - use useFavicon from VueUse. It’s reactive, clean, and perfect for toggling pre-rendered icons.
No DOM hacks - just Vue.js magic.✨
Hey Laravel and VueJS users! Have you heard about fusion from Aaron Francis?
September 9, 2025 at 2:25 PM
Hey Laravel and VueJS users! Have you heard about fusion from Aaron Francis?
Generate /llms.txt from your Nuxt Content! 😏
September 8, 2025 at 2:25 PM
Generate /llms.txt from your Nuxt Content! 😏
Get 50 - 100 times faster linting with Oxlint in your new Vue projects! Just select from it at setup time 💪
September 7, 2025 at 2:24 PM
Get 50 - 100 times faster linting with Oxlint in your new Vue projects! Just select from it at setup time 💪
⚡ Nitro (& Nuxt) supports experimental scheduled tasks, but they don’t work on Netlify yet.
🔧 Use Netlify Scheduled Functions to trigger Nuxt API endpoints instead.
🛠️ Steps to Implement
•Create task logic as a Nuxt API endpoint.
•Build a Netlify Scheduled Function to call the endpoint.
[1/2]↓
🔧 Use Netlify Scheduled Functions to trigger Nuxt API endpoints instead.
🛠️ Steps to Implement
•Create task logic as a Nuxt API endpoint.
•Build a Netlify Scheduled Function to call the endpoint.
[1/2]↓
September 6, 2025 at 5:14 PM
⚡ Nitro (& Nuxt) supports experimental scheduled tasks, but they don’t work on Netlify yet.
🔧 Use Netlify Scheduled Functions to trigger Nuxt API endpoints instead.
🛠️ Steps to Implement
•Create task logic as a Nuxt API endpoint.
•Build a Netlify Scheduled Function to call the endpoint.
[1/2]↓
🔧 Use Netlify Scheduled Functions to trigger Nuxt API endpoints instead.
🛠️ Steps to Implement
•Create task logic as a Nuxt API endpoint.
•Build a Netlify Scheduled Function to call the endpoint.
[1/2]↓
🧠 Tip of the day:
Set `nitro.experimental.openAPI` to true in `nuxt.config` and define openAPI meta data directly in your API handler files. Why? For those sweet auto-generated API docs of course! 🔥
Set `nitro.experimental.openAPI` to true in `nuxt.config` and define openAPI meta data directly in your API handler files. Why? For those sweet auto-generated API docs of course! 🔥
September 5, 2025 at 2:25 PM
🧠 Tip of the day:
Set `nitro.experimental.openAPI` to true in `nuxt.config` and define openAPI meta data directly in your API handler files. Why? For those sweet auto-generated API docs of course! 🔥
Set `nitro.experimental.openAPI` to true in `nuxt.config` and define openAPI meta data directly in your API handler files. Why? For those sweet auto-generated API docs of course! 🔥
If you use $fetch in a server side API endpoint in a Nuxt app to make a request to another INTERNAL api endpoint, Nuxt skips the HTTP layer and just does the thing in that endpoint! 🤯
Awesome DX for easy performance!
Awesome DX for easy performance!
September 4, 2025 at 2:25 PM
If you use $fetch in a server side API endpoint in a Nuxt app to make a request to another INTERNAL api endpoint, Nuxt skips the HTTP layer and just does the thing in that endpoint! 🤯
Awesome DX for easy performance!
Awesome DX for easy performance!
Did you know you can create custom directives in Vue.js? Have you done this before? If so, what was the use case? 🤔
September 3, 2025 at 2:25 PM
Did you know you can create custom directives in Vue.js? Have you done this before? If so, what was the use case? 🤔
💡 Tip of the day:
Slot content is not just limited to text. That makes them a great alternative to props for use cases where you need more flexible input.
Slot content is not just limited to text. That makes them a great alternative to props for use cases where you need more flexible input.
September 2, 2025 at 5:14 PM
💡 Tip of the day:
Slot content is not just limited to text. That makes them a great alternative to props for use cases where you need more flexible input.
Slot content is not just limited to text. That makes them a great alternative to props for use cases where you need more flexible input.
How to implement useAsyncData for parallel requests: 👩💻
To implement `useAsyncData`, you can replace your existing `useFetch` calls with `useAsyncData` and `Promise.all`. ⬇️
To implement `useAsyncData`, you can replace your existing `useFetch` calls with `useAsyncData` and `Promise.all`. ⬇️
August 30, 2025 at 5:14 PM
How to implement useAsyncData for parallel requests: 👩💻
To implement `useAsyncData`, you can replace your existing `useFetch` calls with `useAsyncData` and `Promise.all`. ⬇️
To implement `useAsyncData`, you can replace your existing `useFetch` calls with `useAsyncData` and `Promise.all`. ⬇️
💡Tip of the day: Add contextual information to your errors without losing the original details.
The pattern in the image shows how to enrich an error with valuable debugging context. 👇
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause
The pattern in the image shows how to enrich an error with valuable debugging context. 👇
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause
August 29, 2025 at 2:25 PM
💡Tip of the day: Add contextual information to your errors without losing the original details.
The pattern in the image shows how to enrich an error with valuable debugging context. 👇
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause
The pattern in the image shows how to enrich an error with valuable debugging context. 👇
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause
💡Tip of the day:
Transforming Errors Before Re-throwing. Convert cryptic low-level errors into more meaningful ones:
Check the explanation below. 👇
Transforming Errors Before Re-throwing. Convert cryptic low-level errors into more meaningful ones:
Check the explanation below. 👇
August 28, 2025 at 2:26 PM
💡Tip of the day:
Transforming Errors Before Re-throwing. Convert cryptic low-level errors into more meaningful ones:
Check the explanation below. 👇
Transforming Errors Before Re-throwing. Convert cryptic low-level errors into more meaningful ones:
Check the explanation below. 👇
Let's see how to use error boundaries in Vue applications: 💻
To use error boundaries effectively, you typically wrap potentially problematic components or sections of your application with an error boundary component. Check out the image for a basic usage pattern. 👇
To use error boundaries effectively, you typically wrap potentially problematic components or sections of your application with an error boundary component. Check out the image for a basic usage pattern. 👇
August 27, 2025 at 5:14 PM
Let's see how to use error boundaries in Vue applications: 💻
To use error boundaries effectively, you typically wrap potentially problematic components or sections of your application with an error boundary component. Check out the image for a basic usage pattern. 👇
To use error boundaries effectively, you typically wrap potentially problematic components or sections of your application with an error boundary component. Check out the image for a basic usage pattern. 👇
💡 Tip of the day:
Support nonreactive values, refs, and callback functions (getters) in your composables with Vue’s built-in toValue function. (Available starting in Vue 3.3)
Support nonreactive values, refs, and callback functions (getters) in your composables with Vue’s built-in toValue function. (Available starting in Vue 3.3)
August 27, 2025 at 2:25 PM
💡 Tip of the day:
Support nonreactive values, refs, and callback functions (getters) in your composables with Vue’s built-in toValue function. (Available starting in Vue 3.3)
Support nonreactive values, refs, and callback functions (getters) in your composables with Vue’s built-in toValue function. (Available starting in Vue 3.3)