Skip to content

Conversation

@MGREMY
Copy link
Collaborator

@MGREMY MGREMY commented Dec 19, 2025

Waiting for ng-doc to update

PR Checklist

Please check if your PR fulfills the following requirements:

  • Docs have been added/updated (for bug fixes/features)

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no API changes)
  • Build related changes
  • CI-related changes
  • Documentation content changes
  • Other... Please describe:

Issue Number

Issue Number: #142

Does this PR introduce a breaking change?

  • Yes
  • No

Migration to angular 21

Other information

Summary by CodeRabbit

  • Chores

    • Upgraded to Angular 21, NX 22, and Storybook 10; many tooling and dependency updates.
    • TypeScript bumped to 5.9 and compiler/module settings adjusted for bundler-style resolution.
    • Updated ng-primitives to 0.90.0 and other package version alignments.
    • Switched change detection to zone-based in app configuration.
  • Bug Fixes

    • Fixed navbar button behavior to ensure correct button type handling.
    • Improved server startup to better accept rendering context.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link

vercel bot commented Dec 19, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
flowbite-angular Ready Ready Preview, Comment Jan 13, 2026 5:15pm
flowbite-angular-storybook Ready Ready Preview, Comment Jan 13, 2026 5:15pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 19, 2025

Walkthrough

Updated project to Angular 21 and aligned tooling (NX, Storybook, TypeScript); adjusted module resolution/emission configs, updated server bootstrap signature to accept a BootstrapContext, modified app provider list, bumped library peer deps, and minor directive/property binding change.

Changes

Cohort / File(s) Summary
Angular & deps
package.json, libs/flowbite-angular/package.json
Bumped Angular core packages and related ecosystem to 21.x, updated zone.js, Storybook, NX, TypeScript; adjusted libs/flowbite-angular peerDependencies to require Angular 21.x and newer ng-primitives.
Server bootstrap
apps/docs/src/main.server.ts
bootstrap now accepts BootstrapContext and passes it into bootstrapApplication. Added import type { BootstrapContext }.
App providers
apps/docs/src/app/app.config.ts
Replaced provideAnimations with provideZoneChangeDetection() in the app config providers.
TSConfig / module resolution
tsconfig.base.json, apps/docs/tsconfig.json, libs/tools/tsconfig.json
Switched moduleResolution from nodebundler; changed module emission to preserve in affected tsconfigs.
Tooling config
apps/storybook/.storybook/main.ts, libs/tools/package.json
Storybook framework resolution changed to getAbsolutePath('@storybook/angular'); updated @nx/* versions and other tooling deps.
NX release config
nx.json
Replaced flat releaseTagPattern with nested releaseTag: { "pattern": ... }.
Directive binding
libs/flowbite-angular/navbar/src/navbar-brand/navbar-brand.directive.ts
Changed host binding from [attr.type] to direct type property binding for the button element.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Sidebar as directive #111 — Modifies sidebar components/exports and docs in the same flowbite-angular library, likely touching related UI components and packaging.

Suggested labels

released

Poem

🐰 I hopped through packages, small and spry,

Bumped Angular versions, gave configs a try.
Bundles preserved, resolution reborn,
Bootstraps now take context at dawn.
A carrot for CI — let's ship at morn! 🥕✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive The description provides context about the update and references issue #142, but lacks detail on migration implications and only partially completes the template. Expand the description to include migration impact details, release notes summary, and clarify dependencies on ng-doc updates before merge-readiness.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: updating the project to Angular 21.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a677e7a and 6195717.

📒 Files selected for processing (2)
  • apps/docs/src/app/app.config.ts
  • apps/docs/src/main.server.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/docs/src/app/app.config.ts
🧰 Additional context used
🧬 Code graph analysis (1)
apps/docs/src/main.server.ts (1)
apps/docs/src/app/app.config.server.ts (1)
  • config (11-11)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build code 🛠 (20)
🔇 Additional comments (1)
apps/docs/src/main.server.ts (1)

4-8: LGTM! Correct Angular 21 SSR bootstrap pattern.

The changes correctly implement the Angular 21 server-side rendering API:

  • Using import type for BootstrapContext is appropriate for type-only imports
  • The bootstrap function now properly accepts and forwards the context to bootstrapApplication as the third argument

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4cc74de and d1071a8.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (10)
  • apps/docs/src/main.server.ts (1 hunks)
  • apps/docs/src/main.ts (1 hunks)
  • apps/docs/tsconfig.json (1 hunks)
  • apps/storybook/.storybook/main.ts (2 hunks)
  • libs/flowbite-angular/package.json (1 hunks)
  • libs/flowbite-angular/project.json (1 hunks)
  • libs/flowbite-angular/tsconfig.json (1 hunks)
  • libs/tools/package.json (1 hunks)
  • nx.json (1 hunks)
  • package.json (2 hunks)
🧰 Additional context used
🧠 Learnings (6)
📓 Common learnings
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 79
File: libs/flowbite-angular/README.md:87-92
Timestamp: 2024-11-15T08:18:09.828Z
Learning: In `libs/flowbite-angular/README.md`, components that are not yet built should retain their old documentation links and construction emojis until they are completed.
📚 Learning: 2024-11-15T08:18:09.828Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 79
File: libs/flowbite-angular/README.md:87-92
Timestamp: 2024-11-15T08:18:09.828Z
Learning: In `libs/flowbite-angular/README.md`, components that are not yet built should retain their old documentation links and construction emojis until they are completed.

Applied to files:

  • libs/flowbite-angular/package.json
  • libs/flowbite-angular/project.json
  • libs/flowbite-angular/tsconfig.json
📚 Learning: 2024-12-11T09:25:50.819Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 88
File: libs/flowbite-angular/navbar/navbar.component.ts:99-99
Timestamp: 2024-12-11T09:25:50.819Z
Learning: In `libs/flowbite-angular/navbar/navbar.component.ts`, the `NavbarContentComponent` was already required because the `verify` function threw an error if `navbarContentChild` was undefined or null. Therefore, changing `contentChild` to `contentChild.required` does not introduce a breaking change.

Applied to files:

  • libs/flowbite-angular/package.json
  • libs/flowbite-angular/project.json
  • libs/flowbite-angular/tsconfig.json
📚 Learning: 2025-08-17T20:04:24.034Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 137
File: libs/flowbite-angular/table/src/table-body/table-body.directive.ts:1-3
Timestamp: 2025-08-17T20:04:24.034Z
Learning: In the flowbite-angular table module, the table state file is located at `libs/flowbite-angular/table/src/table/table-state.ts`, not at the root src level. Import paths like `../table/table-state` from subdirectories like table-body are correct.

Applied to files:

  • libs/flowbite-angular/package.json
  • libs/flowbite-angular/project.json
  • libs/flowbite-angular/tsconfig.json
📚 Learning: 2025-08-17T20:04:15.230Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 137
File: libs/flowbite-angular/table/src/table-head/table-head.directive.ts:2-2
Timestamp: 2025-08-17T20:04:15.230Z
Learning: In the flowbite-angular table component structure, the table-state.ts file is located at src/table/table-state.ts, not at src/table-state.ts. Import paths from other subdirectories like table-head should use '../table/table-state' to reference it.

Applied to files:

  • libs/flowbite-angular/tsconfig.json
📚 Learning: 2024-12-19T10:29:39.292Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 100
File: apps/docs/docs/components/badge/_bordered.component.ts:5-12
Timestamp: 2024-12-19T10:29:39.292Z
Learning: In Angular 19, the standalone property is the default behavior, making the explicit declaration of "standalone: true" unnecessary.

Applied to files:

  • libs/flowbite-angular/tsconfig.json
🧬 Code graph analysis (2)
apps/docs/src/main.server.ts (1)
apps/docs/src/app/app.config.server.ts (1)
  • config (11-11)
apps/docs/src/main.ts (3)
apps/docs/src/environments/environment.ts (1)
  • environment (5-7)
apps/docs/src/environments/environment.prod.ts (1)
  • environment (1-3)
apps/docs/src/app/app.config.ts (1)
  • appConfig (23-55)
🔇 Additional comments (10)
libs/flowbite-angular/project.json (2)

13-14: LGTM: Build configuration updated correctly.

Adding the tsConfig reference at the build options level alongside the project path is appropriate for Nx/Angular library builds.


20-20: LGTM: Development configuration simplified.

The empty development configuration will inherit from the base build options, which is a standard pattern.

apps/storybook/.storybook/main.ts (1)

1-1: LGTM: Storybook ESM migration applied correctly.

The automatic migration to use getAbsolutePath for the framework name is consistent with the existing addon configuration pattern. This ensures proper path resolution in ESM context.

Also applies to: 14-14

apps/docs/tsconfig.json (1)

22-24: LGTM: TypeScript configuration updated for Angular 21.

The addition of "module": "preserve" and "moduleResolution": "bundler" aligns with Angular 21's requirements and modern TypeScript practices. This configuration is consistent across the monorepo.

nx.json (1)

108-110: The releaseTag configuration format is correct for Nx 22.x.

Options previously prefixed with releaseTag* are now nested under a releaseTag object with unprefixed properties in Nx 22.x. The change from releaseTagPattern (flat string) to releaseTag (object with pattern property) is the required format for this version.

libs/flowbite-angular/tsconfig.json (1)

20-22: Configuration is correct for Angular 21 library builds.

The addition of "module": "preserve" and "moduleResolution": "bundler" aligns with Angular 21 build standards and is automatically set by Nx Angular migrations. This configuration is appropriate for library builds with ng-packagr, which handles the transformation pipeline and final module format transpilation.

libs/tools/package.json (1)

9-10: Verify Angular 21 compatibility before upgrading to Nx 22.3.1.

Nx 22.3.1 contains beta-level Angular 21 support. The official compatibility matrix currently lists support only through Angular 20, so confirm that Angular 21 integration is production-ready in your environment. The S1ngularity supply-chain incident (August 2025) affected earlier Nx versions (21.5.0-21.8.0), not 22.3.1.

package.json (2)

59-113: Dependency versions are well-aligned and compatible.

The devDependencies are appropriately versioned:

  • Angular devkit packages: 21.0.4 / 0.2100.4
  • Angular ESLint: 21.1.0
  • Nx packages: 22.3.1 (consistent)
  • Storybook: 10.1.10 (consistent)
  • ng-packagr: 21.0.1 (matches Angular 21)
  • TypeScript: 5.9.3 (compatible with Angular 21)

30-56: Note on zone.js inclusion: Zone.js is no longer included by default in Angular applications in v21, which suggests this dependency may not be necessary. If the application is configured for zoneless change detection (the new default), zone.js can be removed. Verify the angular.json configuration to determine whether zone.js is actually needed for your project. If your application intentionally retains zone-based change detection for backward compatibility, zone.js 0.16.0 is compatible.

Also note that ng-doc packages remain at 20.1.0, which aligns with the PR description.

apps/docs/src/main.ts (1)

5-15: The provideZoneChangeDetection() pattern is correct for Angular 21.

Angular 21 requires adding provideZoneChangeDetection to your bootstrapApplication providers to restore Zone.js-based change detection. The code correctly spreads the existing appConfig and prepends the provider, which is the standard approach shown in Angular's migration guidance. Optional configuration parameters like eventCoalescing are available if performance tuning is needed, but the basic usage without additional options is sufficient.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
libs/flowbite-angular/navbar/src/navbar-brand/navbar-brand.directive.ts (1)

10-21: Incorrect type attribute on anchor element.

The directive selector targets a[flowbiteNavbarBrand] (anchor elements), but type: 'button' is only semantically valid for <button> or <input> elements. On an anchor element, the type attribute represents the MIME type of the linked resource, not a button type.

If this host binding was intended for a button variant, consider either:

  1. Updating the selector to include button elements
  2. Removing this attribute entirely for anchor elements
  3. Using conditional host binding based on the element type
Suggested fix: Remove the invalid type binding for anchors
 @Directive({
   standalone: true,
   selector: `
     a[flowbiteNavbarBrand]
   `,
   exportAs: 'flowbiteNavbarBrand',
   hostDirectives: [],
   providers: [provideFlowbiteNavbarBrandState()],
   host: {
     '[class]': `theme().host.root`,
-    type: 'button',
   },
 })
🤖 Fix all issues with AI agents
In @apps/docs/src/main.server.ts:
- Around line 4-12: The server bootstrap calls provideZoneChangeDetection() but
that symbol isn't imported, causing a ReferenceError; add the missing import for
provideZoneChangeDetection from @angular/core at the top of the file so the call
in the bootstrapApplication call (where AppComponent and config are used)
resolves correctly.

In @package.json:
- Around line 29-57: Update the root dependency "@ng-primitives/state" from
"0.78.0" to at least "0.90.0" (or a compatible semver range like "^0.90.0") to
satisfy the peerDependency declared by libs/flowbite-angular/package.json; after
changing the dependency entry for "@ng-primitives/state" run package manager
install (and update the lockfile) and run project tests/build to confirm no
regressions.
🧹 Nitpick comments (1)
apps/docs/src/main.ts (1)

12-15: Consider enabling eventCoalescing for improved change detection performance.

When using provideZoneChangeDetection(), setting eventCoalescing: true coalesces event-triggered change detection cycles into a single async detection, which reduces unnecessary change detection runs from event bubbling.

♻️ Suggested improvement
 bootstrapApplication(AppComponent, {
   ...appConfig,
-  providers: [provideZoneChangeDetection(), ...appConfig.providers],
+  providers: [provideZoneChangeDetection({ eventCoalescing: true }), ...appConfig.providers],
 }).catch((e) => console.log(e));
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d1071a8 and 9579f11.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (11)
  • apps/docs/src/main.server.ts
  • apps/docs/src/main.ts
  • apps/docs/tsconfig.json
  • apps/storybook/.storybook/main.ts
  • libs/flowbite-angular/navbar/src/navbar-brand/navbar-brand.directive.ts
  • libs/flowbite-angular/package.json
  • libs/tools/package.json
  • libs/tools/tsconfig.json
  • nx.json
  • package.json
  • tsconfig.base.json
🚧 Files skipped from review as they are similar to previous changes (3)
  • libs/flowbite-angular/package.json
  • nx.json
  • apps/docs/tsconfig.json
🧰 Additional context used
🧬 Code graph analysis (2)
apps/docs/src/main.server.ts (1)
apps/docs/src/app/app.config.server.ts (1)
  • config (11-11)
apps/docs/src/main.ts (3)
apps/docs/src/environments/environment.prod.ts (1)
  • environment (1-3)
apps/docs/src/environments/environment.ts (1)
  • environment (5-7)
apps/docs/src/app/app.config.ts (1)
  • appConfig (23-55)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build code 🛠 (20)
🔇 Additional comments (5)
apps/storybook/.storybook/main.ts (2)

1-1: LGTM! Auto-migration comment for ESM compatibility.

The comment documents that this file was automatically migrated to ESM format, which is helpful for maintainability.


13-16: LGTM! Framework path resolution updated for ESM compatibility.

Using getAbsolutePath('@storybook/angular') instead of a string literal is the correct approach for Storybook 10.x with ESM modules. This ensures proper resolution in monorepo setups and avoids path issues.

libs/tools/package.json (1)

9-11: LGTM! Nx tooling dependencies updated consistently.

The Nx packages are updated to 22.3.3, which provides official Angular 21 support. Both @nx/angular and @nx/devkit are pinned to the same version, preventing version mismatches. The tslib upgrade to ^2.8.1 is appropriate.

tsconfig.base.json (1)

7-7: LGTM!

The moduleResolution: "bundler" change aligns with Angular 21's modern build tooling (esbuild/vite). This is the correct configuration for projects using bundlers and works well with the module: "ESNext" setting.

libs/tools/tsconfig.json (1)

4-4: "preserve" module setting is appropriate for this library.

The libs/tools library has no direct Node.js entry points or CLI scripts. It's a build-time utility library compiled to dist with TypeScript 5.9.3 support. The module: "preserve" setting correctly delegates module transformation to the build system, which aligns with the moduleResolution: "bundler" configuration in the base tsconfig.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
libs/flowbite-angular/package.json (1)

3-3: Library version not updated for breaking change.

The PR description indicates this is a breaking change (migration to Angular 21), but the library version remains at 20.1.3. Consumers expect semver signals for breaking changes. Consider bumping to 21.x.x to align with the Angular version and indicate the breaking change.

🤖 Fix all issues with AI agents
In @package.json:
- Line 71: Update the dependency entry for "@ng-doc/keywords-loaders" in
package.json from "20.1.0" to "21.0.0" so it matches the other @ng-doc/*
packages; locate the "@ng-doc/keywords-loaders" dependency line and change its
version string to "21.0.0", then run your package manager install to refresh
lockfile and verify tests/build.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9579f11 and b07a588.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • apps/docs/src/main.server.ts
  • libs/flowbite-angular/package.json
  • package.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/docs/src/main.server.ts
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2024-11-15T08:18:09.828Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 79
File: libs/flowbite-angular/README.md:87-92
Timestamp: 2024-11-15T08:18:09.828Z
Learning: In `libs/flowbite-angular/README.md`, components that are not yet built should retain their old documentation links and construction emojis until they are completed.

Applied to files:

  • libs/flowbite-angular/package.json
📚 Learning: 2024-12-11T09:25:50.819Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 88
File: libs/flowbite-angular/navbar/navbar.component.ts:99-99
Timestamp: 2024-12-11T09:25:50.819Z
Learning: In `libs/flowbite-angular/navbar/navbar.component.ts`, the `NavbarContentComponent` was already required because the `verify` function threw an error if `navbarContentChild` was undefined or null. Therefore, changing `contentChild` to `contentChild.required` does not introduce a breaking change.

Applied to files:

  • libs/flowbite-angular/package.json
📚 Learning: 2025-08-17T20:04:24.034Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 137
File: libs/flowbite-angular/table/src/table-body/table-body.directive.ts:1-3
Timestamp: 2025-08-17T20:04:24.034Z
Learning: In the flowbite-angular table module, the table state file is located at `libs/flowbite-angular/table/src/table/table-state.ts`, not at the root src level. Import paths like `../table/table-state` from subdirectories like table-body are correct.

Applied to files:

  • libs/flowbite-angular/package.json
📚 Learning: 2024-12-16T13:51:08.299Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 96
File: libs/flowbite-angular/scroll-top/scroll-top.component.ts:70-76
Timestamp: 2024-12-16T13:51:08.299Z
Learning: In `libs/flowbite-angular/scroll-top/scroll-top.component.ts`, when using signals in the template and checking `if (icon())`, it's safe to use `icon()!` within the block because `icon()` is guaranteed to be defined in this context.

Applied to files:

  • libs/flowbite-angular/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build code 🛠 (20)
🔇 Additional comments (3)
package.json (2)

29-56: Dependencies upgraded to Angular 21 ecosystem.

The Angular packages are consistently upgraded to 21.x. Minor version differences between @angular/ssr (21.0.5), @angular/cdk (21.0.6), and other packages (21.0.8) are expected as these packages may have independent release cycles.


58-113: DevDependencies aligned with Angular 21 tooling.

Nx 22.3.3, Storybook 10.x, ng-packagr 21.0.1, and TypeScript 5.9.3 are significant upgrades. The @angular-devkit/* and @angular-eslint/* packages follow Angular's versioning convention correctly. TypeScript 5.9.3 meets Angular 21's requirement of >= 5.9.0 and < 6.0.0.

libs/flowbite-angular/package.json (1)

33-42: peerDependencies updated for Angular 21 ecosystem.

The Angular peerDependency ranges (>=21.0.0 < 22.0.0) are correctly specified to allow any Angular 21.x version. The ng-primitives packages (^0.90.0) are compatible with Angular 21, as version 0.90.0 and later versions (up to 0.99.6) all require only @angular/core >=20.0.0. With the caret constraint, npm will install the latest compatible 0.99.x release, which maintains Angular 21 compatibility.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @package.json:
- Around line 30-40: Two packages are out of sync with the rest of Angular:
update "@angular/cdk" and "@angular/ssr" to "21.0.8" so all @angular/* packages
use the same 21.0.8 patch; modify their version strings in package.json to
"21.0.8" (matching "@angular/core", "@angular/common", etc.), then run your
package manager (npm/pnpm/yarn) to reinstall and regenerate the lockfile so the
dependency tree is consistent.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b07a588 and a670800.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1)
  • package.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 79
File: libs/flowbite-angular/README.md:87-92
Timestamp: 2024-11-15T08:18:09.828Z
Learning: In `libs/flowbite-angular/README.md`, components that are not yet built should retain their old documentation links and construction emojis until they are completed.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build code 🛠 (20)
🔇 Additional comments (3)
package.json (3)

47-56: Peer dependencies are compatible with Angular 21

The current versions satisfy Angular 21's peer dependencies: rxjs ^7.4.0 matches the range ^6.5.3 || ^7.4.0, and zone.js 0.16.0 satisfies ~0.15.0 || ~0.16.0. No install-time warnings or runtime issues will occur from these versions.

Consider moving @nx/devkit to devDependencies if this package is not directly used by consuming applications.

Likely an incorrect or invalid review comment.


42-45: The pinned @ng-doc/*@21.0.0 versions are published and support Angular 21.

All four packages exist on npm and declare peer dependency constraints compatible with Angular 21 (@angular/common, @angular/core, @angular/cdk, @angular/router all require >=21.0.0 <22.0.0). No action needed.

Likely an incorrect or invalid review comment.


59-114: The peer dependency analysis reveals no actual compatibility issues. All declared peer dependencies are satisfied:

  • @angular/compiler-cli@21.0.8 has no peer dependency conflict with @angular/cli@21.0.5—@angular/cli has no peer dependencies, and the patch-level difference within 21.0.x is acceptable.
  • typescript@5.9.3 satisfies requirements from @angular/compiler-cli@21.0.8 and @storybook/angular@10.1.11.
  • @storybook/angular@10.1.11 accepts Angular 21.0.x (within its >=18.0.0 <22.0.0 range).
  • nx@22.3.3 has its swc peer dependencies met: @swc/core@~1.5.7 and @swc-node/register@~1.9.1.

The toolchain configuration is compatible; no validation action is required.

Likely an incorrect or invalid review comment.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
apps/docs/src/app/app.config.ts (1)

43-43: Consider enabling eventCoalescing for performance optimization.

The provideZoneChangeDetection() call uses default options. In Angular 21, enabling event coalescing reduces change detection cycles by batching multiple events into a single cycle, which can improve performance in UIs with many DOM events. Measure your app with Angular DevTools profiler first to identify whether zone pollution is occurring before enabling:

-    provideZoneChangeDetection(),
+    provideZoneChangeDetection({ eventCoalescing: true }),

This is an optional optimization; verify responsiveness and test stability after applying.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a670800 and a677e7a.

📒 Files selected for processing (2)
  • apps/docs/src/app/app.config.ts
  • apps/docs/src/main.server.ts
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 149
File: package.json:30-40
Timestamp: 2026-01-13T16:49:44.128Z
Learning: Not all angular/* packages release at the same patch version. For example, angular/cdk and angular/ssr may have different patch versions (e.g., 21.0.6, 21.0.5) than the core Angular packages (e.g., 21.0.8), and this is normal and acceptable. Each package has its own release schedule.
📚 Learning: 2025-01-22T14:58:55.257Z
Learnt from: MGREMY
Repo: themesberg/flowbite-angular PR: 110
File: apps/docs/docs/components/navbar/directive/_responsive.component.html:4-8
Timestamp: 2025-01-22T14:58:55.257Z
Learning: The `flowbite-navbar-toggle` directive in flowbite-angular:
1. Automatically includes a hamburger menu icon through its internal `flowbite-icon` component
2. Uses a theme-compatible SVG icon that adapts to the current color scheme using `currentColor`
3. Can be used both as a standalone element (`<flowbite-navbar-toggle>`) and as a directive on button elements (`<button flowbite-navbar-toggle>`)
4. Internally handles the click event to toggle the navbar's visibility

Applied to files:

  • apps/docs/src/app/app.config.ts
🧬 Code graph analysis (1)
apps/docs/src/main.server.ts (1)
apps/docs/src/app/app.config.server.ts (1)
  • config (11-11)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build code 🛠 (20)
🔇 Additional comments (2)
apps/docs/src/app/app.config.ts (1)

7-7: LGTM!

The import correctly adds provideZoneChangeDetection from @angular/core.

apps/docs/src/main.server.ts (1)

4-8: Correctly implements Angular 21 SSR bootstrap pattern.

The bootstrap function signature using BootstrapContext as a third parameter to bootstrapApplication is the correct pattern for Angular 21 SSR. This allows the server to pass a per-request platform injector during hydration, which is required for standalone apps to avoid sharing global platform state across requests.

@MGREMY MGREMY merged commit cd4e900 into main Jan 13, 2026
8 checks passed
@MGREMY MGREMY deleted the chore/angular_21 branch January 13, 2026 17:31
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.

2 participants