If you ship API changes with Cursor or Claude Code and the backend merges while the frontend stays stale—you are not alone. This post answers three things only: why edits get missed, a real OrderDTO case, and how CodeGraph fixes it on Vue 3 + Spring Boot via CodeGraph and MCP.
OrderDTO.amount, run codegraph_impact—it lists Java services and Vue createOrder plus the Pinia store in one pass, the ring agents skip most often.Why Cursor keeps missing the frontend
Missed files are rarely “the model can’t code.” AI Coding tools fail on cross-directory, cross-language references. On Vue + Spring Boot splits, three causes cover most incidents:
1. Context window: only the open file fits
Cursor @-mentions and Claude Code Read calls are bounded. The agent stares at OrderController.java and never learns frontend/src/api/order.ts shares the same DTO field. New chats and branch switches make “what we already changed” harder to track—worse stacked with Cursor forgetting across weeks.
2. Grep: finds text, not call graphs
Default exploration uses grep. Searching amount pulls logs, tests, and dead constants—not who calls OrderService.createOrder or which @PostMapping backs the route. Tokens go to finding entry points, not fixing full blast radius.
3. No impact analysis: one file fixed, ten orphaned
Humans ask: if I change this field, what else breaks? Without structured impact, agents “finish Java” and leave TypeScript, Pinia, and tests for a follow-up you never scheduled.
The fix is not always a bigger model—it is queryable call graphs, edges, and route entry points for the agent. The order API below shows how.
Real case: OrderDTO.amount
Task: on POST /api/orders, change amount from number to string (e.g. large values or formatted strings). Repo layout: backend/ (Controller → Service → OrderDTO), frontend/ (api/order.ts → Pinia → checkout view).
Without CodeGraph: what Cursor / Claude Code often skip
I gave only the business description—no @ files. Typical outcome:
- ✅
OrderDTO.java,OrderServiceupdated - ❌
frontend/src/api/order.tscreateOrderpayload types - ❌
useOrderStorefield mapping foramount - ❌ checkout
v-modelstill validated as numeric
mvn compile may pass; pnpm build sometimes does too—then integration or production breaks. That is “API changed, frontend forgotten.”
With impact: blast radius (excerpt)
codegraph_impact
symbol: "OrderDTO.amount"
→ OrderService.createOrder
→ OrderController.create
→ frontend/src/api/order.ts :: createOrder
→ stores/order.ts :: useOrderStore
The last line is what grep used to miss. Edit against the list in Cursor or Claude Code and miss rates drop.
How CodeGraph surfaces the blast radius
CodeGraph Tree-sitter-indexes Java / TS / Vue scripts locally, stores call edges in .codegraph/, and exposes codegraph_* tools over MCP. Data stays on the machine by default.
For this order change I always run:
codegraph_context— task-sized pack of Controller, DTO, frontend API entrycodegraph_trace— Spring:OrderController.create→OrderMapper.insertcodegraph_impact— expand fromOrderDTO.amountacross Java + Vue + storecodegraph_explore— related methods only, not an 800-line service dump
When HTTP paths and axios strings lack symbol edges, impact from the DTO still finds the frontend—that is the “better than expected” step here. Tooling deep dives and RAG comparisons: code knowledge graph roundup.
In AGENTS.md, require codegraph_impact before DTO edits and list frontend/src/api plus Pinia—more reliable than “don’t forget the frontend.”
Install (about 5 minutes)
At the repo root with frontend/ + backend/ (macOS):
curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh
# or: npx @colbymchenry/codegraph
codegraph install --target=cursor --yes
cd /path/to/your-repo
codegraph init -i
codegraph status
First full index: roughly 10–20 minutes depending on size; exclude node_modules, target, dist. Saves debounce ~2s incremental sync; on ⚠️ Pending sync, have the agent Read source.
Results compared
| Approach | Tool calls (same task, informal) | Frontend on the checklist? |
|---|---|---|
| Grep + Read only | ~15+ | Often misses Pinia / API layer |
| CodeGraph MCP first | ~5–6 | impact lists front and back together |
Official Java benchmark (OkHttp ~645 files): median 10 → 3 tool calls (2026-05-29). Vue + Spring splits felt similar. Graphs do not replace tests—run mvn test and pnpm test:unit before merge.
Where to run indexing on large repos
First codegraph index spikes CPU, SQLite writes, and fan noise—if IDEA builds Spring and pnpm builds Vue at the same time, even Cursor MCP queries stutter.
Teams often put clone + full index + scheduled rebuilds on a Mac mini, CI node, or Cloud Mac; laptops stay for editing and MCP queries. I run indexing on a rented Macstripe M4, staggered from local builds; see enterprise Mac CI FAQ for worktree patterns.
A dedicated “CodeGraph on Cloud Mac” post is worth its own article—here we only note: separate indexing from interactive work.
Summary
Cursor missing the frontend on API changes usually means limited context + grep without calls + no impact. On Vue + Spring Boot, CodeGraph MCP with context → trace → impact aligns DTO blast radius in one list and cuts exploration from dozens of greps to a few structured queries.
Default workflow: init index → impact before DTO edits → edit the list → test. Concept posts, Claude Code on huge repos, and Cloud Mac deployment can be a series—links below.