GitShow/vuejs/apollo
vuejs

apollo

๐Ÿš€ Apollo/GraphQL integration for VueJS

by vuejs
apollographqlgraphqlvuevue2vuejsvuejs2
Star on GitHubForkWebsitenpm

TypeScript

6.0k stars517 forks145 contributorsActive ยท 2w agoSince 2016v4.2.3MIT

Meet the team

See all 145 on GitHub โ†’
Akryum
Akryum371 contributions
dependabot-preview[bot]Bot
dependabot-preview[bot]47 contributions
nickmessing
nickmessing26 contributions
ydfzgyj
ydfzgyj11 contributions
bbugh
bbugh7 contributions
Austio
Austio5 contributions
NataliaTepluhina
NataliaTepluhina5 contributions
ciscorn
ciscorn4 contributions

Languages

View on GitHub โ†’
TypeScript91.8%
Vue7.7%
CSS0.4%

Commit activity

Last 12 weeks ยท 11 commits

Full graph โ†’

Community health

4 of 6 standards met

Community profile โ†’
75
โœ“READMEโœ“Licenseโœ“Contributingโœ“Code of Conductโ—‹Issue Templateโ—‹PR Template

Recent fixes

View closed PRs โ†’
nickmessing
fix(useQuery): apply variable commits as a single writeMergedPR

wrote the variables commit and its busy flag separately, under Vue 3.6 watchers are triggered sync during write and could catch half-committed state.

nickmessing ยท 2w ago
nickmessing
feat: add @vue/apollo-components & docsMergedPR

Adds @vue/apollo-components: ApolloQuery, ApolloMutation, ApolloSubscription, ApolloSubscribeToMore and ApolloFragment, built on @vue/apollo-composable and sharing the same client. The docs now cover both APIs side by side. Also fixes two composable bugs the components turned up.

nickmessing ยท 2w ago
OrbitingBucket
useQuery: a plain DocumentNode argument is deep-wrapped in a reactive proxy, losing document identityClosedIssue

Describe the bug In 's input normalization, a plain argument is deep-wrapped in a Vue reactive proxy before it reaches Apollo Client, so the document Apollo receives is not the object the caller passed. The cause is here (current tip): https://github.com/vuejs/apollo/blob/69d9097548a3/packages/vue-apollo-composable/src/useQuery.ts#L968 For the most common documented call form, , falls through to , and deep-converts objects โ€” so is , not . Reproduction Observed on with 4.2.3 and Vue 3.5; the normalization is unchanged at the current tip (69d9097). Why this matters 1. Document identity is load-bearing in Apollo Client. Per-document caches (document transform cache, cache) are WeakMaps keyed by object reference. The proxy and the raw constant are different keys, so the same operation used both through and directly (, , SSR code) is transformed and printed separately. 2. Identity-based matching can silently miss. APIs that match operations by document โ€” e.g. after a mutation โ€” see a different object than the one the observable query was registered with, since each is routed through the transform cache under its own key. 3. Needless reactivity overhead. Every AST node Apollo touches while transforming/printing the document is tracked as a dependency of a proxy that will never mutate. Suggested fix Normalize with a getter instead of , which supports the same input surface but never converts the returned value, preserving referential identity for plain constants, refs, and getters alike: Happy to send a PR if this shape is acceptable. Workaround Pass a getter: โ€” wraps getters in a non-converting readonly ref, so identity is preserved. Context Found while porting a production React + Apollo Client 4 app to Vue 3.5 against the v5 alpha โ€” an Apollo-level parity test suite flagged the identity loss.

OrbitingBucket ยท 3w ago
Structured data for AI agents

Repository: vuejs/apollo. Description: ๐Ÿš€ Apollo/GraphQL integration for VueJS Stars: 6032, Forks: 517. Primary language: TypeScript. Languages: TypeScript (91.8%), Vue (7.7%), CSS (0.4%). License: MIT. Homepage: http://apollo.vuejs.org Topics: apollographql, graphql, vue, vue2, vuejs, vuejs2. Latest release: v4.2.3 (1mo ago). Open PRs: 9, open issues: 266. Last activity: 2w ago. Community health: 75%. Top contributors: Akryum, dependabot-preview[bot], nickmessing, ydfzgyj, bbugh, Austio, NataliaTepluhina, ciscorn, escapedcat, joe-re and others.

ยท@ofershap

Replace github.com with gitshow.dev