File: C:/Users/fred/.codex/.tmp/plugins/plugins/zoom/skills/zoom-apps-sdk/troubleshooting/migration.md
# SDK Version Migration
Notes on upgrading @zoom/appssdk versions and handling deprecations.
## Current Version
**Recommended:** `@zoom/appssdk` v0.16.26+ (latest stable)
```json
{
"dependencies": {
"@zoom/appssdk": "^0.16.26"
}
}
```
## Version Pinning Strategy
| Strategy | package.json | Risk | Use When |
|----------|-------------|------|----------|
| **Exact** | `"0.16.26"` | Lowest | Production apps, critical stability |
| **Patch** | `"~0.16.26"` | Low | Most apps |
| **Minor** | `"^0.16.26"` | Medium | Active development |
## Checking API Availability at Runtime
Not all APIs are available in all Zoom client versions. Always check:
```javascript
const { supportedApis } = await zoomSdk.getSupportedJsApis();
// Check before using an API
if (supportedApis.includes('authorize')) {
// Safe to use In-Client OAuth
await zoomSdk.authorize({...});
} else {
// Fall back to web redirect OAuth
window.location.href = '/install';
}
```
Also check `unsupportedApis` after `config()`:
```javascript
const config = await zoomSdk.config({
capabilities: ['authorize', 'getMeetingContext', 'newFeature'],
version: '0.16'
});
if (config.unsupportedApis.includes('newFeature')) {
console.log('newFeature not available in this client version');
// Graceful degradation
}
```
## Config Version Parameter
The `version` parameter in `config()` indicates which SDK API version you expect:
```javascript
await zoomSdk.config({
capabilities: [...],
version: '0.16' // API version, not NPM package version
});
```
This helps Zoom maintain backward compatibility. Use the latest supported version.
## Sample App SDK Versions
Status of official sample repositories:
| Repository | SDK Version | Status | Notes |
|-----------|-------------|--------|-------|
| zoomapps-sample-js | ^0.16.26 | Current | Best reference |
| zoomapps-advancedsample-react | 0.16.0 | Outdated | Works but update recommended |
| zoomapps-customlayout-js | ^0.16.8 | Outdated | Layers API may differ |
| zoomapps-texteditor-vuejs | ^0.16.7 | Outdated | Y.js pattern still valid |
| zoomapps-serverless-vuejs | ^0.16.21 | Slightly outdated | Firebase pattern still valid |
## Deprecation Pattern
Zoom typically deprecates APIs gradually:
1. API marked deprecated in docs
2. `unsupportedApis` starts returning it in newer clients
3. API stops working in future client versions
**Best practice:** Check `getSupportedJsApis()` at startup and implement fallbacks.
## Migration Checklist
When upgrading SDK version:
- [ ] Update `@zoom/appssdk` in package.json
- [ ] Run `npm install`
- [ ] Check changelog for breaking changes
- [ ] Test all capabilities in Zoom client
- [ ] Verify `getSupportedJsApis()` includes your APIs
- [ ] Test in both meeting and main client contexts
- [ ] Test browser preview fallback still works
- [ ] Update `version` parameter in `config()` if needed
## Resources
- **NPM package**: https://www.npmjs.com/package/@zoom/appssdk
- **Changelog**: https://github.com/zoom/appssdk/releases