Skip to main content

theia Package Update Strategy

Last Updated: 2025-10-27 Status: ✅ ACTIVE - Syncing with theia-ide/browser

Overview

Our custom theia-app stays up-to-date with official theia IDE packages using the theia-ide git submodule as a reference.

What Changed (2025-10-27)

Added 42 New Packages

10 New AI Packages:

  • @theia/ai-anthropic - ✨ Direct Anthropic/Claude API
  • @theia/ai-claude-code - 🔥 KEY: Claude Pro integration without API keys
  • @theia/ai-google - Google Gemini support
  • @theia/ai-huggingface - HuggingFace models
  • @theia/ai-llamafile - Local LlamaFile (LM Studio alternative)
  • @theia/ai-mcp-server - Host MCP servers
  • @theia/ai-mcp-ui - MCP UI components
  • @theia/ai-scanoss - Security scanning
  • @theia/ai-terminal - AI-assisted terminal
  • @theia/ai-vercel-ai - Vercel AI SDK

32 Additional Feature Packages:

  • Real-time collaboration (@theia/collaboration)
  • Jupyter notebooks (@theia/notebook)
  • Dev containers (@theia/dev-container)
  • Remote development (@theia/remote)
  • Toolbar UI (@theia/toolbar)
  • Debugging (@theia/debug)
  • Search in workspace (@theia/search-in-workspace)
  • SCM/Git (@theia/scm)
  • And 24 more...

Before: 24 packages After: 66 packages Increase: +175% packages


Keeping Updated: 3 Methods

Run quarterly or when theia releases new version:

./scripts/sync-theia-packages.sh

What it does:

  1. Updates theia-ide submodule to latest
  2. Extracts all @theia/* package versions from theia-ide/applications/browser/package.json
  3. Updates theia-app/package.json with matching versions
  4. Sorts dependencies alphabetically
  5. Creates backup (theia-app/package.json.backup)

Output:

🔄 Syncing theia packages...
📥 Updating theia-ide submodule to latest...
theia version: 1.65.1
🔍 Finding @theia/* packages...
Found 66 @theia/* packages
✓ Updated @theia/ai-anthropic to ^1.65.1
✨ Added @theia/ai-claude-code: ^1.65.1
✅ Package sync complete!

Then:

cd theia-app
npm install
npm run prepare # Test build
git add package.json
git commit -m "chore: Sync theia packages from theia-ide v1.65.1"

Method 2: Manual Comparison

When you want more control:

# 1. Check theia-ide version
cd theia-ide
git log -1 --oneline

# 2. Compare package versions
diff <(jq -r '.dependencies | keys[]' theia-ide/applications/browser/package.json | grep '@theia/' | sort) \
<(jq -r '.dependencies | keys[]' theia-app/package.json | grep '@theia/' | sort)

# 3. See version differences
for pkg in $(jq -r '.dependencies | keys[]' theia-ide/applications/browser/package.json | grep '@theia/'); do
IDE_VER=$(jq -r ".dependencies[\"$pkg\"]" theia-ide/applications/browser/package.json)
APP_VER=$(jq -r ".dependencies[\"$pkg\"] // \"MISSING\"" theia-app/package.json)
if [ "$IDE_VER" != "$APP_VER" ]; then
echo "$pkg: $APP_VER$IDE_VER"
fi
done

# 4. Manually update package.json
vim theia-app/package.json

Method 3: NPM Outdated Check

Check for newer versions on npm:

cd theia-app
npm outdated | grep @theia/

# Update specific package
npm install @theia/ai-claude-code@latest --save

# Update all @theia/* packages
npm update @theia/*

Update Schedule

FrequencyMethodUse Case
QuarterlyAutomated scriptSync with official theia IDE releases
MonthlyNPM outdatedCheck for patch/security updates
On demandManual comparisonBefore major feature work
After theia releaseAutomated scriptStay current with upstream

theia Release Cycle

theia IDE releases: ~Every 4-6 weeks Watch for: https://github.com/eclipse-theia/theia-ide/releases

Notification Setup:

# Watch theia-ide releases
cd theia-ide
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
gh repo set-default eclipse-theia/theia-ide
gh release list --limit 5

# Or set up GitHub notifications
# Go to: https://github.com/eclipse-theia/theia-ide
# Click: Watch > Custom > Releases

Version Strategy

Our approach: Use caret ranges (^1.65.0) for flexibility

{
"dependencies": {
"@theia/core": "^1.65.0" // Allows 1.65.x, but not 1.66.0
}
}

Why:

  • ✅ Get patch fixes automatically (1.65.1, 1.65.2)
  • ✅ Avoid breaking changes (major/minor blocked)
  • ✅ Compatible with official theia IDE

theia IDE approach: Exact versions (1.65.1)

{
"dependencies": {
"@theia/core": "1.65.1" // Exact, no automatic updates
}
}

If you want exact versions (production stability):

# Convert ^ to exact versions
jq '.dependencies |= (to_entries | map(.value |= ltrimstr("^")) | from_entries)' theia-app/package.json > tmp.json
mv tmp.json theia-app/package.json

Testing After Updates

Always test after package updates:

# 1. Clean install
cd theia-app
rm -rf node_modules package-lock.json
npm install

# 2. Build
npm run prepare

# 3. Test locally
npm start
# Visit: http://localhost:3000

# 4. Check AI features work
# - Test @theia/ai-claude-code (Claude Pro integration)
# - Test @theia/ai-anthropic (Anthropic API)
# - Test @theia/ai-mcp (Model Context Protocol)
# - Test @theia/ai-terminal (AI terminal commands)

# 5. Docker build test
cd ..
docker build -f dockerfile.combined-fixed --target theia-builder .

Rollback Strategy

If update breaks something:

# 1. Restore backup
mv theia-app/package.json.backup theia-app/package.json

# 2. Or git revert
git checkout HEAD -- theia-app/package.json
cd theia-app
npm install

# 3. Or specific package downgrade
npm install @theia/ai-claude-code@1.65.0 --save

CI/CD Integration

Automated monthly checks (add to .github/workflows/theia-sync.yml):

name: Check theia Package Updates

on:
schedule:
- cron: '0 0 1 * *' # Monthly on 1st
workflow_dispatch: # Manual trigger

jobs:
check-updates:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: Update theia-ide submodule
run: |
cd theia-ide
git checkout main
git pull origin main

- name: Check for package differences
run: |
./scripts/sync-theia-packages.sh
if git diff --quiet theia-app/package.json; then
echo "No updates needed"
else
echo "Updates available!"
git diff theia-app/package.json
fi

- name: Create PR if updates found
uses: peter-evans/create-pull-request@v5
with:
title: "chore: Sync theia packages from theia-ide"
body: "Automated package sync from theia-ide submodule"
branch: theia-package-sync

Key Packages to Watch

Critical for features:

  • @theia/ai-claude-code - Claude Pro integration (your main value prop)
  • @theia/ai-mcp - Model Context Protocol
  • @theia/ai-anthropic - Direct Anthropic API
  • @theia/collaboration - Real-time collaboration
  • @theia/remote - Remote development

Breaking changes most likely in:

  • @theia/core - Core framework
  • @theia/ai-core - AI framework
  • @theia/plugin-ext - Plugin system

Documentation

After each major update, document:

  1. theia version updated from/to
  2. New packages added
  3. Breaking changes encountered
  4. Configuration changes needed
  5. Test results

Template:

## Update Log: [DATE]

**theia Version**: 1.65.0 → 1.66.0
**Packages Added**: @theia/ai-new-feature
**Breaking Changes**: None
**Config Changes**: Updated ai.claude-code.cliPath
**Tests**: ✅ All passing
**Deployment**: ✅ Successful

Quick Reference

# Check current versions
jq '.dependencies | to_entries | .[] | select(.key | startswith("@theia/")) | "\(.key): \(.value)"' theia-app/package.json

# Count packages
jq '.dependencies | to_entries | .[] | select(.key | startswith("@theia/")) | .key' theia-app/package.json | wc -l

# Find specific package
jq '.dependencies["@theia/ai-claude-code"]' theia-app/package.json

# Sync packages (automated)
./scripts/sync-theia-packages.sh

# Manual update
cd theia-app
npm install @theia/PACKAGE@version --save

Summary

Added 42 new packages from theia-ide ✅ Automated sync script created ✅ Quarterly update schedule recommended ✅ CI/CD integration ready ✅ Rollback strategy documented

Next update: ~January 2026 (or when theia 1.66.0 releases)