# Demo application We've setup a demo app for Inertia.js called [Ping CRM](https://demo.inertiajs.com). This application is built using Laravel and Vue. You can find the source code on [GitHub](https://github.com/inertiajs/pingcrm). The Ping CRM demo is hosted on Heroku and the database is reset every hour. Please be respectful when editing data. [](https://demo.inertiajs.com)In addition to the Vue version of Ping CRM, we also maintain a Svelte version of the application, which you can find [on GitHub](https://github.com/inertiajs/pingcrm-svelte). ## Third party Beyond our official demo app, Ping CRM has also been translated into numerous different languages and frameworks. - [Clojure/React](https://github.com/prestancedesign/pingcrm-clojure) by Michaël Salihi - [Echo/Vue](https://github.com/kohkimakimoto/pingcrm-echo) by Kohki Makimoto - [Grails/Vue](https://github.com/matrei/pingcrm-grails) by Mattias Reichel - [Laravel/React](https://github.com/Landish/pingcrm-react) by Lado Lomidze - [Laravel/Mithril.js](https://github.com/tbreuss/pingcrm-mithril) by Thomas Breuss - [Laravel/Svelte](https://github.com/zgabievi/pingcrm-svelte) by Zura Gabievi - [Ruby on Rails/Vue](https://github.com/ledermann/pingcrm/) by Georg Ledermann - [Symfony/Vue](https://github.com/aleksblendwerk/pingcrm-symfony) by Aleks Seltenreich - [Yii 2/Vue](https://github.com/tbreuss/pingcrm-yii2) by Thomas Breuss # Upgrade guide for v2.0 You can find the legacy docs for Inertia.js v1.0 at [v1.inertiajs.com](https://v1.inertiajs.com). ## What's new Inertia.js v2.0 is a huge step forward for Inertia! The core library has been completely rewritten to architecturally support asynchronous requests, enabling a whole set of new features, including: - [Polling](/polling) - [Prefetching](/prefetching) - [Deferred props](/deferred-props) - [Infinite scrolling](/merging-props) - [Lazy loading data on scroll](/load-when-visible) Additionally, for security sensitive projects, Inertia now offers a [history encryption API](/history-encryption), allowing you to clear page data from history state when logging out of an application. ## Upgrade dependencies To upgrade to the Inertia.js v2.0, first use npm to install the client-side adapter of your choice: Vue: ```bash npm install @inertiajs/vue3@^2.0 ``` React: ```bash npm install @inertiajs/react@^2.0 ``` Svelte: ```bash npm install @inertiajs/svelte@^2.0 ``` Next, upgrade the `inertiajs/inertia-laravel` package to use the `2.x` dev branch: Laravel: ```bash composer require inertiajs/inertia-laravel:^2.0 ``` ## Breaking changes While a significant release, Inertia.js v2.0 doesn't introduce many breaking changes. Here's a list of all the breaking changes: ### Dropped Laravel 8 and 9 support The Laravel adapter now requires Laravel 10 and PHP 8.1 at a minimum. ### Dropped Vue 2 support The Vue 2 adapter has been removed. Vue 2 reached End of Life on December 3, 2023, so this felt like it was time. ### Router `replace` method The previously deprecated `router.replace` method has been re-instated, but its functionality has changed. It is now used to make [Client Side](/manual-visits#client-side-visits) page visits. To make server-side visits that replace the current history entry in the browser, use the `replace` option: Vue: ```javascript router.get('/users', { search: 'John' }, { replace: true }) ``` ### Svelte adapter - Dropped support for Svelte 3 as it reached End of Life on June 20, 2023. - The `remember` helper has been rename to `useRemember` to be consistent with other helpers. - Updated `setup` callback in `app.js`. You need to pass `props` when initializing the `App` component. [See setup in app.js](/client-side-setup#initialize-the-inertia-app) - `setup` callback is now required in `ssr.js`. [See setup in ssr.js](/server-side-rendering#add-server-entry-point) ### Partial reloads are now async Previously partial reloads in Inertia were synchronous, just like all Inertia requests. In v2.0, partial reloads are now asynchronous. Generally this is desirable, but if you were relying on these requests being synchronous, you may need to adjust your code. # Server-side setup The first step when installing Inertia is to configure your server-side framework. Inertia maintains an official server-side adapter for [Laravel](https://laravel.com/). For other frameworks, please see the [community adapters](/community-adapters). Inertia is fine-tuned for Laravel, so the documentation examples on this website utilize Laravel. For examples of using Inertia with other server-side frameworks, please refer to the framework specific documentation maintained by that adapter. ## Laravel starter kits Laravel's [starter kits](https://laravel.com/docs/starter-kits), Breeze and Jetstream, provide out-of-the-box scaffolding for new Inertia applications. These starter kits are the absolute fastest way to start building a new Inertia project using Laravel and Vue or React. However, if you would like to manually install Inertia into your application, please consult the documentation below. ## Install dependencies First, install the Inertia server-side adapter using the Composer package manager. Laravel: ```bash composer require inertiajs/inertia-laravel ``` ## Root template Next, setup the root template that will be loaded on the first page visit to your application. This template should include your site's CSS and JavaScript assets, along with the `@inertia` and `@inertiaHead` directives. Laravel: ```markup
@vite('resources/js/app.js') @inertiaHead @inertia ``` For React applications, it's recommended to include the `@viteReactRefresh` directive before the `@vite` directive to enable Fast Refresh in development. The `@inertia` directive renders a `