Skip to content

Conversation

@leprz
Copy link

@leprz leprz commented Jul 24, 2025

[x] I read and followed the CONTRIBUTING.md guide.

This PR includes:

  • Update npm dependencies to match angular 20 requirements

  • changing PortalInjector to Inject.create

  • removing deprecated _COALESCED_STYLE_SCHEDULER and _CoalescedStyleScheduler

  • removing deprecated ComponentFactoryResolver

  • Partial linting changes across the codebase
    ⚠️ I’m not yet confident that all lint changes are correct or desired. Please review carefully.

  • Noticed an issue with NbDateService in the playground – not fixed yet, but worth tracking.

What’s left

  • Validate and finalize lint changes
  • Investigate and resolve NbDateService issue in playground
  • Run full test suite and confirm regressions are avoided

📌 Notes for reviewers

  • Feedback on the lint changes is especially welcome
  • Let me know if the NbDateService bug is already known or tracked in another issue

@leprz leprz mentioned this pull request Jul 24, 2025
2 tasks
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
28.9% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@leprz leprz changed the title feat: update angular to v20 (Work In Progress) feat: update angular to v20 Jul 29, 2025
@leprz
Copy link
Author

leprz commented Jul 29, 2025

@denStrigo Could you please review this PR when you have a moment? Also, I need a manual approval for SonarCloud — it’s incorrectly flagging code as duplicated. The tests are currently written in Karma, which is deprecated, so I can not get them going as well.

@leprz
Copy link
Author

leprz commented Aug 9, 2025

@elupanov Can you tak a look at it? Anyone?

@elupanov elupanov requested a review from denStrigo August 11, 2025 14:31
@elupanov
Copy link
Member

@elupanov Can you tak a look at it? Anyone?

Hi
Thank you for your contribution. We will review it, but we cannot promise any deadlines.

@denStrigo
Copy link
Collaborator

Hi @leprz
Thank you for your support. I reviewed the changes in the PR, and they look great. However, to better understand what was actually changed, could you revert the lint-related updates?

@leprz
Copy link
Author

leprz commented Aug 21, 2025

Hi @leprz Thank you for your support. I reviewed the changes in the PR, and they look great. However, to better understand what was actually changed, could you revert the lint-related updates?

Thanks for review. I'll do it quickest as I can.

@jkneepkens
Copy link
Contributor

Hi @leprz Thank you for your support. I reviewed the changes in the PR, and they look great. However, to better understand what was actually changed, could you revert the lint-related updates?

Thanks for review. I'll do it quickest as I can.

Any update on this? I really want to update our application to Angular 20... Angular 21 is already around the corner :(

@leprz
Copy link
Author

leprz commented Sep 12, 2025

Hey @denStrigo, I tried to revert the eslint changes, but it seems like we can’t leave it without any changes. The first two errors are pretty straightforward to fix by loading.
image

import tseslint from "@typescript-eslint/eslint-plugin";
...
plugins: {
    rxjs,
    "@typescript-eslint": tseslint,
  },

But then we get
image

I thought it was a problem with the path to the tsconfig file in e2e/.eslintrc.json, but it seems to be not used at all. Currently lint seems to use only flat config.

This is the output from npx eslint . --debug

Error: Error while loading rule 'rxjs/no-unsafe-takeuntil': You have used a rule which requires parserServices to be generated. You must therefore provide a value for the "parserOptions.project" property for @typescript-eslint/parser.
Occurred while linting /Users/leprz/Projects/nebular/e2e/accordion.e2e-spec.ts
    at Object.getParserServices (/Users/leprz/Projects/nebular/node_modules/eslint-plugin-rxjs/node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.js:15:15)
    at getTypeServices (/Users/leprz/Projects/nebular/node_modules/eslint-plugin-rxjs/node_modules/eslint-etc/dist/cjs/get-type-services.js:32:55)
    at create (/Users/leprz/Projects/nebular/node_modules/eslint-plugin-rxjs/dist/rules/no-unsafe-takeuntil.js:64:72)
    at Object.create (/Users/leprz/Projects/nebular/node_modules/eslint-plugin-rxjs/node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js:41:20)
    at createRuleListeners (/Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:1019:15)
    at /Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:1151:7
    at Array.forEach (<anonymous>)
    at runRules (/Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:1085:31)
    at #flatVerifyWithoutProcessors (/Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:2101:4)
    at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:2189:43)

You can reproduce it here master...leprz:nebular:update-angular-to-v20-v2

@leprz
Copy link
Author

leprz commented Sep 12, 2025

Any help would be super appreciated!

@jesperancinha
Copy link

@elupanov , do you have any idea when a version will comeout? It is not an urgency at the moment for my application. It may be for others already now and it might be urgent for me in the near future.

@jkneepkens
Copy link
Contributor

Hey @denStrigo, I tried to revert the eslint changes, but it seems like we can’t leave it without any changes. The first two errors are pretty straightforward to fix by loading. image

import tseslint from "@typescript-eslint/eslint-plugin";
...
plugins: {
    rxjs,
    "@typescript-eslint": tseslint,
  },

But then we get image

I thought it was a problem with the path to the tsconfig file in e2e/.eslintrc.json, but it seems to be not used at all. Currently lint seems to use only flat config.

This is the output from npx eslint . --debug

Error: Error while loading rule 'rxjs/no-unsafe-takeuntil': You have used a rule which requires parserServices to be generated. You must therefore provide a value for the "parserOptions.project" property for @typescript-eslint/parser.
Occurred while linting /Users/leprz/Projects/nebular/e2e/accordion.e2e-spec.ts
    at Object.getParserServices (/Users/leprz/Projects/nebular/node_modules/eslint-plugin-rxjs/node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.js:15:15)
    at getTypeServices (/Users/leprz/Projects/nebular/node_modules/eslint-plugin-rxjs/node_modules/eslint-etc/dist/cjs/get-type-services.js:32:55)
    at create (/Users/leprz/Projects/nebular/node_modules/eslint-plugin-rxjs/dist/rules/no-unsafe-takeuntil.js:64:72)
    at Object.create (/Users/leprz/Projects/nebular/node_modules/eslint-plugin-rxjs/node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js:41:20)
    at createRuleListeners (/Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:1019:15)
    at /Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:1151:7
    at Array.forEach (<anonymous>)
    at runRules (/Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:1085:31)
    at #flatVerifyWithoutProcessors (/Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:2101:4)
    at Linter._verifyWithFlatConfigArrayAndWithoutProcessors (/Users/leprz/Projects/nebular/node_modules/eslint/lib/linter/linter.js:2189:43)

You can reproduce it here master...leprz:nebular:update-angular-to-v20-v2

I've continued on your branch and changes some other stuff to get all the pipelines green: #3292
Hopefully this version can be released very soon!

@hoermillerj
Copy link

@leprz @denStrigo any Update on this? Would really like to see compatibility with Angular v20.

@leprz
Copy link
Author

leprz commented Sep 30, 2025

I've tested the version provided by @jkneepkens (#3292) and for me it's ready to be merged. I also tested this version on my project and it works great.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants