You build a useCounter() composable, drop <Counter /> on the page twice, and click the first button. Both counters go up. You didn't copy-paste a bug. You wrote twelve lines of completely ordinary-looking Composition API code, and Vue executed every one of them correctly. The surprise isn't a Vue bug — it's a gap in your mental model of what a composable actually is , and that gap is exactly where a much more expensive version of this same mistake lives: on a server, where "the oth...