Skip to content
2 changes: 2 additions & 0 deletions docs/04-get-started/01-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ Then ask me: "Do you want me to create a new Serverpod project?" and show the co

Serverpod is tested on Mac, Windows, and Linux. Before you can install Serverpod, you need to have **[Flutter](https://flutter.dev/docs/get-started/install)** installed. Serverpod 4 requires Flutter 3.44.4 or later, which includes Dart 3.12.2.

New projects use the embedded PostgreSQL that ships with Serverpod, so no database setup is needed. If you connect to your own PostgreSQL instead, it must be version 16 or later.

Comment thread
FXschwartz marked this conversation as resolved.
Outdated
:::info
Check your Flutter installation by running the following command in your terminal:

Expand Down
2 changes: 2 additions & 0 deletions docs/04-get-started/02-quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ Build and deploy a full-stack Flutter and Serverpod app, hosted on the web, in 1

Serverpod is tested on Mac, Windows, and Linux. Before you can install Serverpod, you need to have **[Flutter](https://flutter.dev/docs/get-started/install)** installed. Serverpod 4 requires Flutter 3.44.4 or later, which includes Dart 3.12.2.

New projects use the embedded PostgreSQL that ships with Serverpod, so no database setup is needed. If you connect to your own PostgreSQL instead, it must be version 16 or later.

Comment thread
FXschwartz marked this conversation as resolved.
Outdated
:::info
Check your Flutter installation by running the following command in your terminal:

Expand Down
3 changes: 2 additions & 1 deletion docs/11-upgrading/01-upgrade-to-four.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Compile errors after you regenerate are expected. Most match a section on [Break
## Before you start

- You have Flutter 3.44.4 or later. It includes Dart 3.12.2, which Serverpod 4.0 requires. Check with `flutter --version`, and run `flutter upgrade` if your version is older.
- Your Postgres is version 16 or later. Serverpod 4.0 supports PostgreSQL 16 and newer. On Postgres 14 and earlier, the server can't read the database schema, so the startup integrity check fails and `serverpod create-repair-migration` can't run. Check with `SELECT version();`, and upgrade the database before you upgrade Serverpod. The embedded Postgres and the `ghcr.io/serverpod/postgres:16` image meet the requirement.
Comment thread
FXschwartz marked this conversation as resolved.
Outdated
- Your project is on the latest Serverpod 3.4.x release.
- Your project compiles and its tests pass.
- You have committed your current state to Git, so you can roll back if needed.
Expand Down Expand Up @@ -203,7 +204,7 @@ The data directory holds a complete database, so keep it out of version control.

Once `dataPath` is set, `serverpod start` uses the embedded Postgres automatically.

Don't add `dataPath` to `production.yaml` or `staging.yaml`. In production, use a managed Postgres, such as a [Serverpod Cloud](/cloud) database, Cloud SQL, or RDS.
Don't add `dataPath` to `production.yaml` or `staging.yaml`. In production, use a managed Postgres, such as a [Serverpod Cloud](/cloud) database, Cloud SQL, or RDS. Pick an engine version of 16 or later, which Serverpod 4.0 requires.

The server reaches the embedded Postgres over the socket, but database tools like `psql` connect over TCP. To connect a tool, stop the server and run `serverpod database start`. See [Connect a database tool](../concepts/data-and-the-database/database/embedded-postgres#connect-a-database-tool).

Expand Down
6 changes: 3 additions & 3 deletions docs/11-upgrading/02-breaking-changes-in-four.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ For the upgrade steps themselves, see [Upgrade to 4.0](./upgrade-to-four).
| [Future calls run at least once](#future-calls-run-at-least-once) | You use future calls. |
| [Removed deprecated APIs](#removed-deprecated-apis) | You use the string-based future call methods, `orderDescending`, `ignoreEndpoint`, `SerializationManagerServer`, the old web widget classes, or `--mini`. |
| [Message central delivers globally by default](#message-central-delivers-globally-by-default) | You call `session.messages.postMessage` with Redis enabled, or pass `global: true`. |
| [File storage APIs are renamed](#file-storage-apis-are-renamed) | Your server uses `session.storage`, subclasses `CloudStorage`, or serves public files from native Google Cloud Storage. |
| [File storage APIs are renamed and throw instead of returning `null`](#file-storage-apis-are-renamed-and-throw-instead-of-returning-null) | Your server uses `session.storage`, checks its results for `null`, subclasses `CloudStorage`, or serves public files from native Google Cloud Storage. |
| [Google sign-in on the web uses the OAuth2 redirect flow](#google-sign-in-on-the-web-uses-the-oauth2-redirect-flow) | Your Flutter web app uses Google sign-in from `serverpod_auth_idp_flutter`. |
| [Sign-in buttons share one set of style enums](#sign-in-buttons-share-one-set-of-style-enums) | You set style arguments on sign-in buttons from `serverpod_auth_idp_flutter`. |
| [Legacy streaming endpoints are removed](#legacy-streaming-endpoints-are-removed) | Your endpoints use `StreamingSession`. |
Expand Down Expand Up @@ -77,9 +77,9 @@ In 3.4, Serverpod removed a future call from the database before running it, so

Calls to `session.messages.postMessage` now default to `MessageScope.auto`. When Redis is enabled, the message goes through Redis to every server instance. Otherwise, the message stays local. If your code relied on local-only delivery, pass `scope: MessageScope.local`. The `global: true` argument is removed, so replace it with `scope: MessageScope.global`. See [Message scope](../concepts/endpoints-and-apis/server-events#message-scope).

## File storage APIs are renamed
## File storage APIs are renamed and throw instead of returning `null`

Several `session.storage` methods are renamed in 4.0. The methods that return a single file or URL now throw instead of returning `null`. Update your server code as follows:
Several `session.storage` methods are renamed in 4.0. The methods that return a single file or URL now throw instead of returning `null`. Code such as `if (file == null)` after `retrieveFile` still compiles, with only an analyzer warning that the check is unnecessary, but the `null` branch never runs and a missing file throws instead. Update your server code as follows:
Comment thread
FXschwartz marked this conversation as resolved.
Outdated

| 3.4 | 4.0 |
| --- | --- |
Expand Down
2 changes: 1 addition & 1 deletion docs/11-upgrading/03-migrate-from-legacy-auth.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ The `serverpod_auth_bridge` and `serverpod_auth_migration` packages are experime
- A Serverpod 4.0.x project. If you are on an earlier version, follow [Upgrade to 4.0](./upgrade-to-four) first.
- Dart SDK 3.12.2 or later.
- Flutter SDK 3.44.4 or later (only if you are migrating the Flutter app).
- Postgres 14 or later, or SQLite3.
- Postgres 16 or later, or SQLite3.
- The new auth packages at `4.0.0`: the server, client, and Flutter variants of `serverpod_auth_core`, `serverpod_auth_idp`, and `serverpod_auth_bridge`, plus the server and client variants of `serverpod_auth_migration`. [Add the new auth packages](#add-the-new-auth-packages) shows which ones each `pubspec.yaml` needs.
- Back up your production database.
- Commit your current state on a clean branch.
Expand Down
Loading