Canopy v34 → v35 Migration
SkillDev toolsApply the Canopy v34→v35 breaking changes to an Angular project. Trigger when the user asks to migrate to Canopy v35, upgrade @legal-and-general/canopy from v34, or fix errors after upgrading to v35.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Canopy v34 → v35 Migration skill
What this skill tells your AI
The instructions your AI receives, as published by legal-and-general/canopy in skills/canopy-v35-migration/SKILL.md and read by ahel’s review.
When asked to apply this migration, work through each section below in order. After completing all sections, follow the Verification steps at the end.
1. forms: replace removed lg-switch usage
What changed: The lg-switch selector has been removed in v35. Any
template usage of <lg-switch> will fail after upgrading.
Search for (in *.html files):
<lg-switch
</lg-switch>
Replace with:
- For binary choices where users pick one of two explicit options, use
lg-radio-groupwithlg-radio-button(often inline). - For segmented selection patterns, use the supported selectors
lg-segment-groupandlg-segment-button. - Do not use
lg-segmented-controlbecause it is not a supported Canopy selector. - Keep the same
formControlNameand option values where possible.
Before:
<lg-switch formControlName="confirm" value="yes">Do you agree?</lg-switch>
After (radio pattern):
<lg-radio-group formControlName="confirm" [inline]="true">
<lg-radio-button value="yes">Yes</lg-radio-button>
<lg-radio-button value="no">No</lg-radio-button>
</lg-radio-group>
After (segment pattern):
<lg-segment-group formControlName="confirm">
<lg-segment-button value="yes">Yes</lg-segment-button>
<lg-segment-button value="no">No</lg-segment-button>
</lg-segment-group>
Automated? No — replacing
lg-switchrequires choosing the correct interaction pattern for each form context.
2. quick-action: replace removed [lg-quick-action] usage
What changed: The [lg-quick-action] directive/component has been removed
in v35. Any usage in templates or imports will fail after upgrading.
Search for (in *.html and *.ts files):
lg-quick-action
LgQuickActionComponent
Replace with:
- Replace action behaviour with standard Canopy buttons (for example
<button lg-button type="button">). - Replace navigation behaviour with standard Canopy links (for example
<a lg-link ...>). - Remove
LgQuickActionComponentimports and any Angular metadata references.
Before:
<button lg-quick-action>
<lg-icon name="edit"></lg-icon>
Edit details
</button>
import { LgQuickActionComponent } from '@legal-and-general/canopy';
After (action):
<button lg-button type="button">
<lg-icon name="edit"></lg-icon>
Edit details
</button>
After (navigation):
<a lg-link href="/details">
<lg-icon name="edit"></lg-icon>
View details
</a>
Automated? Partly — finding/removing the old directive and imports is mechanical, but choosing button vs link intent requires manual review.
Verification
- Read the consumer project's
package.jsonscriptsfield to identify the build and test commands. Common script names includebuild,compile,type-check,test, andtest:ci— use whichever are present. - Ask the user to run their build command and confirm there are no TypeScript
or compilation errors related to
lg-switchorlg-quick-action. - Ask the user to run their test command and confirm the test suite passes.
- Re-check all migrated forms to confirm the replacement control (radio group vs segment group) still matches the intended interaction and accessibility.
Signals
- GitHub stars
- 23
- Forks
- 46
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
canopy-v35-migration- Source
- github.com/legal-and-general/canopy