Non-breaking Changes
- The Dockerfile has been updated to build the server files during the Docker build stage instead of during server startup. This will reduce the memory footprint required for running apps.
Bug fixes
- Fixed a file lock error that kills CLI when changing entities with
wasp start
running on newer Macs.
Support for defining the web app's root component
You can now define a root component for your client app. This is useful if you want to wrap your app in a provider or have a common layout. You can define it in app.client.rootComponent
in your .wasp
file.
wasp deploy
CLI command added
We have made it much easier to deploy your Wasp apps via a new CLI command, wasp deploy
. 🚀 This release adds support for Fly.io, but we hope to add more hosting providers soon!
Importable Wasp Entity types (on frontend and backend)
You can now import and use the types of Wasp entities anywhere in your code.
Let's assume your Wasp file contains the following entity:
entity Task {=psl
id Int @id @default(autoincrement())
description String
isDone Boolean @default(false)
user User @relation(fields: [userId], references: [id])
userId Int
psl=}
Here's how you can access and use its type in a backend file:
import { Task } from '@wasp/entities/Task'
const getTasks = (args, context) => {
const tasks: Task[] = // ...
// ...
}
And here's how you can to the same in a frontend file:
// ...
import { useQuery } from '@wasp/queries'
import getTasks from '@wasp/queries/getTasks.js'
import { Task } from '@wasp/entities'
type TaskPayload = Pick<Task, "id">
const Todo = (props: any) => {
// The variable 'task' will now have the type Task.
const { data: task } = useQuery<TaskPayload, Task>(getTask, { id: taskId })
// ...
}
Automatically generated types for Queries and Actions
Wasp now automatically generates appropriate types for the operations specified
in your .wasp
file. This reduces duplication and eliminates possible errors
(i.e., no way to specify incorrect entities). Assuming your .wasp
file looks
like this:
query getTasks {
fn: import { getTasks } from "@server/queries.js",
entities: [Task]
}
You'll get the following feature:
import { Task } from '@wasp/entities'
import { GetTasks} from '@wasp/queries/types'
type Payload = Pick<Task, 'isDone'>;
// Use the type parameters to specify the Query's argument and return types.
const getTasks: GetTasks<Payload, Task[]> = (args, context) => {
// Thanks to the definition in your `.wasp` file, the compiler knows the type
// of `context` (and that it contains the `Task` entity).
//
// Thanks to the first type argument in `GetTasks`, the compiler knows `args`
// is of type `Payload`.
//
// Thanks to the second type argument in `GetTasks`, the compiler knows the
// function must return a value of type `Task[]`.
}
Uninstall command
If you want to uninstall Wasp from your system, you can now do so with:
wasp uninstall
It will remove all of the Wasp binaries and data from your system.