Во первых: всё зависит от сигнатуры этого вашего <code>useApiFetch</code> , очень многое в vue 3 можно сломать неудачной деструктуризацией. Но допустим сам хук нормальный. <br/> В таком случае <code>isPending</code> - это <code>ref</code> , а значит он и должен быть прокси, чтоб собственно работала энтая самая реактивность. Чтоб отобразить в консоли чистый объект - есть хэлпер <code>toRaw</code> (только после этого он уже не будет динамическим). <br/> <br/> Далее: если вы выводите в консоль <code>isPending.value</code> - то в консоль, очевидно, попадает значение на момент вызова <code>console.log</code> . Магическим образом прямо в консоли оно уже не изменится. <br/> <br/> Если ты хочешь понаблюдать за изменениями <code class="javascript">isPending</code> - можешь сделать так: <br/> <pre><code class="javascript">watch(isPending, (value) => console.log('watch isPending', value), { immediate: true });</code></pre> <br/> <br/> В заключение предположу, что всё у вас работает как должно, а проблемы с пониманием реактивности vue и асинхронности как таковой.