Skip to content

chore(23.0.0): removing old deprecated apis - #17723

Open
kdinev wants to merge 3 commits into
masterfrom
remove-deprecated-api-23
Open

kdinev wants to merge 3 commits into
masterfrom
remove-deprecated-api-23

Conversation

@kdinev

@kdinev kdinev commented Oct 6, 2026

Copy link
Copy Markdown
Member

Description

Everything deprecated before 21.1.0 has been removed except ten NgModules (question below). I added a new 23.0.0 ng update migration and documented the removals in CHANGELOG. Everything is on branch remove-deprecated-api-23 and nothing is committed.

Checks: the library build, theme generation and lint:lib pass. The library, specs, Elements and demo app typecheck with 0 errors. All 528 schematics/migration specs pass, including 22 new ones. In targeted Karma runs, every failure (for-of scrollbars, query-builder drag-and-drop, some grid layout/locale tests) also fails on a clean checkout of master.

What was removed:

  • Grids:
    • rowID, primaryKey and data on the grid event args, and rowID on the row selector template context.
    • shouldGenerate, filterGlobal() and the toolbar grid input; toolbar.grid stays as a read-only property.
    • IColumnState.parent, and find()/findIndex() on FilteringExpressionsTree.
    • IRowDataCancelableEventArgs (the rowAdd/rowDelete args) no longer extends the edit args, so the redundant cellID, oldValue and similar members are really gone.
  • Components: IForOfDataChangingEventArgs, carousel top/bottom and slide tabIndex, avatar color/bgColor, registerFamilyAlias(), paginator isFirstPageDisabled/isLastPageDisabled, combo searchPlaceholder, query builder fields, and the header's showLegend/resourceStrings. The active slide still gets tabindex="0", and the query builder's search placeholder text is unchanged.
  • Sass: $default-palette, $light-palette and $dark-palette, and the eight *-light-theme / *-dark-theme wrapper mixins. Three generator files that only held those wrappers are deleted.
  • Not deleted: column children is marked @hidden @internal instead. The library uses it internally in ~160 places and the Elements package depends on it, so it's out of the public API but the field remains.

Migrations: the existing ones from 17.1.0, 18.1.0, 18.2.0 and 19.1.0 are copied into update-23_0_0. New ones cover avatar colors (become [style.color]/[style.background]), carousel orientation, registerFamilyAlias, find/findIndex, the renamed event-arg members, row selector rowID → key, the theme wrappers and the palette variables.

The old member migrations couldn't simply be copied for removed members. They find the member through the language service, which can't resolve it once it's gone from the package. The new code checks the type of the object the member is accessed on instead. Members with no replacement, like filterGlobal, are reported as warnings for the user to fix by hand.

Motivation / Context

Removing deprecated APIs isn't automated. I'm running removal for everything that is left from before 21.1.

Type of Change (check all that apply):

  • Bug fix
  • New functionality
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactoring (no functional changes)
  • Documentation
  • Demos
  • CI/CD
  • Tests
  • Changelog
  • Skills/Agents

Component(s) / Area(s) Affected:

How Has This Been Tested?

  • Unit tests
  • Manual testing
  • Automated e2e tests

Test Configuration:

  • Angular version:
  • Browser(s):
  • OS:

Screenshots / Recordings

Checklist:

  • All relevant tags have been applied to this PR
  • This PR includes unit tests covering all the new code (test guidelines)
  • This PR includes API docs for newly added methods/properties (api docs guidelines)
  • This PR includes feature/README.MD updates for the feature docs
  • This PR includes general feature table updates in the root README.MD
  • This PR includes CHANGELOG.MD updates for newly added functionality
  • This PR contains breaking changes
  • This PR includes ng update migrations for the breaking changes (migrations guidelines)
  • This PR includes behavioral changes and the feature specification has been updated with them
  • Accessibility (ARIA, keyboard navigation, focus management) has been verified

Copilot AI balanced review requested due to automatic review settings October 6, 2026 07:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Several v23 migration transforms can silently change application logic or leave migrated projects uncompilable.

Review effort: Balanced
Findings: 3 High severity · 3 Medium severity

Open (6)
What changed in this PR

Removes pre-21.1 deprecated APIs for v23 and provides migrations for affected applications.

Changes:

  • Removes deprecated component, grid, event, filtering, and theming APIs.
  • Adds TypeScript, template, and Sass migrations with coverage.
  • Updates samples, documentation, tests, Elements metadata, and Indigo elevations.
File Description
src/​app/​reactive-from/​reactive-form-sample.component.html Migrates combo placeholder resources.
src/​app/​pivot-grid/​pivot-grid.sample.html Migrates combo placeholder resources.
src/​app/​pivot-grid-hierarchy/​pivot-grid-hierarchy.sample.html Migrates combo placeholder resources.
src/​app/​grid-row-edit/​grid-row-edit-sample.component.ts Uses rowKey.
src/​app/​carousel/​carousel.sample.ts Uses new orientation values.
src/​app/​action-strip/​action-strip.sample.ts Uses rowKey.
skills/​igniteui-angular-grids/​references/​editing.md Updates event-argument guidance.
skills/​igniteui-angular-grids/​references/​data-operations.md Documents filtering replacements.
skills/​igniteui-angular-figma-to-app/​references/​theme-generation.md Documents removed theme mixins.
projects/​igniteui-angular/​test-utils/​tree-grid-components.spec.ts Uses row selector key.
projects/​igniteui-angular/​test-utils/​grid-samples.spec.ts Uses row selector key.
projects/​igniteui-angular/​tabs/​src/​tabs/​tabs/​tab-content.component.ts Deletes obsolete tab content implementation.
projects/​igniteui-angular/​simple-combo/​src/​simple-combo/​simple-combo.component.ts Removes deprecated example input.
projects/​igniteui-angular/​query-builder/​src/​query-builder/​query-builder.component.ts Removes deprecated fields.
projects/​igniteui-angular/​query-builder/​src/​query-builder/​query-builder.component.spec.ts Tests combo resource propagation.
projects/​igniteui-angular/​query-builder/​src/​query-builder/​query-builder-tree.component.ts Adds combo resource mapping.
projects/​igniteui-angular/​query-builder/​src/​query-builder/​query-builder-tree.component.html Uses combo resources.
projects/​igniteui-angular/​query-builder/​src/​query-builder/​query-builder-header.component.ts Removes deprecated header inputs.
projects/​igniteui-angular/​paginator/​src/​paginator/​paginator.component.ts Removes deprecated page getters.
projects/​igniteui-angular/​migrations/​update-23_0_0/​index.ts Implements v23 migrations.
projects/​igniteui-angular/​migrations/​update-23_0_0/​index.spec.ts Tests v23 migrations.
projects/​igniteui-angular/​migrations/​update-23_0_0/​changes/​members.json Migrates column children access.
projects/​igniteui-angular/​migrations/​update-23_0_0/​changes/​inputs.json Defines input migrations.
projects/​igniteui-angular/​migrations/​update-23_0_0/​changes/​classes.json Renames the for-of event type.
projects/​igniteui-angular/​migrations/​migration-collection.json Registers v23 migration.
projects/​igniteui-angular/​icon/​src/​icon/​icon.service.ts Removes registerFamilyAlias.
projects/​igniteui-angular/​grids/​tree-grid/​src/​tree-grid.pipes.ts Uses add-parent rowKey.
projects/​igniteui-angular/​grids/​tree-grid/​src/​tree-grid.component.ts Removes deprecated event fields.
projects/​igniteui-angular/​grids/​tree-grid/​src/​tree-grid-selection.spec.ts Updates selector expectations.
projects/​igniteui-angular/​grids/​tree-grid/​src/​tree-grid-row.component.html Removes selector rowID.
projects/​igniteui-angular/​grids/​tree-grid/​src/​tree-grid-expanding.spec.ts Expects rowKey.
projects/​igniteui-angular/​grids/​tree-grid/​src/​tree-grid-crud.spec.ts Updates row event expectations.
projects/​igniteui-angular/​grids/​tree-grid/​src/​tree-grid-add-row-ui.spec.ts Uses add-parent rowKey.
projects/​igniteui-angular/​grids/​pivot-grid/​src/​pivot-grid.spec.ts Removes deprecated assertions.
projects/​igniteui-angular/​grids/​pivot-grid/​src/​pivot-grid.component.ts Removes shouldGenerate.
projects/​igniteui-angular/​grids/​hierarchical-grid/​src/​hierarchical-row.component.html Removes selector rowID.
projects/​igniteui-angular/​grids/​hierarchical-grid/​src/​hierarchical-grid.spec.ts Updates path segments.
projects/​igniteui-angular/​grids/​hierarchical-grid/​src/​hierarchical-grid.selection.spec.ts Updates selector expectations.
projects/​igniteui-angular/​grids/​hierarchical-grid/​src/​hierarchical-grid.navigation.spec.ts Updates navigation paths.
projects/​igniteui-angular/​grids/​hierarchical-grid/​src/​hierarchical-grid-navigation.service.ts Emits rowKey paths.
projects/​igniteui-angular/​grids/​grid/​src/​grid.nested.props.spec.ts Updates edit arguments.
projects/​igniteui-angular/​grids/​grid/​src/​grid-row.component.html Removes selector rowID.
projects/​igniteui-angular/​grids/​grid/​src/​grid-row-selection.spec.ts Updates selector expectations.
projects/​igniteui-angular/​grids/​grid/​src/​grid-row-pinning.spec.ts Updates pinning arguments.
projects/​igniteui-angular/​grids/​grid/​src/​grid-row-editing.spec.ts Updates editing arguments.
projects/​igniteui-angular/​grids/​grid/​src/​grid-filtering.spec.ts Removes global-filter tests.
projects/​igniteui-angular/​grids/​grid/​src/​grid-filtering-ui.spec.ts Uses ExpressionsTreeUtil.
projects/​igniteui-angular/​grids/​grid/​src/​grid-cell-editing.spec.ts Uses rowKey.
projects/​igniteui-angular/​grids/​grid/​src/​grid-base.directive.ts Removes deprecated grid APIs.
projects/​igniteui-angular/​grids/​core/​src/​toolbar/​grid-toolbar.component.ts Makes grid read-only.
projects/​igniteui-angular/​grids/​core/​src/​summaries/​grid-summary.service.ts Resolves edited rows via cellID.
projects/​igniteui-angular/​grids/​core/​src/​state-base.directive.ts Removes legacy parent restoration.
projects/​igniteui-angular/​grids/​core/​src/​services/​exporter-common/​base-export-service.ts Updates hierarchical paths.
projects/​igniteui-angular/​grids/​core/​src/​grid-actions/​grid-editing-actions.component.spec.ts Updates event expectations.
projects/​igniteui-angular/​grids/​core/​src/​filtering/​grid-filtering.service.ts Removes filterGlobal.
projects/​igniteui-angular/​grids/​core/​src/​common/​grid.interface.ts Removes selector rowID.
projects/​igniteui-angular/​grids/​core/​src/​common/​events.ts Removes deprecated event members.
projects/​igniteui-angular/​grids/​core/​src/​common/​crud.service.ts Produces updated event shapes.
projects/​igniteui-angular/​grids/​core/​src/​columns/​column.component.ts Marks children internal.
projects/​igniteui-angular/​grids/​core/​src/​columns/​column-group.component.ts Marks children internal.
projects/​igniteui-angular/​grids/​core/​src/​api.service.ts Uses new row event fields.
projects/​igniteui-angular/​directives/​src/​public_api.ts Removes deprecated event export.
projects/​igniteui-angular/​directives/​src/​directives/​for-of/​for_of.directive.ts Removes deprecated event alias.
projects/​igniteui-angular/​core/​src/​data-operations/​README-DATAUTIL.md Documents ExpressionsTreeUtil.
projects/​igniteui-angular/​core/​src/​data-operations/​grid-types.ts Removes path rowID.
projects/​igniteui-angular/​core/​src/​data-operations/​filtering-expressions-tree.ts Removes instance lookup methods.
projects/​igniteui-angular/​core/​src/​core/​styles/​themes/​presets/​igniteui-indigo-light.scss Applies Indigo elevations.
projects/​igniteui-angular/​core/​src/​core/​styles/​themes/​presets/​igniteui-indigo-dark.scss Applies Indigo elevations.
projects/​igniteui-angular/​core/​src/​core/​styles/​themes/​generators/​_indigo.scss Deletes Indigo wrappers.
projects/​igniteui-angular/​core/​src/​core/​styles/​themes/​generators/​_index.scss Stops forwarding wrappers.
projects/​igniteui-angular/​core/​src/​core/​styles/​themes/​generators/​_fluent.scss Deletes Fluent wrappers.
projects/​igniteui-angular/​core/​src/​core/​styles/​themes/​generators/​_bootstrap.scss Deletes Bootstrap wrappers.
projects/​igniteui-angular/​core/​src/​core/​styles/​themes/​generators/​_base.scss Deletes Material wrappers.
projects/​igniteui-angular/​core/​src/​core/​styles/​themes/​_palettes.scss Removes deprecated palettes.
projects/​igniteui-angular/​core/​src/​core/​styles/​base/​_mixins.scss Updates palette documentation.
projects/​igniteui-angular/​combo/​src/​combo/​combo.component.ts Removes searchPlaceholder.
projects/​igniteui-angular/​combo/​src/​combo/​combo.component.spec.ts Tests resource placeholders.
projects/​igniteui-angular/​combo/​README.md Documents resource replacement.
projects/​igniteui-angular/​carousel/​src/​carousel/​slide.component.ts Preserves slide tabindex internally.
projects/​igniteui-angular/​carousel/​src/​carousel/​enums.ts Removes old orientation values.
projects/​igniteui-angular/​carousel/​src/​carousel/​carousel.component.ts Uses orientation directly.
projects/​igniteui-angular/​carousel/​src/​carousel/​carousel.component.spec.ts Tests slide tabindex behavior.
projects/​igniteui-angular/​carousel/​README.md Documents orientation values.
projects/​igniteui-angular/​avatar/​src/​avatar/​avatar.component.ts Removes color inputs.
projects/​igniteui-angular/​avatar/​README.md Documents style bindings.
projects/​igniteui-angular-performance/​src/​styles.scss Uses explicit theme schema.
projects/​igniteui-angular-elements/​src/​themes/​light/​indigo.scss Applies Indigo elevations.
projects/​igniteui-angular-elements/​src/​themes/​dark/​indigo.scss Applies Indigo elevations.
projects/​igniteui-angular-elements/​src/​themes/​_util.scss Supports configurable elevations.
projects/​igniteui-angular-elements/​src/​analyzer/​elements.config.ts Updates exposed Elements APIs.
projects/​bundle-test/​src/​styles.scss Replaces legacy theme wrapper.
CHANGELOG.md Documents breaking changes.
.github/​themes-contributing.md Updates theme architecture guidance.
.agents/​agents/​theming-styles-agent.md Removes obsolete generator guidance.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +44 to +47
args.value = args.value
.replace(/(['"])(top|bottom)\1/g, (_, quote, value) => `${quote}${replacements[value]}${quote}`)
.replace(/\bCarouselIndicatorsOrientation\.(top|bottom)\b/g,
(_, value) => `CarouselIndicatorsOrientation.${replacements[value]}`);
Comment on lines +227 to +228
if (migrateCall(node, node.expression)) {
return;
Comment on lines +348 to +353
for (const declaration of igImports) {
const bindings = declaration.importClause?.namedBindings;
const existing = bindings && tss.isNamedImports(bindings) && bindings.elements.find(e => (e.propertyName ?? e.name).text === name);
if (existing) {
return (existing as tss.ImportSpecifier).name.text;
}
Comment on lines +38 to +43
"name": "searchPlaceholder",
"remove": true,
"owner": {
"selector": "igx-combo",
"type": "component"
}
Comment on lines +303 to +307
const [alias, className = alias, type = `'font'`] = args;
changes.push({
start: callee.name.getStart(sourceFile),
end: node.getEnd(),
text: `setFamily(${alias}, { className: ${className}, type: ${type} })`
Comment on lines +584 to +590
for (const [palette, replacement] of Object.entries(PALETTES)) {
const local = declaresLocally(content, 'variable', palette);
const paletteRegex = new RegExp(String.raw`(^|[^\w$.-]|([\w-]+)\.)\$${palette}(?![\w-])`, 'g');
content = content.replace(paletteRegex, (text, before: string, namespace: string) => {
const library = namespace ? namespaces.has(namespace) : global && !local;
return library ? `${before}$${replacement}` : text;
});

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants