Update to Neon
Snapshot Oct 4, 2026 · 18:02 UTC · version 2.1.0
Package or technical metadata updated
Package contents changed in 34 files: .app.json, .codex-plugin/plugin.json, LICENSE, …. Open the file diff to inspect the edits.
Observed in package metadata. These changes alone do not establish a new customer-facing feature.
Package file
{"sha256":"7f6c3217c0c1795ec3aa09993b8227c989e2aa116352b60c0e305ad0558657dc","size":104}
Not present
Package file
{"sha256":"107930b82cec1cf0418b9b9c54b2b85739f17e95671e088c419872387227c48a","size":1153}
Not present
Package file
Not present
{"sha256":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","size":11358}
Package file
Not present
{"sha256":"6ea32cfd68df51adbf06156bc7282cf6c5eece06b684b163ea612fcec8521d2a","size":427}
Compare saved observations
Download comparison JSONChanged files
LICENSE →
assets/neon-logomark-dark.svg →
assets/neon-logomark-light.svg →
mcp.json →
skills/neon-ai-gateway/SKILL.md →
skills/neon-auth/references/managed-auth.md →
skills/neon-auth/references/self-managed.md →
skills/neon-functions/SKILL.md →
skills/neon-functions/references/ai-sdk.md →
skills/neon-functions/references/function-triggers.md →
skills/neon-functions/references/mastra-studio.md →
skills/neon-functions/references/mcp.md →
skills/neon-functions/references/native-binaries.md →
skills/neon-functions/references/production-hardening.md →
skills/neon-functions/references/sse.md →
skills/neon-object-storage/SKILL.md →
skills/neon-postgres-branches/SKILL.md →
skills/neon-postgres-egress-optimizer/SKILL.md →
skills/neon-postgres/SKILL.md →
skills/neon-postgres/references/full-text-search.md →
skills/neon-postgres/references/hybrid-search.md →
skills/neon-postgres/references/lakebase-search-drizzle.md →
skills/neon-postgres/references/vector-search.md →
skills/neon/references/auth.md →
skills/neon/references/claimable-neon.md →
skills/neon/references/function-triggers.md →
skills/neon/references/logs-loki.md →
skills/neon-auth/references/self-managed.md
--- before +++ after @@ -0,0 +1,25 @@ +# Self-managed Better Auth + +Use this page only after `SKILL.md` routed here: a required feature is outside Managed Auth, and the installed Better Auth version documents that flow. If that check fails, keep the current identity. + +## Keep existing Better Auth + +If the app already runs Better Auth, keep that server, its clients, users, and sessions. It works with Lakebase Postgres, Functions, Object Storage, and the AI Gateway. Do not migrate it to Managed Auth unless the user asks. + +## New self-managed server + +Host it on the existing app (Vercel route handlers, or similar) when that host already serves `/api/auth`. Use a Neon Function when the auth server should sit next to Postgres, or when the Function itself must be an OAuth authorization server (MCP). Function hosting follows the `neon-functions` skill (region, claim, `neon.ts`, `neon deploy --env <file>`). + +Keep Lakebase Postgres as the auth database. Use `better-auth` and `better-auth/client`. Fetch upstream docs for the **installed** version: + +- https://better-auth.com/docs/installation +- https://better-auth.com/docs/concepts/client +- https://better-auth.com/docs/concepts/plugins + +Do not pass `plugins` into `@neondatabase/auth`. Replacing only the client package while Managed Auth is still the backend does not add plugins. + +MCP OAuth (Cursor, Claude, and similar clients self-authorizing) is `neon-functions` [references/mcp.md](https://neon.com/docs/ai/skills/neon-functions/references/mcp.md). That can sit beside existing Clerk or Managed login. Do not migrate the whole app's identity unless that was the request. + +Function JWT verification, CORS, and direct browser calls: `neon-functions` and https://neon.com/docs/compute/functions/authentication.md. + +There is no documented universal import from Managed `neon_auth` into a self-managed Better Auth schema. Inventory users, credentials, sessions, memberships, and application foreign keys before changing existing state. Agree a cutover plan with the owner. Do not promise drop-in session continuity.
Full technical diff · 44 changed fields
removed /files/.app.json
{
"sha256": "7f6c3217c0c1795ec3aa09993b8227c989e2aa116352b60c0e305ad0558657dc",
"size": 104
}Field is absent
removed /files/.codex-plugin~1plugin.json
{
"sha256": "107930b82cec1cf0418b9b9c54b2b85739f17e95671e088c419872387227c48a",
"size": 1153
}Field is absent
added /files/LICENSE
Field was absent
{
"sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
"size": 11358
}added /files/assets~1neon-logomark-dark.svg
Field was absent
{
"sha256": "6ea32cfd68df51adbf06156bc7282cf6c5eece06b684b163ea612fcec8521d2a",
"size": 427
}added /files/assets~1neon-logomark-light.svg
Field was absent
{
"sha256": "8154bfde92038629bc1c35e9888a5aafafbf4dc6ebaa55eb328075a9ebbe4e27",
"size": 427
}added /files/mcp.json
Field was absent
{
"sha256": "496c89ba28e7628b2f7c477c4ed7a890504f7d5772ab22ce8426f369129b43a4",
"size": 192
}added /files/plugin.json
Field was absent
{
"sha256": "3dc352f4107acf80b61e07955619c8937d3677ba8d1089b9763d518f93f901d6",
"size": 2175
}changed /files/skills~1neon-ai-gateway~1SKILL.md/sha256
"5f7b7d3f9490fda3d3e78ade52f8df053a0f0ce9fad38d6f17d47c5d92ba4ce4"
"eab0545d5ee7626847ce5b5cdd5f4f03afad0ca5859ffd281389721b06c2bce0"
changed /files/skills~1neon-ai-gateway~1SKILL.md/size
20612
20643
added /files/skills~1neon-auth~1SKILL.md
Field was absent
{
"sha256": "5f91f328235382f3e9afef449729e304a531848a90c02b40c4fd1192709e0319",
"size": 12404
}added /files/skills~1neon-auth~1references~1managed-auth.md
Field was absent
{
"sha256": "382c00feeb2f3cc12dbe9b881a43339eef25741d4bc4b70d43c63d2311587dd9",
"size": 9309
}added /files/skills~1neon-auth~1references~1self-managed.md
Field was absent
{
"sha256": "2c53afcd667a9d3e9df9d7bf3eef2aec94ae4a0ec01c7f65852a965267bc127a",
"size": 2033
}changed /files/skills~1neon-functions~1SKILL.md/sha256
"92b3a6a025885d45b7976e9d4338ea98712e091afac5309aa59ba9c9771706fa"
"ef17cab6c81fba6e5545037205889dcb1b2dcd9748d5fbbf50465ee0a8a88d8d"
changed /files/skills~1neon-functions~1SKILL.md/size
39778
49106
changed /files/skills~1neon-functions~1references~1ai-sdk.md/sha256
"11f963c0dac8ef0aaa6cd49a3e9dbf7b1dc85dba3dba76bd964d5e42de002c7d"
"3bca13c980a6634ce3dd53533145c9b93f5b3f87f777b62b66ed5f582dce3370"
changed /files/skills~1neon-functions~1references~1ai-sdk.md/size
6772
6744
added /files/skills~1neon-functions~1references~1function-triggers.md
Field was absent
{
"sha256": "a54ed9599ebdcd340141f6a6f3b9770ef1d8406a936515c929444fc6a9c695eb",
"size": 10837
}changed /files/skills~1neon-functions~1references~1mastra-studio.md/sha256
"58b7b6067e2dd7c991b3b640fe69a47b6078069f0d1fb97b213ae2a9389bc02a"
"01b7d421a36e64a704854b9fafe99ddc3d262d6d1da4af6eb44b12968064a0b0"
changed /files/skills~1neon-functions~1references~1mastra-studio.md/size
6365
6347
changed /files/skills~1neon-functions~1references~1mcp.md/sha256
"22ce58566b5479801621a61d65467b28bf566837611095c2b7f4f579bd553010"
"45c7a48c22b4cdb2deaecae40a17cd9d55755c36ae288d2ddad0dfcf111f03e9"
changed /files/skills~1neon-functions~1references~1mcp.md/size
9138
9123
added /files/skills~1neon-functions~1references~1native-binaries.md
Field was absent
{
"sha256": "04d39d8dc2e822e6e2189752ae01fdff5d85f175059b6209df1c77e105941ae0",
"size": 9385
}added /files/skills~1neon-functions~1references~1production-hardening.md
Field was absent
{
"sha256": "1b3f0eb3e13aae1d1bdea3e32b476b6e1135276da6b8b51d4db30df0326b71c8",
"size": 15301
}changed /files/skills~1neon-functions~1references~1sse.md/sha256
"3b6fd889d08642ee2dc40788c7e56945b3ed0ab3e912626bd8d89c3e57b4b3c7"
"a032699cfa2e361f8f7a9dc6e0b5e66e284f39fa0de455d5506b3e3686fa0b56"
changed /files/skills~1neon-functions~1references~1sse.md/size
8211
8310
changed /files/skills~1neon-object-storage~1SKILL.md/sha256
"1d3d9f662b6caafb640d45583a1505ec7433ed4ba6ba5c61e1765aa7c16c03a9"
"fce96952845dfcf4b0c560fcf1ff0d2c0867931fd34ddb3acf0ec24fd118fd11"
changed /files/skills~1neon-object-storage~1SKILL.md/size
14116
14253
added /files/skills~1neon-postgres-branches~1SKILL.md
Field was absent
{
"sha256": "9f47d5a49553a465837c1e8b2d90a90aac72a5313a996c081027290f259a8d71",
"size": 13663
}added /files/skills~1neon-postgres-egress-optimizer~1SKILL.md
Field was absent
{
"sha256": "d7536270b6dd59a66fa5daf1578cc55a5b761d7163f6f6b1596662481b8d5d9b",
"size": 10227
}changed /files/skills~1neon-postgres~1SKILL.md/sha256
"eb8081a09e25ff2062e8f8de7cba00c38123aeb259771605c988ca0245389886"
"83d3c75651bd81f06e5e8c47ffc306936cc4d2a1ac84d288e8f6a15fcfb724b4"
changed /files/skills~1neon-postgres~1SKILL.md/size
9176
16595
added /files/skills~1neon-postgres~1references~1full-text-search.md
Field was absent
{
"sha256": "025d4380ccfe8e2c745687d82ed6182d501d5678a3941112f37f58bac38e7db4",
"size": 3901
}added /files/skills~1neon-postgres~1references~1hybrid-search.md
Field was absent
{
"sha256": "80b9b1a9974c41eea80bfa4159c5be2b89ca0caaf96b06356ce60d49b2443f90",
"size": 4451
}added /files/skills~1neon-postgres~1references~1lakebase-search-drizzle.md
Field was absent
{
"sha256": "9d5193830642719ecd325dd60f2ffc7c1104055e9c7c4f4828963299adb234b7",
"size": 6716
}added /files/skills~1neon-postgres~1references~1vector-search.md
Field was absent
{
"sha256": "4d7c14f1940033e2c379be62f00ef5ba5e17878a44bc11957a5176f91c2aa0ac",
"size": 6244
}changed /files/skills~1neon~1SKILL.md/sha256
"9540789af742962ecab2626a73434b8f906f99cec02f2e152791535ee89705f1"
"1071b8789dea0cb41c795059e728821756181ce55ae34f3f904120bfbfa8ff22"
changed /files/skills~1neon~1SKILL.md/size
31147
32812
added /files/skills~1neon~1references~1auth.md
Field was absent
{
"sha256": "c2c609f25d6936c8df52989889ffff738f55b5100259e9193173ed07891f49f0",
"size": 730
}changed /files/skills~1neon~1references~1claimable-neon.md/sha256
"5d220f032995a44dbd618b807a0c6a6814d1e69ea32014285c62ddd23cfaeefd"
"1f510be025b1841231b8ee40f69f8b38a348336b258be43b943cc94f2d88bcf8"
changed /files/skills~1neon~1references~1claimable-neon.md/size
7788
8163
added /files/skills~1neon~1references~1function-triggers.md
Field was absent
{
"sha256": "a72aadc3e63464db7f618abb6daa7f119eb76cf213f27a88c84f7aa92b4dd254",
"size": 3249
}added /files/skills~1neon~1references~1logs-loki.md
Field was absent
{
"sha256": "fb338ad4d75e3d6c594945bd24d64a4134860fc2f554cd3273c27dd79769c889",
"size": 4044
}added /files/skills~1neon~1references~1parse-env.md
Field was absent
{
"sha256": "f43eb0d40570b06437ea3a93662ab528bad4d5c44c9c28c45f993aaa269e10bd",
"size": 1406
}added /files/skills~1neon~1references~1sdk.md
Field was absent
{
"sha256": "b9376b5bb1658d9d926a560a7be632a0aaa4fd12e60f38c3ba5050bd35989da0",
"size": 806
}Full snapshot data
{
"files": {
"LICENSE": {
"sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
"size": 11358
},
"assets/neon-logomark-dark.svg": {
"sha256": "6ea32cfd68df51adbf06156bc7282cf6c5eece06b684b163ea612fcec8521d2a",
"size": 427
},
"assets/neon-logomark-light.svg": {
"sha256": "8154bfde92038629bc1c35e9888a5aafafbf4dc6ebaa55eb328075a9ebbe4e27",
"size": 427
},
"mcp.json": {
"sha256": "496c89ba28e7628b2f7c477c4ed7a890504f7d5772ab22ce8426f369129b43a4",
"size": 192
},
"plugin.json": {
"sha256": "3dc352f4107acf80b61e07955619c8937d3677ba8d1089b9763d518f93f901d6",
"size": 2175
},
"skills/neon-ai-gateway/SKILL.md": {
"sha256": "eab0545d5ee7626847ce5b5cdd5f4f03afad0ca5859ffd281389721b06c2bce0",
"size": 20643
},
"skills/neon-auth/SKILL.md": {
"sha256": "5f91f328235382f3e9afef449729e304a531848a90c02b40c4fd1192709e0319",
"size": 12404
},
"skills/neon-auth/references/managed-auth.md": {
"sha256": "382c00feeb2f3cc12dbe9b881a43339eef25741d4bc4b70d43c63d2311587dd9",
"size": 9309
},
"skills/neon-auth/references/self-managed.md": {
"sha256": "2c53afcd667a9d3e9df9d7bf3eef2aec94ae4a0ec01c7f65852a965267bc127a",
"size": 2033
},
"skills/neon-functions/SKILL.md": {
"sha256": "ef17cab6c81fba6e5545037205889dcb1b2dcd9748d5fbbf50465ee0a8a88d8d",
"size": 49106
},
"skills/neon-functions/references/ai-sdk.md": {
"sha256": "3bca13c980a6634ce3dd53533145c9b93f5b3f87f777b62b66ed5f582dce3370",
"size": 6744
},
"skills/neon-functions/references/function-triggers.md": {
"sha256": "a54ed9599ebdcd340141f6a6f3b9770ef1d8406a936515c929444fc6a9c695eb",
"size": 10837
},
"skills/neon-functions/references/mastra-studio.md": {
"sha256": "01b7d421a36e64a704854b9fafe99ddc3d262d6d1da4af6eb44b12968064a0b0",
"size": 6347
},
"skills/neon-functions/references/mcp.md": {
"sha256": "45c7a48c22b4cdb2deaecae40a17cd9d55755c36ae288d2ddad0dfcf111f03e9",
"size": 9123
},
"skills/neon-functions/references/native-binaries.md": {
"sha256": "04d39d8dc2e822e6e2189752ae01fdff5d85f175059b6209df1c77e105941ae0",
"size": 9385
},
"skills/neon-functions/references/production-hardening.md": {
"sha256": "1b3f0eb3e13aae1d1bdea3e32b476b6e1135276da6b8b51d4db30df0326b71c8",
"size": 15301
},
"skills/neon-functions/references/sentry.md": {
"sha256": "be93790a9b62e0a78a575cebbc094ee7d93af57dbb1cdd88fe011595407b9e58",
"size": 15424
},
"skills/neon-functions/references/sse.md": {
"sha256": "a032699cfa2e361f8f7a9dc6e0b5e66e284f39fa0de455d5506b3e3686fa0b56",
"size": 8310
},
"skills/neon-object-storage/SKILL.md": {
"sha256": "fce96952845dfcf4b0c560fcf1ff0d2c0867931fd34ddb3acf0ec24fd118fd11",
"size": 14253
},
"skills/neon-postgres-branches/SKILL.md": {
"sha256": "9f47d5a49553a465837c1e8b2d90a90aac72a5313a996c081027290f259a8d71",
"size": 13663
},
"skills/neon-postgres-egress-optimizer/SKILL.md": {
"sha256": "d7536270b6dd59a66fa5daf1578cc55a5b761d7163f6f6b1596662481b8d5d9b",
"size": 10227
},
"skills/neon-postgres/SKILL.md": {
"sha256": "83d3c75651bd81f06e5e8c47ffc306936cc4d2a1ac84d288e8f6a15fcfb724b4",
"size": 16595
},
"skills/neon-postgres/references/full-text-search.md": {
"sha256": "025d4380ccfe8e2c745687d82ed6182d501d5678a3941112f37f58bac38e7db4",
"size": 3901
},
"skills/neon-postgres/references/hybrid-search.md": {
"sha256": "80b9b1a9974c41eea80bfa4159c5be2b89ca0caaf96b06356ce60d49b2443f90",
"size": 4451
},
"skills/neon-postgres/references/lakebase-search-drizzle.md": {
"sha256": "9d5193830642719ecd325dd60f2ffc7c1104055e9c7c4f4828963299adb234b7",
"size": 6716
},
"skills/neon-postgres/references/vector-search.md": {
"sha256": "4d7c14f1940033e2c379be62f00ef5ba5e17878a44bc11957a5176f91c2aa0ac",
"size": 6244
},
"skills/neon/SKILL.md": {
"sha256": "1071b8789dea0cb41c795059e728821756181ce55ae34f3f904120bfbfa8ff22",
"size": 32812
},
"skills/neon/references/auth.md": {
"sha256": "c2c609f25d6936c8df52989889ffff738f55b5100259e9193173ed07891f49f0",
"size": 730
},
"skills/neon/references/claimable-neon.md": {
"sha256": "1f510be025b1841231b8ee40f69f8b38a348336b258be43b943cc94f2d88bcf8",
"size": 8163
},
"skills/neon/references/function-triggers.md": {
"sha256": "a72aadc3e63464db7f618abb6daa7f119eb76cf213f27a88c84f7aa92b4dd254",
"size": 3249
},
"skills/neon/references/logs-loki.md": {
"sha256": "fb338ad4d75e3d6c594945bd24d64a4134860fc2f554cd3273c27dd79769c889",
"size": 4044
},
"skills/neon/references/parse-env.md": {
"sha256": "f43eb0d40570b06437ea3a93662ab528bad4d5c44c9c28c45f993aaa269e10bd",
"size": 1406
},
"skills/neon/references/sdk.md": {
"sha256": "b9376b5bb1658d9d926a560a7be632a0aaa4fd12e60f38c3ba5050bd35989da0",
"size": 806
}
}
}SHA-256 of public snapshot: c9876b496aaceb343c82ca2a351b8eb2a4630bb8572e1fcf8296b1ff854ef284