> ## Documentation Index
> Fetch the complete documentation index at: https://makeswift-docs-branch.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Upgrading to 0.15.0

If you haven't upgraded to `0.14.0` please read the [upgrading guide](/developer/upgrading/0.14.0).

### Add `ReactRuntimeProvider` to your Next.js Custom App

If you don't have a [Custom App](https://nextjs.org/docs/pages/building-your-application/routing/custom-app), you'll need to add one. Then wrap it with `ReactRuntimeProvider` and pass your `runtime` instance to it.

```tsx pages/_app.tsx theme={null}
import { runtime } from "@/makeswift/runtime"
import { ReactRuntimeProvider } from "@makeswift/runtime/next"
import type { AppProps } from "next/app"

export default function App({ Component, pageProps }: AppProps) {
  return (
    <ReactRuntimeProvider runtime={runtime}>
      <Component {...pageProps} />
    </ReactRuntimeProvider>
  )
}
```

### Remove `runtime` prop from `Page` component

```diff pages/[[...path]].tsx theme={null}
import { Page as MakeswiftPage } from '@makeswift/runtime/next'
import { runtime } from '@/makeswift/runtime'

/* ... */

export default function Page({ snapshot }: Props) {
-  return <MakeswiftPage snapshot={snapshot} runtime={runtime} />
+  return <MakeswiftPage snapshot={snapshot} />
}
```

### Use `React.lazy` instead of `next/dynamic` for code-splitting

```diff makeswift/components.tsx theme={null}
import { runtime } from '@/makeswift/runtime'
- import dynamic from 'next/dynamic'
- import { forwardNextDynamicRef } from '@makeswift/runtime/next'
+ import { lazy } from 'react'


runtime.registerComponent(
-  forwardNextDynamicRef(patch =>
-    dynamic(() => patch(import('./Button').then(({ Button }) => Button)))
-  )
+  lazy(() => import('./Button')),
  { type: 'Button', label: 'Button', props: {} }
)

```

Here is the link to the [official release notes](https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.15.0).
