The main reason for your problem is that every time the useNumbers function is called, a new numbers object instance is created. Therefore, each component has its own copy of numbers, which are not shared between components.
Use store
To maintain the same state across multiple useNumbers instances, you can promote the state outside the function so that it is only created once.
import { ref } from 'vue'; const numbers = ref([1, 2, 3, 4, 5]); export default function() { ... return { numbers } }