CARVIEW |
Select Language
HTTP/2 200
date: Thu, 17 Jul 2025 18:34:37 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"0f30965f081a1e341751047d9be1f17a"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=jdS1MwMr9rhjvvaGZyFXo%2BKqxUNJ%2FX9ks%2B5ST2b5b4lRDbJIdeUe6GxutTQGNrzyXRTw%2BPVSZLXwYxOoI%2BMasQInpjBLo6jNOj29Hk%2Fecj7AtHELQTZROzM2Z%2BaIfmhjd7a8GsjmeMaS7cbQCM1M6%2FOqiBrgttiy4r5%2FuSk%2Bj%2FQLamvQLdsrwvrjrpwGb3eEQNJ2TezD%2FGSmZeTUXflQ38Oi7pLP17Dj8Yac4Q4uVeWXSDJK2v5fnxadgaw5oHpg0rMZaS1SS3H74hgEsAkcUw%3D%3D--JkhbCwWxtj6YYQtH--QXvoppu%2F84hfP%2BOPm0viWg%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.2109755709.1752777276; Path=/; Domain=github.com; Expires=Fri, 17 Jul 2026 18:34:36 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Fri, 17 Jul 2026 18:34:36 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: 882E:27D643:43AFD1:4F2831:6879423C
Tags · vuejs/core · GitHub
Toggle v3.6.0-alpha.1's commit message
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 8.8k
Tags: vuejs/core
Tags
v3.6.0-alpha.1
This is the first alpha release for 3.6, with the main goal being lan… …ding Vapor Mode. Vapor Mode is a new compilation mode for Vue Single-File Components (SFC) with the goal of reducing baseline bundle size and improved performance. It is 100% opt-in, and supports a subset of existing Vue APIs with mostly identical behavior. Vapor Mode has demonstrated the same level of performance with Solid and Svelte 5 in [3rd party benchmarks](https://github.com/krausest/js-framework-benchmark). Vapor Mode is available starting in Vue 3.6 alpha. Please note it is still incomplete and unstable during the alpha phase. The current focus is making it available for wider stability and compatibility testing. For now, we recommend using it for the following cases: - Partial usage in existing apps, e.g. implementing a perf-sensitive sub page in Vapor Mode. - Build small new apps entirely in Vapor Mode. We do not recommend migrating eixsting components to Vapor Mode yet. Things that do not work in this version yet: - SSR hydration\* (which means it does not work with Nuxt yet) - Async Component\* - Transition\* - KeepAlive\* - Suspense Features marked with \* have pending PRs which will be merged during the alpha phase. Vapor Mode only works for Single File Components using `<script setup>`. To opt-in, add the `vapor` attribute to `<script setup>`: ```vue <script setup vapor> // ... </script> ``` Vapor Mode components are usable in two scenarios: 1. Inside a Vapor app instance create via `createVaporApp`. Apps created this way avoids pulling in the Virtual DOM runtime code and allows bundle baseline size to be drastically reduced. 2. To use Vapor components in a VDOM app instance created via `createApp`, the `vaporInteropPlugin` must be installed: ```js import { createApp, vaporInteropPlugin } from 'vue' import App from './App.vue' createApp(App) .use(vaporInteropPlugin) // enable vapor interop .mount('#app') ``` A Vapor app instance can also install `vaporInteropPlugin` to allow vdom components to be used inside, but it will pull in the vdom runtime and offset the benefits of a smaller bundle. When the interop plugin is installed, Vapor and non-Vapor components can be nested inside each other. This currently covers standard props, events, and slots usage, but does not yet account for all possible edge cases. For example, there will most likely still be rough edges when using a VDOM-based component library in Vapor Mode. This is expected to improve over time, but in general, we recommend having distinct "regions" in your app where it's one mode or another, and avoid mixed nesting as much as possible. In the future, we may provide support tooling to enforce Vapor usage boundaries in codebases. By design, Vapor Mode supports a **subset** of existing Vue features. For the supported subset, we aim to deliver the exact same behavior per API specifications. At the same time, this means there are some features that are explicitly not supported in Vapor Mode: - Options API - `app.config.globalProperties` - `getCurrentInstance()` returns `null` in Vapor components - Implicit instance properties like `$slots` and `$props` are not available in Vapor template expressions - `@vue:xxx` per-element lifecycle events Custom directives in Vapor also have a different interface: ```ts type VaporDirective = ( node: Element | VaporComponentInstance, value?: () => any, argument?: string, modifiers?: DirectiveModifiers, ) => (() => void) | void ``` `value` is a reactive getter that returns the binding value. The user can set up reactive effects using `watchEffect` (auto released when component unmounts), and can optionally return a cleanup function. Example: ```ts const MyDirective = (el, source) => { watchEffect(() => { el.textContent = source() }) return () => console.log('cleanup') } ``` Vapor Mode attempts to match VDOM Mode behavior as much as possible, but there could still be minor behavior inconsistencies in edge cases due to how fundamentally different the two rendering modes are. In general, we do not consider a minor inconsistency to be breaking change unless the behavior has previously been documented.
PreviousNext
You can’t perform that action at this time.