Notion upgrade migration
Skill jeremylongshore/claude-code-plugins-plus-skills/skills/.curated/notion-upgrade-migration
425 plugins, 2,810 skills, 200 agents for Claude Code. Open-source marketplace at tonsofskills.com with the ccpi CLI package manager.
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill notion-upgrade-migrationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
'Upgrade @notionhq/client SDK versions and migrate between Notion API versions.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.3 KB, as published. Nobody here has run it
Notion Upgrade & Migration
Overview
Step-by-step guide for upgrading @notionhq/client (Node.js) and notion-client (Python) SDK versions, migrating between Notion API versions, handling breaking changes, and adopting newly released features. Covers the current stable API version 2022-06-28 and the SDK feature timeline through v2.x.
The workflow is three phases — audit what you run today, upgrade on an isolated branch while fixing breaking changes, then verify every API surface before merging. Deep code (the full breaking-change catalog, the verification suite, and worked recipes) lives in references/ so this file stays a scannable playbook.
Prerequisites
- Existing project with
@notionhq/clientornotion-clientinstalled - Git repository with clean working tree (no uncommitted changes)
- Test suite covering Notion API calls (or willingness to add verification tests)
NOTION_TOKENenvironment variable configured
Instructions
Step 1: Audit Current Versions and API Surface
Determine what you are running today before changing anything.
# Node.js — installed vs latest SDK version
npm ls @notionhq/client
npm view @notionhq/client version
# Python — installed vs latest SDK version
pip show notion-client 2>/dev/null | grep Version
pip index versions notion-client 2>/dev/null | head -1
# Find which API version your code specifies
grep -rn "notionVersion\|Notion-Version\|notion_version" src/ lib/ app/ 2>/dev/null
Record the current SDK version and API version before proceeding. If no notionVersion is set explicitly, the SDK uses its built-in default (typically 2022-06-28 for current releases).
SDK version history — key milestones:
| SDK Version | Notable Additions |
|---|---|
2.2.0 | Comments API support (notion.comments.create, notion.comments.list) |
2.2.3 | Status property type in database schemas |
2.2.4 | Unique ID property, verification property |
2.2.13 | Improved TypeScript discriminated unions for block types |
2.2.15 | Current stable — bug fixes, dependency updates |
API version timeline:
| API Version | Key Changes |
|---|---|
2022-02-22 | Rich text standardization, consistent pagination |
2022-06-28 | Current stable — most tutorials and production apps use this |
Step 2: Perform the Upgrade
Create an isolated branch, upgrade the package, and address breaking changes before merging.
# Node.js
git checkout -b upgrade/notionhq-client-$(npm view @notionhq/client version)
npm install @notionhq/client@latest
git diff package.json package-lock.json
# Python
git checkout -b upgrade/notion-client-$(pip show notion-client 2>/dev/null | grep Version | awk '{print $2}')
pip install --upgrade notion-client
pip show notion-client | grep Version
After any major version bump, check four things: endpoint-type import paths (they moved in some releases), error-handling imports (stable across 2.x), new property types your extraction logic must handle gracefully (status added in 2.2.3, unique_id in 2.2.4), and an explicitly pinned notionVersion so behavior is reproducible instead of tracking the SDK default. The complete before/after code for Node.js and Python is in breaking-changes.md.
Step 3: Verify and Test the Upgrade
Run targeted verification tests to confirm nothing broke — test each API surface your application uses (auth, database query, page create/archive, block read/append, comments), then run the project suite and merge. Skeleton:
const notion = new Client({ auth: process.env.NOTION_TOKEN, notionVersion: '2022-06-28' });
async function verifyDatabaseQuery(databaseId: string) {
const res = await notion.databases.query({ database_id: databaseId, page_size: 5 });
console.log(`Query OK — ${res.results.length} pages, has_more=${res.has_more}`);
}
The full five-test verification suite plus the merge commands are in verification.md.
Output
- SDK upgraded to the latest stable release with exact version pinned in
package.json - API version explicitly set in client initialization (not relying on SDK default)
- New property types (status, unique_id) handled in extraction logic
- All existing API calls verified — database queries, page CRUD, block operations
- Upgrade branch merged with clean test run
Error Handling
| Issue | Cause | Solution |
|---|---|---|
TypeError: Cannot read properties of undefined | New property type returned by API that code does not handle | Add a default case to property type switch — see Step 2 |
APIResponseError: Could not find ... | Stale page/database ID after workspace migration | Re-share pages with the integration at notion.so/my-integrations |
notionVersion is not a valid API version | Typo or unsupported version string | Use 2022-06-28 — confirm at developers.notion.com/reference/versioning |
Type errors on api-endpoints imports | Import path changed between SDK major versions | Check node_modules/@notionhq/client/build/src/api-endpoints.d.ts for current exports |
ENOTFOUND api.notion.com | Network or proxy blocking Notion API | Verify DNS, check corporate proxy, test with curl https://api.notion.com/v1/users/me |
pip install fails for notion-client | Python version incompatible | Requires Python 3.7+; use pip install --upgrade pip first |
Examples
Common follow-ons — each is a full recipe in examples.md:
- Rollback after a failed upgrade — pin the exact previous SDK version, restore source, re-test.
- Adopting the Comments API (SDK 2.2.0+) — create and list comments on a page.
- Detecting new property types — scan existing databases for types your extraction code does not yet handle.
- Deprecation monitoring — a bash audit for raw
Notion-Versionheaders, untyped responses, and SDK version drift.
Resources
- Notion SDK Releases — changelog for every
@notionhq/clientversion - API Versioning — version lifecycle and header format
- Python notion-client — PyPI page with version history
- API Status — check for ongoing incidents before debugging upgrade issues
Next Steps
After upgrading, apply production patterns from notion-sdk-patterns and verify rate limit handling with notion-rate-limits.