Inertia.js v3.0.0 вже тут — підтримка optimistic updates, новий хук useHttp та інші поліпшення

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 27 березня, 2026
Вийшла Inertia.js v3 із вбудованим XHR‑клієнтом, новим хуком useHttp, першокласною підтримкою оптимістичних оновлень та SSR у режимі Vite. Хочете знати, що це означає для вашого Laravel‑проєкту і як коректно оновитися — читайте далі.

Випущено Inertia.js v3.0.0. Ми покривали бета‑версію раніше цього року, а фінальний реліз поєднує ті функції з низкою виправлень і доопрацювань, накопичених під час бети. Оновлення стосується ядра та всіх трьох адаптерів (React, Vue і Svelte).

Ключові новинки:

# Що нового

# Вбудований XHR‑клієнт — Axios більше не обов'язковий

Axios більше не є обов'язковою залежністю. Inertia тепер постачається зі своїм XHR‑клієнтом, що за замовчуванням прибирає Axios (~15KB gzipped) з вашого bundle. Якщо ви використовуєте Axios‑interceptors або хочете зберегти попередню поведінку, Axios усе ще доступний як опціональна peer dependency.

Пакет qs також видалено. Встановіть його вручну, якщо ваш застосунок від нього залежить.

PR: #2833

# Хук useHttp

Новий хук useHttp закриває давню потребу в запитах, які не викликають навігацію. Він повертає реактивний стан — processing, errors, progress та isDirty — з тим самим зручним DX, що й useForm. Також є інтеграція з Precognition 2.x для валідації в реальному часі.

const http = useHttp({
    query: '',
})
 
const search = () => {
    http.get('/api/search').then((results) => {
        console.log('Found:', results.length)
    })
}

Хук призначений для маршрутів, які повертають response()->json(), а не Inertia::render(). Підтримується опція withAllErrors для повернення всіх помилок валідації одразу, а не лише першої для кожного поля.

PR: #2840, #2880

# Оптимістичні оновлення

Inertia v3 додає повноцінний API для оптимістичних оновлень у router, useForm та useHttp. Зміни застосовуються миттєво до стану сторінки й автоматично відкатуються при відповідях поза діапазоном 2xx. Снапшотуються лише ключі, явно визначені в колбеку. Також коректно обробляються паралельні оптимістичні оновлення — кожен одночасний запит має власний снімок для відкату.

// Fluent
router
    .optimistic((props) => ({
        todos: [...props.todos, { id: Date.now(), name, done: false }],
    }))
    .post('/todos', { name })
 
// Inline option
router.post('/todos', { name }, {
    optimistic: (props) => ({
        todos: [...props.todos, { id: Date.now(), name, done: false }],
    }),
})

Компонент <Form> також отримав проп optimistic, а колбеки optimistic і transform тепер підтримують виведення generic‑типів.

const form = useForm({ name: '' })
 
const addTodo = () => {
    form
        .optimistic((props) => ({
            todos: [...props.todos, { id: Date.now(), name: form.name, done: false }],
        }))
        .post('/todos')
}

PR: #2866, #2898, #2881

# Layout Props

useLayoutProps і setLayoutProps дають сторінкам акуратний спосіб передати дані в layout без використання event bus або provide/inject. Макети оголошують значення за замовчуванням; сторінки викликають setLayoutProps(), щоб їх перевизначити. У фінальній реалізації layout props передаються напряму як props компоненту.

PR: #2859, #3005

# SSR у Vite dev‑режимі

SSR тепер працює під час npm run dev без запуску окремого Node.js‑серверного процесу. Плагін Vite обробляє це автоматично; також додано фікс для flash-of-unstyled-content. Для продакшен‑збірки робочий процес не змінився: vite build && vite build --ssr, потім php artisan inertia:start-ssr.

PR: #2864, #2911

# Ще в v3

У v3.0.0 також з'явилися такі можливості. Деталі — в офіційній документації та в інструкції з оновлення:

# Примітки щодо оновлення

Це великий реліз зі зворотно‑несумісними змінами, зокрема оновлені вимоги до версій фреймворків, видалення Axios, ESM‑only вивід та низка перейменованих API. Перед оновленням уважно ознайомтеся з офіційною інструкцією з оновлення.

Щоб оновити:

npm install @inertiajs/vue3@^3.0   # or @inertiajs/react / @inertiajs/svelte
npm install @inertiajs/vite@^3.0
composer require inertiajs/inertia-laravel:^3.0

Джерела

Популярні

Logomark Logotype

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

Logomark Logotype

Перетворення даних у типобезпечні DTO за допомогою пакету Data Model

Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю