-
Notifications
You must be signed in to change notification settings - Fork 988
docs(site): add changelog entry 2026-08-07 #8136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,167 @@ | ||
| --- | ||
| title: "Deploy a template to Prisma Compute in one click and install Prisma 8 as a single package" | ||
| date: "2026-08-07" | ||
| version: "2026-08-07" | ||
| slug: "2026-08-07" | ||
| headline: "Deploy a template to Prisma Compute in one click and install Prisma 8 as a single package" | ||
| tags: | ||
| - "Prisma" | ||
| - "Prisma Compute" | ||
| - "Prisma Postgres" | ||
| - "Prisma 8" | ||
| - "Prisma ORM" | ||
| canonical: "/changelog#log2026-08-07" | ||
| metaDescription: "Prisma Compute adds one-click template deployment and a Deploy Button for any public repository, Prisma 8 ships its first release candidate installable as a single package, and the Management API adds workspace service token management." | ||
| share: | ||
| active: true | ||
| content: "Look at this page: " | ||
| --- | ||
| You can now deploy a production-ready template to Prisma Compute in one click, from any workspace. A new Deploy Button gives any public GitHub repository the same one-click setup from its README. | ||
|
|
||
| Prisma 8 (Early Access, previously announced as Prisma Next) has its first release candidate: releases are now versioned `8.0.0-rc.N`, and an application installs one package, such as `@prisma/orm-postgres`, instead of a dozen. | ||
|
|
||
| The Management API now creates and revokes workspace service tokens, previously a Console-only workflow, and reports a workspace's subscription plan. | ||
|
|
||
| Prisma Migrate now refuses a shadow database URL that points at the main database, closing a data-loss path. Prisma Studio's local server no longer accepts requests from other network clients or websites. | ||
|
|
||
| ## Highlights | ||
|
|
||
| ### New · Deploy a template to Prisma Compute in one click | ||
|
|
||
| You can now deploy a production-ready starter app to Prisma Compute (Public Beta) in one click. Pick Hono API, Next.js, or TanStack Start from the template catalog, and Prisma creates the GitHub repository, provisions a Prisma Postgres database, and starts the first deployment. Template deployment was previously limited to selected workspaces; every signed-in workspace member can now use it. | ||
|
|
||
|  | ||
|
|
||
| Browse the [template catalog](https://console.prisma.io/templates) to start. | ||
|
|
||
| ### New · Give your repository a Prisma Compute Deploy Button | ||
|
|
||
| You can now add a Deploy Button to any public GitHub repository. A visitor who clicks it gets a copy of the repository in their own GitHub account, a Prisma project with a Prisma Postgres database, and a first deployment, all from one link. | ||
|
|
||
| The link carries environment variable names only. Values are typed into the Prisma Console form and never appear in a URL. | ||
|
|
||
| ```text | ||
| https://console.prisma.io/new/clone | ||
| ?repository-url=https://github.com/<owner>/<repo> | ||
| &env=DATABASE_URL,WEBHOOK_SECRET | ||
| ``` | ||
|
|
||
| ### New · Install Prisma 8 as a single package | ||
|
|
||
| The first Prisma 8 release candidate is out, and an application now installs one Prisma package. Until now an app that talks to PostgreSQL installed a dozen `@prisma-next/*` packages; everything now arrives as dependencies of one database package under the `@prisma` scope. | ||
|
|
||
| ```jsonc | ||
| // package.json: the only Prisma dependency your app needs | ||
| { | ||
| "dependencies": { | ||
| "@prisma/orm-postgres": "8.0.0-rc.1" | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| Releases are now versioned `8.0.0-rc.N`, with no further `0.x` minors. Existing installs are not moved onto the release-candidate line by `npm update`: a `^0.x` range never matches a pre-release, so only a fresh install or an explicit version change lands on it. | ||
|
Comment on lines
+51
to
+62
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
# Find manifests that still use the old package names and the new package.
rg -n -C 3 -g 'package.json' \
'"`@prisma-next/`|"`@prisma/orm-postgres`"' .Repository: prisma/web Length of output: 148 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- changelog context ---'
sed -n '1,90p' apps/site/content/changelog/2026-08-07.mdx
printf '%s\n' '--- tracked references to package names ---'
git grep -n -E '`@prisma-next/`|`@prisma/orm-postgres`' -- ':!*.lock' || true
printf '%s\n' '--- tracked package manifests ---'
git ls-files '*package.json' | head -200Repository: prisma/web Length of output: 35425 🏁 Script executed: #!/bin/bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
import json
import re
old = re.compile(r"^`@prisma-next/`")
new = "`@prisma/orm-postgres`"
manifests = []
for path in Path(".").rglob("package.json"):
try:
data = json.loads(path.read_text())
except Exception:
continue
deps = {}
for section in ("dependencies", "devDependencies", "optionalDependencies", "peerDependencies"):
deps.update(data.get(section, {}))
if any(old.match(name) for name in deps) or new in deps:
manifests.append((str(path), sorted(name for name in deps if old.match(name) or name == new)))
print("repository manifests with old/new Prisma dependency keys:")
for path, names in manifests:
print(f"{path}: {names}")
if not manifests:
print("(none)")
# The relevant npm invariant: update changes versions for existing keys.
existing = {"`@prisma-next/postgres`": "^0.16.0"}
updated = dict(existing)
updated["`@prisma-next/postgres`"] = "0.16.0"
print("unchanged dependency keys after an update:", sorted(updated))
print("new package added by update:", new in updated)
# A caret range beginning below 1.0.0 cannot include an 8.0.0 prerelease.
def caret_zero_upper(version):
major, minor, *_ = map(int, version.split("."))
return (0, minor + 1, 0)
lower = (0, 16, 0)
upper = caret_zero_upper("0.16.0")
candidate = (8, 0, 0)
print("candidate 8.0.0-rc.1 within ^0.16.0:", lower <= candidate < upper)
PYRepository: prisma/web Length of output: 360 Document the package-name migration. Existing installations must remove their 🤖 Prompt for AI Agents |
||
|
|
||
| Shipped in [prisma/prisma#29864](https://github.com/prisma/prisma/pull/29864); versioning policy in [prisma/prisma#29899](https://github.com/prisma/prisma/pull/29899). | ||
|
|
||
| ## Prisma Compute | ||
|
|
||
| Prisma Compute adds template deployment, the Deploy Button, package manager detection from `devEngines`, and a startup warning for apps that cannot receive traffic. | ||
|
|
||
| - **Improved** · Prisma Compute builds now resolve the package manager from the `devEngines.packageManager` field in `package.json`, including semver ranges. Apps that declare pnpm only through `devEngines` no longer fall back to npm and fail on `workspace:` protocols. | ||
| - **Improved** · Prisma Compute now warns at startup when an application binds only to localhost and cannot receive ingress traffic, instead of deploying silently and serving nothing. | ||
|
|
||
| ```json | ||
| { | ||
| "devEngines": { | ||
| "packageManager": { "name": "pnpm", "version": "^11.0.4" } | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| ## Prisma Postgres | ||
|
|
||
| Prisma Postgres places new Object Store buckets closer to their project and labels incremental backups. | ||
|
|
||
| - **Improved** · New Object Store buckets are now provisioned in a region near the project's database region instead of a global location, which removes cross-region latency from bucket metadata requests. Existing buckets are unchanged. | ||
| - **Improved** · Backup lists now distinguish incremental backups from full backups and report backup sizes in the correct unit. | ||
|
|
||
| ## Management API | ||
|
|
||
| The Management API adds workspace service token management and a workspace subscription endpoint. | ||
|
|
||
| - **New** · Workspace service tokens, previously manageable only in the Prisma Console under Workspace Settings, can now be created, listed, and revoked through `/v1/workspaces/{workspaceId}/service-tokens`. The token value is returned exactly once, at creation, and is never stored. | ||
| - **New** · `GET /v1/workspaces/{workspaceId}/subscription` returns the workspace's plan name, whether usage is currently blocked, and the Console upgrade URL, so CLI tools and integrations can point users at the right recovery path. | ||
|
|
||
| ```bash | ||
| # Create a token; the value is returned once, never stored | ||
| curl -X POST https://api.prisma.io/v1/workspaces/$WORKSPACE/service-tokens \ | ||
| -H "Authorization: Bearer $TOKEN" -d '{"name":"ci"}' | ||
|
|
||
| # Revoke it | ||
| curl -X DELETE https://api.prisma.io/v1/workspaces/$WORKSPACE/service-tokens/$TOKEN_ID \ | ||
| -H "Authorization: Bearer $TOKEN" | ||
| ``` | ||
|
Comment on lines
+95
to
+103
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
# Inspect the generated endpoint documentation and locate its source operation.
sed -n '1,180p' \
apps/docs/content/docs/management-api/endpoints/service-tokens/post-workspaces-by-workspace-id-service-tokens.mdx
rg -n -C 5 -F '/v1/workspaces/{workspaceId}/service-tokens' .Repository: prisma/web Length of output: 11618 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- candidate API specification files ---'
fd -HI -t f 'openapi|swagger|management-api|service-token' . | head -200
printf '%s\n' '--- request-body and content-type definitions ---'
rg -n -i -C 4 'service.?tokens|serviceToken|requestBody|application/json|content-type' \
--glob '!apps/docs/content/docs/management-api/endpoints/**' \
--glob '!node_modules/**' \
. | head -300Repository: prisma/web Length of output: 25637 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- OpenAPI fetch and rendering configuration ---'
cat -n apps/docs/scripts/fetch-openapi.ts | sed -n '1,220p'
cat -n apps/docs/src/lib/openapi.ts | sed -n '1,220p'
printf '%s\n' '--- generated Postman operation ---'
rg -n -i -C 12 'service.?tokens|serviceToken|workspaceId' \
apps/docs/public/prisma-management-api.postman_collection.json | head -220
printf '%s\n' '--- all tracked management API assets ---'
git ls-files | rg -i 'management.*api|openapi|service.?token'Repository: prisma/web Length of output: 50367 🏁 Script executed: #!/bin/bash
set -euo pipefail
python3 - <<'PY'
import json
path = "apps/docs/public/prisma-management-api.postman_collection.json"
with open(path, encoding="utf-8") as f:
collection = json.load(f)
def walk(items):
for item in items:
request = item.get("request")
if request:
url = request.get("url", {})
parts = url.get("path", [])
if "service-tokens" in parts:
print(json.dumps({
"name": item.get("name"),
"method": request.get("method"),
"path": parts,
"headers": request.get("header"),
"body": request.get("body"),
}, indent=2))
walk(item.get("item", []))
walk(collection.get("item", []))
PY
printf '%s\n' '--- live OpenAPI operation content types ---'
curl --fail --silent --show-error https://api.prisma.io/v1/doc |
python3 -c '
import json, sys
doc = json.load(sys.stdin)
for path, item in doc.get("paths", {}).items():
if "service-tokens" in path:
print(json.dumps({"path": path, "post": item.get("post"), "delete": item.get("delete")}, indent=2))
'Repository: prisma/web Length of output: 9137 Set the request content type to JSON. The POST operation accepts 🤖 Prompt for AI Agents |
||
|
|
||
| ## Prisma 8 | ||
|
|
||
| Prisma 8 serves a complete error reference from the docs and consolidates its agent skills into one install. | ||
|
|
||
| - **Docs** · Every error Prisma 8 emits carries a `docsUrl` that now resolves: the [error reference](https://www.prisma.io/docs/orm/next/reference/error-reference) renders all 244 error codes, and each link scrolls to its exact code. ([prisma/web#8125](https://github.com/prisma/web/pull/8125)) | ||
| - **Improved** · `prisma-next init` now installs one `prisma-8` agent skill instead of eleven per-workflow skills, and removes the retired skill directories from each agent's install root. ([prisma/prisma#29853](https://github.com/prisma/prisma/pull/29853)) | ||
|
|
||
| ## Breaking changes | ||
|
|
||
| > **Breaking:** Prisma 8 aggregate results now decode through the codec their target declares, so aggregate types change in `8.0.0-rc.1`: `count()` returns a `bigint` (`count === 2` is false when the value is `2n`), `sum` over 64-bit integers reads as an exact decimal string, and `JSON.stringify` throws on a bigint result. To migrate, sweep code for equality, arithmetic, and serialization against aggregate results, then regenerate contracts with `prisma-next contract emit`. ([prisma/prisma#29867](https://github.com/prisma/prisma/pull/29867)) | ||
|
|
||
| > **Breaking:** The Prisma 8 SQL driver interface is now two methods: `query()` streams rows and `execute()` returns statement statistics, with prepared execution expressed by an optional `preparedStatementHandle` on the request. Application code and query results are unaffected. To migrate a custom driver, implement the two-method shape. ([prisma/prisma#29907](https://github.com/prisma/prisma/pull/29907)) | ||
|
|
||
| ## Fixes and improvements | ||
|
|
||
| **Prisma Compute** | ||
|
|
||
| - **Fixed** · Prisma Compute template and repository deployments now show progress immediately: the deploy button disables and reads `Preparing template` while GitHub authorization is prepared, instead of appearing unresponsive for several seconds. | ||
| - **Fixed** · Prisma Compute template deployments that hit an already-used repository name now say so and ask for another name, instead of reporting that the repository changed during the copy. | ||
| - **Fixed** · A race during repository creation no longer strands a freshly created repository and fails the deployment. | ||
|
|
||
| **Prisma Console** | ||
|
|
||
| - **Improved** · The Prisma Console billing page now shows Prisma Postgres operations remaining in the current cycle and when the allowance resets, instead of a calendar countdown. | ||
| - **Improved** · A workspace paused at its operations limit now gets a recovery flow: the plan picker names the minimum plan that unblocks it, confirms operations are restored after the upgrade, and clears the resolved warning banners without a page reload. | ||
| - **Improved** · An `Upgrade plan` action is now available from the account menu on every Prisma Console page. | ||
| - **Improved** · Prisma Console signup keeps an entered email and password when moving between login and signup, and accepts 15-character browser-generated passwords. | ||
| - **Fixed** · A billing upgrade link opened while signed out now returns to the requested upgrade dialog after password, GitHub, or Google sign-in. | ||
| - **Fixed** · Workspaces suspended over unpaid invoices on a canceled subscription now unsuspend automatically once the invoices are paid. | ||
|
|
||
| **Prisma Postgres** | ||
|
|
||
| - **Improved** · Spend limits are now enforced for workspaces billed through the Vercel Marketplace: threshold emails and usage holds work the same as for directly billed workspaces. | ||
| - **Fixed** · Object Store bucket creation no longer fails for projects whose display names exceed 50 characters. | ||
|
|
||
| **Prisma MCP server** | ||
|
|
||
| - **Fixed** · Connecting the Prisma MCP server from the Claude apps no longer fails with "Couldn't register with Prisma's sign-in service": client registration now accepts the `client_secret_post` authentication method. | ||
|
|
||
| **Prisma ORM** | ||
|
|
||
| - **Fixed** · Prisma Migrate now refuses a shadow database URL that denotes the main database, with the new error code `P3025`, before touching any database. Previously `prisma migrate diff --from-migrations` with such a configuration could drop the real schema and report success. ([prisma/prisma-engines#5851](https://github.com/prisma/prisma-engines/pull/5851)) | ||
|
|
||
| **Prisma Studio** | ||
|
|
||
| - **Fixed** · Prisma Studio's local server now listens only on `127.0.0.1` and rejects browser requests from origins other than the active Studio URL. Previously a reachable network client, or a malicious website visited while Prisma Studio was open, could query the connected database. ([prisma/prisma#29890](https://github.com/prisma/prisma/pull/29890)) | ||
|
|
||
| **Prisma 8** | ||
|
|
||
| - **Fixed** · Nested `some`/`every`/`none` predicates over self-referential relations now keep a distinct SQL scope at every level, so an inner filter no longer shadows the parent it correlates against. ([prisma/prisma#29900](https://github.com/prisma/prisma/pull/29900)) | ||
| - **Fixed** · `count()`, `sum()`, `avg()`, `min()`, and `max()` on a many-to-many include now traverse the junction table and return correct results for filtered relations. ([prisma/prisma#29888](https://github.com/prisma/prisma/pull/29888)) | ||
| - **Fixed** · Repeated upserts keyed on a `Bytes` column no longer fail with `ORM.MUTATION_ROW_MISSING`. ([prisma/prisma#29910](https://github.com/prisma/prisma/pull/29910)) | ||
| - **Fixed** · MongoDB `create()`, `update()`, `delete()`, and `upsert()` results now decode through codecs, so a created row's `_id` matches the value read back later. ([prisma/prisma#29879](https://github.com/prisma/prisma/pull/29879)) | ||
| - **Fixed** · Schemas that `@map` a column, table, or model to a name that is not a bare identifier now emit valid `contract.d.ts` with quoted keys. ([prisma/prisma#29889](https://github.com/prisma/prisma/pull/29889)) | ||
| - **Fixed** · Driver-level reads issued while a connection holds an open transaction no longer commit the caller's transaction on the PostgreSQL direct driver. ([prisma/prisma#29920](https://github.com/prisma/prisma/pull/29920)) | ||
|
|
||
| ## Guides and articles | ||
|
|
||
| - [Deploy with Alchemy](https://www.prisma.io/docs/compute/alchemy): an end-to-end infrastructure-as-code guide covering Prisma Postgres provisioning and Prisma Compute deployment, including authentication, custom domains, CI workflows, migrations, and cleanup. | ||
|
|
||
| --- | ||
|
|
||
| *Need help applying these changes in production? [Prisma Enterprise Support](https://prisma.io/enterprise) can help with schema design, performance, security, and compliance.* | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: prisma/web
Length of output: 1572
🏁 Script executed:
Repository: prisma/web
Length of output: 196
🌐 Web query:
Prisma Deploy Button console.prisma.io/new/clone repository-url env💡 Result:
There is no official "Prisma Deploy Button" console.prisma.io/new/clone URL structure [1][2][3][4]. The URL structure you mentioned—specifically console.prisma.io/new/clone with repository-url and env parameters—is characteristic of the Vercel Deploy Button, which uses exactly those query parameters (repository-url and env) to pre-configure project deployments [5][6][7]. Prisma documentation indicates that Prisma Compute and other managed services are primarily managed through the Prisma Console web interface or the
@prisma/clicommand-line tool [1][2][4]. Users deploy applications and manage configurations (including environment variables) via the CLI or the Console dashboard rather than a "Deploy Button" URL [2][8][3][9]. If you are trying to deploy a project that uses Prisma, you should: 1. Use the standard deployment platform workflows (such as Vercel's Deploy Button) to handle the application's hosting and git cloning [5][6][7]. 2. Use the Prisma Console to provision and manage your Prisma Postgres databases or Prisma Compute resources [4][10][11]. 3. Configure your environment variables (like DATABASE_URL) within your hosting provider's dashboard or via the Prisma CLI as instructed in the official Prisma guides [8][9][10][12].Citations:
Remove or replace the unsupported Deploy Button URL.
console.prisma.io/new/clonewithrepository-urlandenvmatches Vercel’s Deploy Button contract, not a documented Prisma endpoint.🤖 Prompt for AI Agents