shallowRef() Shallow Reactive Ref

Last updated: 2026-10-22

shallowRef() Shallow Reactive Ref

shallowRef() only tracks replacement of .value — swapping the whole value updates, mutating inner properties does not.

GroupReactivity: Advanced
KindAPI
ScopeComponent
Vue Version3.0+
SSR SupportYes

📝 Syntax

const big = shallowRef({ list: [] })
big.value = { list: [1] }   // ✅ triggers
big.value.list.push(2)     // ❌ no trigger (inner not proxied)

⚙️ Arguments

valueAny initial value (no deep proxying inside)

Returns:A shallow ref object

▶ Example

Edit the code below and see the live result:

Output:

Pushing inside leaves the number unchanged; replacing the whole value shows 3.

💡 Key Points

💡 Tip Great for big datasets, third-party instances and chart/map objects replaced wholesale.
⚠️ Warning Use triggerRef to force an update after inner mutation, though replacing wholesale is cleaner.
ℹ️ Note isShallow() detects shallow refs.
More case studies coming soon.

📚 Related Tutorials

❓ FAQ

Q When is shallowRef necessary?
A When wrapping large read-mostly structures you replace as a whole.
Q Why does the page not update after push?
A Inner objects are not proxied, so the change is invisible; replacing .value notifies.
Q Is the perf gap big?
A Significant for deep large objects; negligible for small ones.
Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏