← Back to Desktop app developers

Skill · Version 1.0.0

Modernize frameworks and dependencies

Updates dependencies and conventions against installed versions while preserving important behavior at third-party boundaries.

dependency-framework-modernization

Team members using this skill

See how it helps

When is it useful?

Use when upgrading a framework or replacing a library with different defaults or error semantics.

What does it help you do?

  • Inventories deprecated APIs and checks official migration requirements.
  • Contains vendor-specific changes at appropriate existing boundaries.
  • Verifies dates, errors, return values and other compatibility-sensitive behavior.

Try asking this

Plan our date-library upgrade with timezone and daylight-saving comparisons, identifying behavior changes separately from syntax updates. Compare dates around the clock-change boundary in the supported timezones. Any changed duration or displayed day needs an explicit decision before release.

Detailed documentation

Read the skill’s original instructions, examples and checks in their authored language.

Details…Show less

Dependency & Framework Modernization

Modernizing language syntax, framework conventions or third-party dependencies requires grounding every change in the actual installed versions and official migration guides — never guessing APIs from memory or mixing incompatible generational patterns.

1. Version & Deprecation Discovery

Before touching code for an upgrade or modernization task:

  1. Inspect manifests and lockfiles: read package.json + lockfile, composer.json + composer.lock, Cargo.toml, pyproject.toml, go.mod or compiler configs (tsconfig.json, php.ini, target runtime settings) to verify exact installed versions.
  2. Inventory deprecated usage: search the codebase for deprecated API calls, legacy lifecycle hooks, outdated configuration keys, polyfills and custom monkey-patches.
  3. Consult official version migration guides: verify exact breaking changes, changed default options, altered return types and subtle behavioral shifts between the source and target versions.

2. Wrapping Third-Party Boundaries

When upgrading a widely called third-party SDK, HTTP client, ORM helper, validation library or date/crypto utility:

  • Isolate vendor specifics behind an internal adapter: if 60 files call a third-party library directly with vendor-specific options, first introduce or tighten a thin internal wrapper so vendor API churn is contained to one boundary.
  • Preserve behavioral edge cases across library swaps:
    • Check timezone, locale and daylight-saving semantics when modernizing date/time libraries.
    • Check error throwing vs. status-code resolving (e.g., fetch vs. axios on 4xx/5xx responses, timeout cancellation and retry semantics).
    • Check serialization edge cases (undefined vs. null, BigInt, Date formatting, decimal precision).

3. Phased Modernization Execution

  • Separate dependency bumps from unrelated refactoring: do not combine a major framework upgrade, a directory reorganization and business-rule changes in the same step.
  • Bridge compatibility first:
    • Upgrade to the latest minor release of the current major version and resolve all deprecation warnings while existing tests pass.
    • Where supported, enable compatibility flags or dual-syntax bridges so modules can be migrated in small, reviewable batches.
  • Prefer deterministic codemods and AST rules for mechanical changes: when a framework or language change is purely syntactic across many files, apply consistent transformations and verify every diff rather than hand-editing inconsistently.
  • Coordinate with technology specialists: when modernizing framework-specific patterns (such as reactive state, ORM queries, mobile native bridges or desktop IPC), align the target idiom with the corresponding framework specialist.

4. Post-Upgrade Verification

  • Run the full typecheck, linter, unit/integration test suite and production build — dev-mode bundlers often hide resolution or tree-shaking issues that fail in production builds.
  • Verify runtime startup, configuration loading and at least one end-to-end execution path exercising the modernized dependency.

Included files 1

  • SKILL.md