diff --git a/waspc/ChangeLog.md b/waspc/ChangeLog.md
index 64605414a..7cc4ab7cf 100644
--- a/waspc/ChangeLog.md
+++ b/waspc/ChangeLog.md
@@ -1,5 +1,30 @@
# Changelog
+## 0.15.0
+
+### 🎉 New Features
+
+- Upgrade to the latest Prisma version which makes Wasp faster!
+- Upgrade to the latest React Router version which sets us up for some cool new features in the future.
+
+### ⚠️ Breaking Changes
+
+There are some breaking changes with React Router 6 which will require you to update your code.
+
+Read more about them in the migration guide: https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15
+
+### 🐞 Bug fixes
+
+- Allow setting a custom server URL when deploying to Fly.io. (by @Case-E)
+- If the user uses native DB types for the `userEntity`, Wasp will use them correctly.
+
+### 🔧 Small improvements
+
+- Enable users to use Mailgun's EU region by setting the `MAILGUN_API_URL` env variable.
+- Validate `userEntity` ID field's `@default` attribute.
+
+Community contributions by @Case-E @therumbler
+
## 0.14.2 (2024-09-09)
Updated GPT models used in Wasp AI to latest models, since 3.5 are getting deprecated.
diff --git a/web/docs/migrate-from-0-11-to-0-12.md b/web/docs/migration-guides/migrate-from-0-11-to-0-12.md
similarity index 99%
rename from web/docs/migrate-from-0-11-to-0-12.md
rename to web/docs/migration-guides/migrate-from-0-11-to-0-12.md
index 3d9394197..f3ca37378 100644
--- a/web/docs/migrate-from-0-11-to-0-12.md
+++ b/web/docs/migration-guides/migrate-from-0-11-to-0-12.md
@@ -2,7 +2,7 @@
title: Migration from 0.11.X to 0.12.X
---
-import { EmailPill, UsernameAndPasswordPill, GithubPill, GooglePill } from "./auth/Pills";
+import { EmailPill, UsernameAndPasswordPill, GithubPill, GooglePill } from "../auth/Pills";
:::note Migrating to the latest version
@@ -71,9 +71,9 @@ The main differences are:
no longer start with `@server` or `@client`.
- Your project now features a top-level `public` dir. Wasp will publicly serve
all the files it finds in this directory. Read more about it
- [here](/project/static-assets.md).
+ [here](../project/static-assets.md).
-Our [Overview docs](./tutorial/02-project-structure.md) explain the new
+Our [Overview docs](../tutorial/02-project-structure.md) explain the new
structure in detail, while this page provides a [quick guide](#migrating-your-project-to-the-new-structure) for migrating existing
projects.
@@ -160,7 +160,7 @@ Auth field customization is no longer possible using the `_waspCustomValidations
:::
-You can read more about the new auth system in the [Accessing User Data](./auth/entities) section.
+You can read more about the new auth system in the [Accessing User Data](../auth/entities) section.
## How to Migrate?
@@ -597,7 +597,7 @@ You can follow these steps to migrate to the new auth system (assuming you alrea
If you want to properly type the `profile` object, we recommend you use a validation library like Zod to define the shape of the `profile` object.
- Read more about this and the `defineUserSignupFields` function in the [Auth Overview - Defining Extra Fields](./auth/overview.md#1-defining-extra-fields) section.
+ Read more about this and the `defineUserSignupFields` function in the [Auth Overview - Defining Extra Fields](../auth/overview.md#1-defining-extra-fields) section.
@@ -642,7 +642,7 @@ You should see the new `Auth`, `AuthIdentity` and `Session` tables in your datab
Instead, you can now use `getUsername(user)` to get the username obtained from Username & Password auth method, or `getEmail(user)` to get the email obtained from Email auth method.
- Read more about the helpers in the [Accessing User Data](auth/entities#accessing-the-auth-fields) section.
+ Read more about the helpers in the [Accessing User Data](../auth/entities#accessing-the-auth-fields) section.
1. Finally, **check that your app now fully works as it worked before**. If all the above steps were done correctly, everything should be working now.
@@ -693,7 +693,7 @@ Your app should be working correctly and using new auth, but to finish the migra
After doing the steps above successfully locally and making sure everything is working, it is time to push these changes to the deployed app again.
- _Deploy the app again_, either via `wasp deploy` or manually. Check our [Deployment docs](advanced/deployment/overview.md) for more details.
+ _Deploy the app again_, either via `wasp deploy` or manually. Check our [Deployment docs](../advanced/deployment/overview.md) for more details.
The database migrations will automatically run on successful deployment of the server and delete the now redundant auth-related `User` columns from the database.
diff --git a/web/docs/migrate-from-0-12-to-0-13.md b/web/docs/migration-guides/migrate-from-0-12-to-0-13.md
similarity index 90%
rename from web/docs/migrate-from-0-12-to-0-13.md
rename to web/docs/migration-guides/migrate-from-0-12-to-0-13.md
index f303f71c9..8fe518eba 100644
--- a/web/docs/migrate-from-0-12-to-0-13.md
+++ b/web/docs/migration-guides/migrate-from-0-12-to-0-13.md
@@ -42,7 +42,7 @@ Follow the steps below to migrate:
If you are migrating a deployed app, you will need to define the `WASP_SERVER_URL` server env variable in your deployment environment.
- Read more about setting env variables in production [here](./project/env-vars#defining-env-vars-in-production).
+ Read more about setting env variables in production [here](../project/env-vars#defining-env-vars-in-production).
:::
2. **Update the redirect URLs** for the OAuth providers
@@ -64,7 +64,7 @@ Follow the steps below to migrate:
- Check the new redirect URLs for [Google](./auth/social-auth/google.md#3-creating-a-google-oauth-app) and [GitHub](./auth/social-auth/github.md#3-creating-a-github-oauth-app) in Wasp's docs.
+ Check the new redirect URLs for [Google](../auth/social-auth/google.md#3-creating-a-google-oauth-app) and [GitHub](../auth/social-auth/github.md#3-creating-a-github-oauth-app) in Wasp's docs.
3. **Update the `configFn`** for the OAuth providers
@@ -129,7 +129,7 @@ Follow the steps below to migrate:
- Wasp now directly forwards what it receives from the OAuth providers. You can check the data format for [Google](./auth/social-auth/google.md#data-received-from-google) and [GitHub](./auth/social-auth/github.md#data-received-from-github) in Wasp's docs.
+ Wasp now directly forwards what it receives from the OAuth providers. You can check the data format for [Google](../auth/social-auth/google.md#data-received-from-google) and [GitHub](../auth/social-auth/github.md#data-received-from-github) in Wasp's docs.
That's it!
diff --git a/web/docs/migrate-from-0-13-to-0-14.md b/web/docs/migration-guides/migrate-from-0-13-to-0-14.md
similarity index 97%
rename from web/docs/migrate-from-0-13-to-0-14.md
rename to web/docs/migration-guides/migrate-from-0-13-to-0-14.md
index 97bd5fd06..8c6ec01c1 100644
--- a/web/docs/migrate-from-0-13-to-0-14.md
+++ b/web/docs/migration-guides/migrate-from-0-13-to-0-14.md
@@ -396,7 +396,7 @@ All that's left to do is migrate the database.
To avoid type errors, it's best to take care of database migrations after you've migrated the rest of the code.
So, just keep reading, and we will remind you to migrate the database as [the last step of the migration guide](#migrate-the-database).
-Read more about the [Prisma Schema File](./data-model/prisma-file.md) and how Wasp uses it to generate the database schema and Prisma client.
+Read more about the [Prisma Schema File](../data-model/prisma-file.md) and how Wasp uses it to generate the database schema and Prisma client.
### Migrate how you access user auth fields
@@ -659,8 +659,8 @@ wasp db migrate-dev
This command generates the Prisma client based on the `schema.prisma` file.
-Read more about the [Prisma Schema File](./data-model/prisma-file.md) and how Wasp uses it to generate the database schema and Prisma client.
+Read more about the [Prisma Schema File](../data-model/prisma-file.md) and how Wasp uses it to generate the database schema and Prisma client.
That's it!
-You should now be able to run your app with the new Wasp 0.14.0. We recommend reading through the updated [Accessing User Data](./auth/entities/entities.md) section to get a better understanding of the new API.
+You should now be able to run your app with the new Wasp 0.14.0. We recommend reading through the updated [Accessing User Data](../auth/entities/entities.md) section to get a better understanding of the new API.
diff --git a/web/docs/migration-guides/migrate-from-0-14-to-0-15.md b/web/docs/migration-guides/migrate-from-0-14-to-0-15.md
new file mode 100644
index 000000000..f618396df
--- /dev/null
+++ b/web/docs/migration-guides/migrate-from-0-14-to-0-15.md
@@ -0,0 +1,308 @@
+---
+title: Migration from 0.14.X to 0.15.X
+---
+
+## What's new in 0.15.0?
+
+Wasp 0.15.0 brings upgrades to some of Wasp's most important dependencies. Let's see what's new.
+
+### Prisma 5
+
+Wasp is now using the latest Prisma 5, which brings a lot of performance improvements and new features.
+
+From the Prisma docs:
+
+> Prisma ORM 5.0.0 introduces a number of changes, including the usage of our new JSON Protocol, which make Prisma Client faster by default.
+
+This means that your Wasp app will be faster and more reliable with the new Prisma 5 version.
+
+### React Router 6
+
+Wasp also upgraded its React Router version from `5.3.4` to `6.26.2`. This means that we are now using the latest React Router version, which brings us up to speed and opens up new possibilities for Wasp e.g. potentially using loaders and actions in the future.
+
+There are some breaking changes in React Router 6, so you will need to update your app to use the new hooks and components.
+
+## How to migrate?
+
+To migrate your Wasp app from 0.14.X to 0.15.X, follow these steps:
+
+### 1. Bump the Wasp version
+
+Update the version field in your Wasp file to `^0.15.0`:
+
+```wasp title="main.wasp"
+app MyApp {
+ wasp: {
+ // highlight-next-line
+ version: "^0.15.0"
+ },
+}
+```
+
+### 2. Update the `package.json` file
+
+1. Update the `prisma` version in your `package.json` file to `5.19.1`:
+
+ ```json title="package.json"
+ {
+ "dependencies": {
+ // highlight-next-line
+ "prisma": "5.19.1"
+ }
+ }
+ ```
+
+1. If you have `@types/react-router-dom` in your `package.json`, you can remove it as it is no longer needed.
+
+### 3. Use the latest React Router APIs
+
+Update the usage of the old React Router 5 APIs to the new React Router 6 APIs:
+
+1. If you used the `useHistory()` hook, you should now use the `useNavigate()` hook.
+
+
+
+
+ ```tsx title="src/SomePage.tsx"
+ import { useHistory } from 'react-router-dom'
+
+ export function SomePage() {
+ const history = useHistory()
+ const handleClick = () => {
+ // highlight-next-line
+ history.push('/new-route')
+ }
+ return
+ }
+ ```
+
+
+
+
+ ```tsx title="src/SomePage.tsx"
+ import { useNavigate } from 'react-router-dom'
+
+ export function SomePage() {
+ const navigate = useNavigate()
+ const handleClick = () => {
+ // highlight-next-line
+ navigate('/new-route')
+ }
+ return
+ }
+ ```
+
+
+
+
+ Check the [React Router 6 docs](https://reactrouter.com/en/main/hooks/use-navigate#optionsreplace) for more information on the `useNavigate()` hook.
+
+1. If you used the `` component, you should now use the `` component.
+
+ The default behaviour changed from `replace` to `push` in v6, so if you want to keep the old behaviour, you should add the `replace` prop.
+
+
+
+
+ ```tsx title="src/SomePage.tsx"
+ import { Redirect } from 'react-router-dom'
+
+ export function SomePage() {
+ return (
+ // highlight-next-line
+
+ )
+ }
+ ```
+
+
+
+
+ ```tsx title="src/SomePage.tsx"
+ import { Navigate } from 'react-router-dom'
+
+ export function SomePage() {
+ return (
+ // highlight-next-line
+
+ )
+ }
+ ```
+
+
+
+
+ Check the [React Router 6 docs](https://reactrouter.com/en/main/components/navigate) for more information on the `` component.
+
+1. If you accessed the route params using `props.match.params`, you should now use the `useParams()` hook.
+
+
+
+
+ ```tsx title="src/SomePage.tsx"
+ import { RouteComponentProps } from 'react-router-dom'
+
+ export function SomePage(props: RouteComponentProps) {
+ // highlight-next-line
+ const { id } = props.match.params
+ return (
+