Skip to content

feat: dev task optimization to reduce CPU/RAM load#419

Merged
marcinkrasowski merged 14 commits intomainfrom
feat/dev-task-optimizations
Dec 3, 2025
Merged

feat: dev task optimization to reduce CPU/RAM load#419
marcinkrasowski merged 14 commits intomainfrom
feat/dev-task-optimizations

Conversation

@marcinkrasowski
Copy link
Collaborator

@marcinkrasowski marcinkrasowski commented Dec 2, 2025

What does this PR do?

  • fixes [Bug] running dev task is too resource-heavy #420
  • reworks dev task to NOT spawn a separate Node.js process for each package, as each process takes up a lot of resources
  • instead, the dev task was removed for all packages except for api-harmonization, frontend and docs apps
  • now, instead of turbo dev we launch turbo watch dev which delegates watching for file changes to Turbopack, which executes build task in appropriate packages on demand
  • the result is a drastically reduces RAM usage during dev task (from ~6-9 GB to 3-4 GB) and also reduced CPU load during the startup process (up to 50%)
  • this also allowed us to reduce the max number of concurrent tasks in turbo.json from 100 to just 10 so that the OS is not overwhelmed with Node.js processes
  • also, updated both apps to speed up the startup process:
    • in api-harmonization, switched to SWC compiler
    • in frontend, upgraded to Next.js v16 and enabled File System Caching to further speed up app startup on subsequent runs
    • the result is more than 50% faster app startup during dev task

TODO: guide how to migrate to new version in existing projects

Summary by CodeRabbit

  • New Features

    • Faster builds via SWC-based compilation.
    • Filesystem caching for Turbopack in development.
    • Explicit image quality levels for optimized delivery.
  • Chores

    • Upgraded Next.js to v16.0.5 (React unchanged).
    • Preserve watch output during builds for clearer logs.
    • Reduced monorepo concurrency and tidied task configs.
    • Frontend local base URL switched to http for dev.

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 2, 2025

Walkthrough

Removed many per-package dev scripts, standardized builds to use --preserveWatchOutput, integrated SWC for api-harmonization, bumped Next to v16 across packages, adjusted Turbo config (lower concurrency, cache/task changes), and added/updated several scripts and devDependencies.

Changes

Cohort / File(s) Change Summary
API Harmonization
apps/api-harmonization/nest-cli.json, apps/api-harmonization/package.json, apps/api-harmonization/turbo.json
Added "builder": "swc" in nest-cli.json; added @swc/cli and @swc/core; dev/debug scripts include --preserveWatchOutput; reworked turbo dev task (cache:false, persistent:true, env list, dependsOn changed).
Frontend app
apps/frontend/next.config.ts, apps/frontend/.env.development, apps/frontend/src/proxy.ts, apps/frontend/package.json, apps/frontend/turbo.json
Added image quality settings and turbopackFileSystemCacheForDev; switched NEXT_PUBLIC_BASE_URL to http; renamed exported middlewareproxy; upgraded Next/related deps; added predev; restructured turbo tasks (new build, dev cache/persistent, expanded env).
Root workspace
package.json, turbo.json
Changed root dev to turbo watch dev; added predev and clean:output; added npm-check-updates and rimraf devDeps; reduced turbo concurrency (100→5); added build cache and removed top-level dev task.
Blocks / UI packages
packages/blocks/.../package.json (many)
Removed per-package dev scripts; standardized build to tsc --build tsconfig.json --preserveWatchOutput && tsc-alias; broadened lint globs to {ts,tsx}; bumped next peer/dependencies to ^16.0.5.
Integration packages
packages/integrations/*/package.json (algolia, contentful-cms, medusajs, mocked, redis, strapi-cms, zendesk)
Removed dev scripts; updated build to use --preserveWatchOutput && tsc-alias; adjusted generate globs to include *.{ts,tsx} where applicable.
Configs / framework / utils / modules / telemetry / cli
packages/configs/integrations/package.json, packages/framework/package.json, packages/framework/turbo.json (deleted), packages/utils/*/package.json, packages/modules/*/package.json, packages/telemetry/package.json, packages/cli/create-o2s-app/package.json
Removed many dev scripts; updated build commands to include --preserveWatchOutput && tsc-alias; deleted packages/framework/turbo.json; removed some integration deps from configs.
Generator templates
turbo/generators/templates/block/package.hbs
Template now removes dev script, uses --preserveWatchOutput && tsc-alias for build, and bumps devDependencies and peerDependencies (dotenv-cli, concurrently, eslint, prettier, typescript, Nest/Next versions).
Docs app (no-op)
apps/docs/package.json
Temporary add/remove of @radix-ui/react-accordion resulted in no final dependency change.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Areas needing focused review:
    • Turbo configuration changes (root and app-level): concurrency, caching, task dependencies.
    • Next.js v16 upgrades and type overrides across many packages.
    • SWC integration in apps/api-harmonization (build + devDeps).
    • Wide removal of per-package dev scripts — verify local dev workflows and CI.
    • Verify tsc-alias ordering and --preserveWatchOutput behavior doesn't break watch or CI flows.

Poem

🐇 I nibbled noisy devs and calmed the swarm,
Swapped compilers quick and smoothed the storm.
Turbo slowed its sprint, Next climbed up the hill,
SWC and quieter builds make my burrow still.
Hops of joy — the monorepo hums until.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Out of Scope Changes check ❓ Inconclusive While most changes directly support dev task optimization, concurrent task reduction from 100 to 5, SWC/Next.js upgrades, and multiple build script updates across many packages may extend beyond the core resource optimization scope. Clarify whether concurrent reduction, compiler switches, and framework upgrades are necessary for the resource optimization goal or represent separate enhancements.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat: dev task optimization to reduce CPU/RAM load' clearly and concisely summarizes the main objective of the PR - optimizing the dev task to reduce resource consumption.
Description check ✅ Passed The PR description covers all key template sections: what the PR does, related tickets, key changes explaining the solution approach, performance improvements, and app-specific optimizations.
Linked Issues check ✅ Passed The PR successfully addresses issue #420 by eliminating per-package dev processes and replacing turbo dev with turbo watch dev, substantially reducing RAM and CPU usage as required.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/dev-task-optimizations

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 849b7ac and 47e9493.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (1)
  • apps/frontend/package.json (3 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next-intl 4.1.0 (and the version ^4.1.0 used in peerDependencies) works correctly with Next.js 16, despite general community concerns about partial compatibility.
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next-intl 4.1.0 (and the version ^4.1.0 used in peerDependencies) works correctly with Next.js 16, despite general community concerns about partial compatibility.

Applied to files:

  • apps/frontend/package.json
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, next-auth v5.0.0-beta.30 supports Next.js 16 through its peerDependencies range: "^14.0.0-0 || ^15.0.0 || ^16.0.0".

Applied to files:

  • apps/frontend/package.json
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.

Applied to files:

  • apps/frontend/package.json
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, the application does not use Next.js cache components (use cache/cacheComponents), so next-intl compatibility limitations related to those experimental features are not a concern.

Applied to files:

  • apps/frontend/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: deploy-preview
🔇 Additional comments (3)
apps/frontend/package.json (3)

7-7: ✅ Predev script with shx dependency now properly declared.

The predev script at line 7 uses shx rm to clean up the dev lock file, and shx is now correctly added to devDependencies (line 84). This resolves the prior critical issue and ensures reliable dev task startup. Based on learnings, this cleanup helps prevent stale locks when restarting the dev server.

Also applies to: 84-84


12-12: Verify lint script path pattern is appropriate for this app.

The lint script now includes a broader glob pattern "{src,apps,libs,test}/**/*.{ts,tsx}" and adds the --fix flag. Confirm that all these directories exist within the frontend app context, or consider narrowing the pattern to avoid eslint warnings about missing paths. (This is not blocking, as eslint simply skips non-existent directories, but it's worth clarifying intent.)


53-53: Next.js 16 and React 19.2 dependency versions align with PR objectives.

All framework and tooling versions have been properly updated:

  • next → 16.0.5, next-intl → ^4.5.6, react / react-dom → 19.2.0
  • @next/bundle-analyzer and eslint-config-next → 16.0.5

Per learnings, next-auth@5.0.0-beta.30 supports Next.js 16 (via peerDependencies "^14.0.0-0 || ^15.0.0 || ^16.0.0"), and next-intl is compatible since your app does not use use cache / cacheComponents. The upgrades align with the PR goal of reducing resource load via Next.js 16 optimizations.

Also applies to: 56-56, 57-57, 59-59, 66-66, 80-80


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.

@marcinkrasowski marcinkrasowski marked this pull request as ready for review December 3, 2025 10:48
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: 3

Caution

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

⚠️ Outside diff range comments (1)
apps/frontend/package.json (1)

43-44: Fix the package name mismatch in turbo.json build dependency.

The frontend build task references @o2s/api-harmonization#build (line 8), but the actual dependency in package.json is @o2s/utils.api-harmonization (line 43). Update the turbo.json build dependency to match the correct package name, or verify whether the build task should depend on a different package entirely.

🧹 Nitpick comments (1)
package.json (1)

24-26: Clean vs clean:output split is sensible for day-to-day dev

Having clean remove both node_modules and build artifacts, and clean:output only purge dist/.next/.turbo, gives a nice balance between “nuke from orbit” and a fast rebuild option. The double rimraf (workspaces + root) is a bit heavy but acceptable for occasionally-run scripts.

If you ever want to optimize further, consider installing rimraf as a devDependency and calling it directly (without npx) to avoid repeated downloads and slightly speed up these cleans.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a38e0b5 and 67f644f.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (55)
  • apps/api-harmonization/nest-cli.json (1 hunks)
  • apps/api-harmonization/package.json (2 hunks)
  • apps/api-harmonization/turbo.json (2 hunks)
  • apps/docs/package.json (1 hunks)
  • apps/frontend/.env.development (1 hunks)
  • apps/frontend/next.config.ts (2 hunks)
  • apps/frontend/package.json (2 hunks)
  • apps/frontend/src/proxy.ts (1 hunks)
  • apps/frontend/turbo.json (2 hunks)
  • package.json (2 hunks)
  • packages/blocks/article-list/package.json (2 hunks)
  • packages/blocks/article-search/package.json (2 hunks)
  • packages/blocks/article/package.json (2 hunks)
  • packages/blocks/category-list/package.json (2 hunks)
  • packages/blocks/category/package.json (2 hunks)
  • packages/blocks/faq/package.json (2 hunks)
  • packages/blocks/featured-service-list/package.json (2 hunks)
  • packages/blocks/invoice-list/package.json (2 hunks)
  • packages/blocks/notification-details/package.json (2 hunks)
  • packages/blocks/notification-list/package.json (2 hunks)
  • packages/blocks/order-details/package.json (2 hunks)
  • packages/blocks/order-list/package.json (2 hunks)
  • packages/blocks/orders-summary/package.json (2 hunks)
  • packages/blocks/payments-history/package.json (2 hunks)
  • packages/blocks/payments-summary/package.json (2 hunks)
  • packages/blocks/quick-links/package.json (2 hunks)
  • packages/blocks/service-details/package.json (2 hunks)
  • packages/blocks/service-list/package.json (2 hunks)
  • packages/blocks/surveyjs-form/package.json (2 hunks)
  • packages/blocks/ticket-details/package.json (2 hunks)
  • packages/blocks/ticket-list/package.json (2 hunks)
  • packages/blocks/ticket-recent/package.json (2 hunks)
  • packages/blocks/user-account/package.json (2 hunks)
  • packages/cli/create-o2s-app/package.json (1 hunks)
  • packages/configs/integrations/package.json (1 hunks)
  • packages/framework/package.json (1 hunks)
  • packages/framework/turbo.json (0 hunks)
  • packages/integrations/algolia/package.json (1 hunks)
  • packages/integrations/contentful-cms/package.json (2 hunks)
  • packages/integrations/medusajs/package.json (1 hunks)
  • packages/integrations/mocked/package.json (1 hunks)
  • packages/integrations/redis/package.json (1 hunks)
  • packages/integrations/strapi-cms/package.json (1 hunks)
  • packages/integrations/zendesk/package.json (1 hunks)
  • packages/modules/surveyjs/package.json (2 hunks)
  • packages/telemetry/package.json (1 hunks)
  • packages/ui/src/elements/avatar.tsx (1 hunks)
  • packages/ui/src/elements/badge-status.tsx (1 hunks)
  • packages/ui/src/elements/select.tsx (1 hunks)
  • packages/ui/src/elements/sheet.tsx (1 hunks)
  • packages/ui/src/elements/typography.tsx (1 hunks)
  • packages/utils/api-harmonization/package.json (1 hunks)
  • packages/utils/frontend/package.json (1 hunks)
  • packages/utils/logger/package.json (1 hunks)
  • turbo.json (2 hunks)
💤 Files with no reviewable changes (1)
  • packages/framework/turbo.json
🔇 Additional comments (63)
packages/blocks/invoice-list/package.json (1)

17-17: Build optimization and dependency updates align with PR objectives.

The addition of --preserveWatchOutput to the TypeScript build step and upgrade to Next.js 16.0.5 are consistent with the dev task optimization strategy. This pattern is replicated across multiple block packages.

Also applies to: 51-51

packages/blocks/article-search/package.json (1)

17-17: Build optimization and dependency updates consistent across block packages.

Also applies to: 53-53

packages/blocks/category-list/package.json (1)

17-17:

Also applies to: 51-51

apps/frontend/.env.development (1)

12-12: Verify the HTTPS→HTTP protocol change is intentional.

The NEXT_PUBLIC_BASE_URL changed from https://localhost:3000 to http://localhost:3000. While HTTP is conventional for localhost development, the original config used HTTPS, suggesting a deliberate secure setup. Confirm this change doesn't inadvertently weaken development environment security or break auth/cookie handling in Next.js 16.

packages/cli/create-o2s-app/package.json (1)

12-12: Verify build script consistency with other packages.

The build script differs from block packages: it omits --build tsconfig.json, using only tsc --preserveWatchOutput && tsc-alias. Confirm whether this variance is intentional (e.g., CLI-specific build strategy) or if the script should match the pattern used in other packages for consistency and build cache benefits.

packages/blocks/notification-details/package.json (1)

17-17:

Also applies to: 51-51

packages/ui/src/elements/sheet.tsx (1)

49-52: Formatting change; no functional impact.

The SheetContentProps interface extends clause is reformatted for consistency with other UI components. No behavioral or API changes.

packages/blocks/user-account/package.json (1)

17-17:

Also applies to: 51-51

packages/integrations/zendesk/package.json (1)

14-14: LGTM: Build script correctly updated for watch output preservation.

The addition of --preserveWatchOutput aligns with the PR's objective to optimize the dev workflow by delegating file watching to Turbopack while preserving TypeScript compiler output for incremental builds.

packages/integrations/redis/package.json (1)

14-14: LGTM: Build script optimized correctly.

The update to include --preserveWatchOutput follows the repo-wide pattern for watch output preservation during incremental builds.

apps/api-harmonization/package.json (2)

14-15: LGTM: Dev scripts correctly preserve watch output.

The --preserveWatchOutput flag added to both dev and debug scripts ensures TypeScript compiler output is preserved during watch mode, supporting the optimized dev workflow.


80-81: LGTM: SWC dependencies added for compiler migration.

The addition of @swc/cli and @swc/core aligns with the PR objective to switch api-harmonization to the SWC compiler (NestJS SWC recipe) for improved build performance.

packages/integrations/mocked/package.json (1)

21-21: LGTM: Build script updated for watch output preservation.

The addition of --preserveWatchOutput follows the repo-wide optimization pattern for incremental builds.

packages/blocks/category/package.json (1)

17-17: LGTM: Build script optimized correctly.

The addition of --preserveWatchOutput aligns with the repo-wide optimization pattern.

packages/integrations/medusajs/package.json (1)

13-13: LGTM: Build script optimized correctly.

The addition of --preserveWatchOutput follows the consistent pattern applied across the monorepo for watch output preservation.

apps/frontend/next.config.ts (1)

41-41: Verify awareness of experimental Turbopack filesystem caching stability.

turbopackFileSystemCacheForDev is a beta/experimental feature. Next.js documentation explicitly notes to "expect some stability issues" and recommends testing in development first. While enabling this optimization is acceptable, ensure the team is aware of potential caching instability and has a plan to monitor or disable if issues arise.

packages/configs/integrations/package.json (2)

14-14: LGTM on build script update.

The --preserveWatchOutput flag aligns with the PR's shift to turbo watch mode, ensuring incremental build output isn't cleared between rebuilds.


18-21: Dependency removal is intentional and complete.

The removed integrations (@o2s/integrations.strapi-cms and @o2s/integrations.zendesk) have no remaining references in the configs package, confirming this is a clean removal with no orphaned dependencies.

packages/utils/frontend/package.json (1)

14-17: LGTM on build workflow changes.

The removal of the dev script and addition of --preserveWatchOutput aligns with the PR's strategy of consolidating file watching under turbo watch.

packages/modules/surveyjs/package.json (2)

16-19: LGTM on build script update.

The --preserveWatchOutput flag and dev script removal are consistent with the PR's resource optimization strategy.


53-53: Confirm surveyjs module is compatible with Next.js 16.

The module already follows Next.js 16 best practices and patterns. The Survey component uses 'use client' for proper client-side rendering, dynamic imports from 'next/dynamic', and modern React 19 APIs (startTransition, useActionState). No deprecated synchronous Request APIs are used. With TypeScript ^5.9.3 already in place, the module requires only that consuming applications meet Node ≥20.9 environment requirements. No code changes needed for Next.js 16 compatibility.

packages/integrations/contentful-cms/package.json (1)

13-17: LGTM on build workflow changes.

The build script update and dev script removal follow the established pattern across the monorepo for this optimization PR.

packages/blocks/order-details/package.json (1)

16-19: LGTM on build and peer dependency updates.

The changes are consistent with the PR-wide optimization pattern. The Next.js peer dependency bump to ^16.0.5 matches other packages in this PR.

Also applies to: 51-51

packages/blocks/service-list/package.json (1)

16-19: LGTM on build and peer dependency updates.

Changes follow the established pattern for this optimization PR.

Also applies to: 51-51

packages/ui/src/elements/typography.tsx (1)

44-48: LGTM on formatting change.

This is a style-only reflow of the interface declaration with no semantic impact.

apps/api-harmonization/nest-cli.json (1)

5-8: LGTM on SWC builder configuration.

Switching to the SWC builder aligns with the PR's goal of faster startup times. SWC typically provides 10-20x faster compilation than tsc for NestJS projects. The required SWC dependencies (@swc/cli and @swc/core) are already present in the package.json.

packages/blocks/article/package.json (2)

51-51: Verify Next.js 16 compatibility and breaking changes.

The peer dependency for Next.js is being upgraded from ^15.4.7 to ^16.0.5, a major version bump. Ensure all code consuming Next.js features has been validated for compatibility and that the upgrade aligns with the app-specific optimizations mentioned in the PR (e.g., Turbopack File System Caching for frontend).


17-17: Verify TypeScript project references configuration for --build flag.

The build script now uses tsc --build tsconfig.json --preserveWatchOutput. The --build flag requires TypeScript project references to be defined in tsconfig.json. Confirm that the tsconfig.json for this package correctly defines project references; otherwise, the --build flag may be unnecessary or cause unexpected behavior.

packages/blocks/orders-summary/package.json (1)

51-51: Next.js 16 upgrade requires verification (see parallel comment in article package).

Same concern as packages/blocks/article/package.json regarding the Next.js ^16.0.5 upgrade—verify compatibility and validate changes for this block.

packages/framework/package.json (1)

14-14: Consistency check: Build script differs from block packages.

This package uses tsc --preserveWatchOutput && tsc-alias (without --build), whereas block packages use tsc --build tsconfig.json --preserveWatchOutput && tsc-alias. Confirm this inconsistency is intentional; it may indicate that only blocks use TypeScript project references, which is reasonable if true.

packages/ui/src/elements/select.tsx (1)

33-34: LGTM—cosmetic formatting adjustment.

The extends clause has been reformatted to a single line with no semantic changes. This aligns with formatting adjustments applied elsewhere in the PR.

packages/blocks/payments-summary/package.json (1)

51-51: Next.js 16 upgrade requires verification (see parallel comment in article package).

Same concern as packages/blocks/article/package.json regarding the Next.js ^16.0.5 upgrade—verify compatibility and validate changes for this block.

packages/integrations/algolia/package.json (1)

13-13: LGTM! Build script optimized for watch mode.

The addition of --preserveWatchOutput preserves TypeScript's incremental compilation state, which improves rebuild performance when using turbo watch. The removal of the dev script aligns with the PR's goal to consolidate watch processes and reduce resource usage.

apps/api-harmonization/turbo.json (1)

6-46: LGTM! Dev task properly configured for persistent watch mode.

The configuration correctly sets up the dev task as a persistent process with:

  • cache: false for development (appropriate since dev mode should always reflect latest changes)
  • persistent: true to keep the process running
  • dependsOn: ["^build"] to ensure dependencies are built first
  • Comprehensive environment variables required for the API harmonization runtime

This aligns with the PR objective to retain dev tasks only for api-harmonization, frontend, and docs.

packages/blocks/service-details/package.json (2)

17-17: LGTM! Build script optimized for watch mode.

The --preserveWatchOutput flag improves incremental rebuild performance when using turbo watch.


51-51: Verify Next.js 16 breaking changes compatibility.

Next.js 16.0.5 is stable, but introduces significant breaking changes from v15:

  • Async Request APIs (cookies, headers, draftMode, params/searchParams must be awaited)
  • Node.js 20.x+ and TypeScript 5+ requirement
  • Removed/deprecated legacy features and middleware patterns
  • Image defaults and framework configuration changes

Confirm this package's codebase is compatible with these changes before finalizing the upgrade. Use provided migration tools (@next/codemod, next typegen) if needed.

turbo.json (2)

3-4: LGTM! Core optimization changes to reduce resource usage.

The changes effectively address the PR objectives:

  • UI change to "tui": Provides a better terminal user interface experience
  • Concurrency reduction from 100 to 10: This is the key change to prevent spawning too many Node.js processes simultaneously, which was causing high CPU/RAM usage and OS instability

The 90% reduction in concurrency should significantly reduce resource usage during development.


8-8: Good addition of caching for build task.

Enabling cache: true for the build task improves performance by reusing cached build artifacts when inputs haven't changed.

packages/blocks/order-list/package.json (2)

17-17: LGTM! Build script optimized for watch mode.

Consistent with the repo-wide optimization to add --preserveWatchOutput for better incremental compilation performance.


51-51: Next.js version upgrade to 16.0.5.

This peer dependency upgrade is consistent across all block packages in the PR. Refer to the verification comment on service-details package for Next.js 16 compatibility check.

packages/blocks/ticket-recent/package.json (2)

17-17: LGTM! Build script optimized for watch mode.

Consistent repo-wide optimization.


51-51: Next.js version upgrade to 16.0.5.

Consistent with other block packages in the PR.

packages/blocks/quick-links/package.json (2)

17-17: LGTM! Build script optimized for watch mode.

Consistent repo-wide optimization for incremental compilation.


51-51: Next.js version upgrade to 16.0.5.

Consistent with other block packages in the PR.

apps/frontend/src/proxy.ts (1)

8-8: This review comment is incorrect — the file was newly created, not renamed.

The git history shows that apps/frontend/src/proxy.ts was added as a new file in commit 67f644f with the export function proxy from the start. There was no prior middleware function that was renamed. Therefore, there are no stale imports to update, and no breaking change to address.

Likely an incorrect or invalid review comment.

packages/blocks/article-list/package.json (1)

16-20: Build script and Next peer bump align with the new dev model

Using tsc --build tsconfig.json --preserveWatchOutput && tsc-alias is consistent with moving watch responsibility to Turborepo and should behave the same as the previous non-watch build while avoiding per-package long‑running processes. Bumping next to ^16.0.5 keeps this block in lockstep with the app, assuming the consuming Next app has already been upgraded and the block has been smoke‑tested under Next 16.

Please double‑check that at least one consumer app builds and runs with this block after the Next 16 upgrade and new dev pipeline.

Also applies to: 40-52

packages/blocks/payments-history/package.json (1)

16-20: Consistent build script and Next peer update

This package follows the same build command and next peer bump pattern as other blocks, which keeps the dev/build behavior uniform across the monorepo and avoids extra dev watchers in this package.

Please confirm Payments History still compiles and renders correctly in a Next 16 consumer app along with the other upgraded blocks.

Also applies to: 40-52

packages/blocks/surveyjs-form/package.json (1)

16-20: Good: local TS watch removed in favor of central Turborepo watch

Switching from a long‑running tsc -w/tsc-alias -w combo to a one‑shot tsc --build ... && tsc-alias fits the new turbo watch‑driven dev flow and should significantly reduce background Node processes. The Next peer bump to ^16.0.5 keeps this block aligned with the rest of the workspace.

Given the extra SurveyJS integration, it’s worth doing a quick manual form render/submit in a Next 16 dev run to confirm nothing regressed with the new dev/build wiring.

Also applies to: 43-55

packages/utils/logger/package.json (1)

13-17: Logger build script change is behaviorally equivalent

Updating the logger build to tsc --preserveWatchOutput && tsc-alias keeps the same build semantics as before (just a watch‑friendly TS flag) and doesn’t affect runtime behavior of the logger package.

Please run npm run build for @o2s/utils.logger (or ensure CI covers it) to confirm there’s no tsconfig/emit mismatch after the flag tweak.

packages/blocks/featured-service-list/package.json (1)

16-20: Featured-service-list matches the standardized block setup

The updated build command and next peer version mirror the rest of the blocks, which is good for keeping dev/build behavior predictable across packages and avoiding stray dev processes in this block.

As with the other blocks, please validate at least one page or story that uses @o2s/blocks.featured-service-list under Next 16 to catch any subtle compatibility issues.

Also applies to: 40-52

packages/ui/src/elements/badge-status.tsx (1)

21-23: BadgeStatus type formatting-only change

This is a cosmetic reformat of BadgeStatusProps with no impact on the component’s props shape or behavior.

packages/ui/src/elements/avatar.tsx (1)

45-48: AvatarFallbackProps reformat is safe

The single-line extends refactor preserves the exact same prop composition for AvatarFallback and doesn’t affect how the component is consumed.

package.json (1)

4-8: Dev/predev wiring matches Turborepo’s watch-mode recommendations

Swapping dev to turbo watch dev plus introducing a predev that runs turbo build (auto-invoked by npm run dev) is a solid way to centralize file watching in Turborepo while keeping long‑running dev servers persistent and letting build tasks re-run on dependency changes. This should directly address the “too many Node processes” issue while preserving dependency-aware rebuilds. (turborepo.com)

Please confirm:

  • turbo.json marks dev tasks as persistent: true and wires dependsOn: ["^build"] (or equivalent), and
  • npm run dev -- --filter=<app> still behaves as expected for apps like frontend and api-harmonization.
packages/blocks/ticket-list/package.json (2)

17-17: Build script update is appropriate for the optimization strategy.

Adding --preserveWatchOutput to the tsc build command prevents terminal clearing during watch mode, which is essential when running concurrent TypeScript compilers in the monorepo under Turbopack's orchestration.


51-51: Verify Next.js 16.0.5 compatibility across consumers of this block.

Next.js 16 requires React 19.2, but this block's peerDependencies do not declare a React version constraint. Ensure consumers (e.g., frontend app) supply compatible React versions. Next.js 16 also requires Node.js ≥20.9.0 and TypeScript ≥5.1.0—verify the monorepo's root constraints are updated accordingly.

packages/blocks/faq/package.json (1)

17-17: Build script update is aligned with optimization strategy.

Consistent with ticket-list package, the --preserveWatchOutput flag enables harmonized watch behavior across the monorepo.

packages/blocks/ticket-details/package.json (1)

17-17: Build script update continues the consistent pattern across blocks.

apps/frontend/turbo.json (2)

6-10: Verify the build dependency on @o2s/api-harmonization aligns with package.json changes.

The turbo build task explicitly depends on @o2s/api-harmonization#build, yet the subsequent file (apps/frontend/package.json) removes @o2s/api-harmonization from runtime dependencies. Clarify whether this build-time dependency is intentional (e.g., for type generation or build-time codegen) and document it, or align the two configurations.


11-35: Dev task configuration looks appropriate for the optimization strategy.

The new dev task correctly marks itself as persistent, disables caching, and depends on dependency builds. The environment variable list supports the application's configuration needs. Verify that the root turbo.json has been updated to reduce max concurrent tasks from 100 to 10 (as stated in PR objectives) to complete the resource optimization.

packages/blocks/notification-list/package.json (1)

17-17: Build script update is consistent with the monorepo pattern.

apps/frontend/package.json (3)

50-56: Verify the transition from caret to exact versioning aligns with monorepo strategy.

React and Next.js dependencies are pinned to exact versions (19.2.0, 16.0.5), while other packages in the monorepo use caret ranges (^15.4.7 for Next.js in blocks). This mixing of exact and caret versions can complicate dependency resolution. Document whether exact pinning is intentional for reproducibility, and ensure package managers handle transitive dependencies correctly.


85-88: Manifest overrides may mask dependency resolution issues in the monorepo.

The overrides section explicitly forces @types/react@19.2.7 and @types/react-dom@19.2.3 globally. While this ensures consistency in the frontend app, it can mask nested dependency conflicts if other packages request incompatible @types versions. Ensure block packages' peer dependency constraints are compatible with these overrides.


63-63: Verify Next.js 16 and TypeScript versions meet minimum requirements.

Next.js 16 requires Node.js ≥20.9.0 and TypeScript ≥5.1.0. Confirm that the monorepo's root package.json, CI/CD, and developer setup enforce these minimum versions to prevent compatibility issues across the team and CI pipelines.

Also applies to: 72-72, 77-77

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

🧹 Nitpick comments (1)
turbo/generators/templates/block/package.hbs (1)

17-39: Block template dev script may reintroduce per‑package watchers (and depends on newer tooling versions)

This template still scaffolds a dev script that runs tsc --build ... -w and tsc-alias -w via concurrently, which will spin up per‑block watcher processes. That seems at odds with this PR’s goal of centralizing dev watching via turbo watch dev and avoiding a Node process per package.

Consider either:

  • Dropping or de‑emphasizing this per‑package dev script in the template, or
  • Reworking it so new blocks plug into the shared dev workflow instead of starting their own long‑lived watchers, which would gradually undo the optimization as more blocks are added.

The updated devDependency versions (dotenv-cli, concurrently, eslint, prettier, typescript) look fine at a glance, but please double‑check they match your intended Node/toolchain baseline and that internal presets (@o2s/*-config) are known to support these versions.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 67f644f and 07b062e.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (25)
  • apps/api-harmonization/package.json (2 hunks)
  • apps/docs/package.json (1 hunks)
  • apps/frontend/next.config.ts (2 hunks)
  • apps/frontend/package.json (2 hunks)
  • packages/blocks/article-list/package.json (2 hunks)
  • packages/blocks/article-search/package.json (2 hunks)
  • packages/blocks/article/package.json (2 hunks)
  • packages/blocks/category-list/package.json (2 hunks)
  • packages/blocks/category/package.json (2 hunks)
  • packages/blocks/faq/package.json (2 hunks)
  • packages/blocks/invoice-list/package.json (2 hunks)
  • packages/blocks/notification-list/package.json (2 hunks)
  • packages/blocks/notification-summary/package.json (1 hunks)
  • packages/blocks/order-list/package.json (2 hunks)
  • packages/blocks/quick-links/package.json (2 hunks)
  • packages/blocks/ticket-list/package.json (2 hunks)
  • packages/blocks/ticket-summary/package.json (1 hunks)
  • packages/configs/integrations/package.json (1 hunks)
  • packages/framework/package.json (1 hunks)
  • packages/integrations/contentful-cms/package.json (2 hunks)
  • packages/integrations/mocked/package.json (1 hunks)
  • packages/integrations/strapi-cms/package.json (1 hunks)
  • packages/integrations/zendesk/package.json (1 hunks)
  • packages/utils/logger/package.json (1 hunks)
  • turbo/generators/templates/block/package.hbs (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • apps/docs/package.json
🚧 Files skipped from review as they are similar to previous changes (10)
  • apps/frontend/next.config.ts
  • packages/blocks/category/package.json
  • packages/blocks/invoice-list/package.json
  • packages/blocks/faq/package.json
  • packages/integrations/strapi-cms/package.json
  • packages/utils/logger/package.json
  • packages/integrations/contentful-cms/package.json
  • packages/integrations/mocked/package.json
  • packages/blocks/article-list/package.json
  • packages/blocks/article/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: deploy-preview
🔇 Additional comments (32)
packages/blocks/ticket-summary/package.json (3)

17-17: Verify whether the dev script should be removed per PR objectives.

Per the PR objectives, the per-package dev task was removed for all packages except api-harmonization, frontend, and docs. This package (blocks/ticket-summary) is not in that exceptions list. If the PR intent is to remove individual dev scripts from all other packages, this script should be removed.

Can you clarify whether this script should be removed to align with the stated PR objectives?


18-18: Resolve tsc flag discrepancy with AI summary.

The AI summary states that "build scripts now use tsc --preserveWatchOutput + tsc-alias", but Line 18 uses tsc --build instead of tsc --preserveWatchOutput. Verify whether --build is the correct flag or whether --preserveWatchOutput should be used.


52-52: Next.js v16 peer dependency update aligns with PR objectives.

The upgrade from ^15.3.2 to ^16.0.5 is consistent with the repo-wide Next.js v16 upgrade mentioned in the PR summary. This package's dependencies (React 19, Tailwind 4) are compatible with Next.js 16.

packages/blocks/notification-list/package.json (2)

17-17: Build script change aligns with optimization strategy.

Adding --preserveWatchOutput to the tsc command supports the shift to turbo watch dev by preserving TypeScript watch mode output during incremental builds. This change is consistent with the PR's goal to reduce resource usage through efficient file watching.


51-51: Verify Next.js v16 peer dependency bump is intentional and necessary.

The peer dependency upgrade from ^15.4.7 to ^16.0.5 is a breaking change for consumers. While the PR mentions Next.js v16 adoption for the frontend package, this change applies the upgrade to a block component, which may be consumed by projects still on v15. Clarify whether:

  1. This upgrade is required for this block's functionality or part of enforced monorepo alignment.
  2. Consumers of this block should expect to upgrade their Next.js version.
  3. Whether a major version constraint bump is appropriate for a peer dependency, given backward compatibility concerns.

If this upgrade is intentional across all block packages, consider documenting the migration path in the promised migration guide (TODO in PR description) to help consumers transition.

packages/blocks/notification-summary/package.json (3)

16-21: Verify dev script alignment with PR objectives.

Per the PR objectives, the per-package dev task should be removed for all packages except api-harmonization, frontend, and docs. This package (@o2s/blocks.notification-summary) is not one of the three exceptions, so the dev script at line 17 appears inconsistent with the stated optimization goals.

Confirm whether this package should:

  • Retain the dev script for local development workflows, or
  • Follow the monorepo-wide removal pattern.

If retention is intentional, clarify the rationale in the PR description.


18-18: Verify --preserveWatchOutput flag in build script.

The AI summary mentions that build scripts should use tsc --preserveWatchOutput + tsc-alias, but the build script at line 18 does not include the --preserveWatchOutput flag. This flag preserves watch-mode output between incremental rebuilds, which may be important for the optimization.

Confirm whether this flag should be added:

-"build": "tsc --build tsconfig.json && tsc-alias",
+"build": "tsc --build --preserveWatchOutput tsconfig.json && tsc-alias",

52-52: Verify Next.js v16 compatibility.

The Next.js peer dependency is upgraded from ^15.3.2 to ^16.0.5, a major version bump. While this aligns with the PR objectives for blocks packages, ensure that:

  • All exports and imports in src are compatible with Next.js v16 APIs.
  • No breaking changes from v15 → v16 affect the block's functionality.
  • The block has been tested against Next.js v16.

Consider running the block's tests or integration tests to confirm compatibility.

packages/blocks/article-search/package.json (2)

17-17: Build script optimization aligns with resource-efficiency goals.

The addition of --preserveWatchOutput to the tsc build command is a sound optimization that reduces unnecessary disk I/O during rebuilds, directly supporting the PR's objective to cut CPU/RAM load. The tsc-alias chaining afterward is appropriate for maintaining TypeScript path aliasing in the compiled output.


53-53: Next.js peer dependency upgraded to v16.

The bump from ^15.4.7 to ^16.0.5 is intentional per the PR objectives and mirrors changes across other block packages (faq, order-list, notification-list, etc.). As a peer dependency, this declares support for Next.js 16 without imposing it on consumers. Given the PR context indicates broad testing and validation, this upgrade appears deliberate and validated.

Please verify that no consumers of this package's exports (via api-harmonization, frontend, sdk, or client entry points) rely on Next.js 15 specific behavior that would break with this upgrade.

packages/framework/package.json (2)

13-18: Removal of dev script aligns with PR objectives.

The dev script has been removed from this package, which is correct per the PR strategy—only api-harmonization, frontend, and docs retain dev scripts. This change supports the goal of reducing resource usage by delegating file watching to Turbopack via turbo watch dev.


14-14: Verify --preserveWatchOutput flag semantics in the new workflow.

The build script now includes --preserveWatchOutput, which is typically a TypeScript watch-mode flag used to preserve console output. Using it in a regular build context (outside of watch mode) is unusual and needs clarification.

  • Concern: Does --preserveWatchOutput have any effect or is it a no-op when TypeScript runs in regular (non-watch) build mode?
  • Context needed: How does turbo watch dev invoke this build script, and is the flag appropriate in that context?
  • Verification: Confirm the flag behaves as intended in the new turbo watch dev workflow.

Please verify that --preserveWatchOutput is the correct approach by checking:

  1. TypeScript documentation for the flag's behavior in non-watch contexts
  2. How Turbopack/turbo watch dev invokes the build script and whether the flag produces the intended behavior

Alternatively, if this is a coordinated change across the repo, link to any internal documentation or design decisions that explain why this flag is used in build scripts.

packages/blocks/order-list/package.json (3)

17-17: Build script optimization aligns with turbo watch strategy.

The --preserveWatchOutput flag enables Turbopack to watch files and run builds on demand, eliminating the need for a per-package dev task. This is consistent with the PR's goal to reduce persistent Node processes.


51-51: Verify Next.js 16 compatibility for this block package.

The peer dependency is bumped from v15 to v16—a major version upgrade. Since this is a shared UI block, confirm:

  1. No breaking changes in Next.js 16 affect the exports or rendering logic in this package.
  2. All consuming packages (especially those not explicitly upgraded in this PR) support the ^16.0.5 constraint.

Consider running the test suite to validate compatibility.


16-20: Dev script removal is consistent with PR objectives.

Removing the dev script aligns with the PR's goal to eliminate per-package Node processes. This package will rely on turbo watch from the monorepo root instead.

packages/integrations/zendesk/package.json (1)

14-14: Verify the --preserveWatchOutput flag is correct and the intent is achieved.

The build script has been changed to include --preserveWatchOutput on the tsc invocation. Please verify that:

  1. This is the correct TypeScript flag for the intended behavior (file watching with preserved output in turbo watch mode).
  2. The flag chains correctly with tsc-alias and does not introduce side effects (e.g., does it affect incremental build caching or output directory structure?).

Per the PR objectives, this change is part of a shift to delegate file watching to Turbopack via turbo watch dev. Please confirm this flag supports that workflow.

What does the --preserveWatchOutput flag do in TypeScript compiler?
packages/blocks/ticket-list/package.json (3)

17-17: Build script flag addition aligns with watch-mode workflow.

The --preserveWatchOutput flag correctly preserves TypeScript's console output during incremental builds when used with turbo watch dev, supporting the PR's objective to replace turbo dev with watch-based execution.


34-34: Verify concurrently dependency is still required.

The dev script (which likely used concurrently to run tsc and tsc-alias in watch mode) has been removed per the PR's optimization objective. Confirm that concurrently is not used elsewhere in this package or consider removing it from devDependencies to reduce installation footprint.

#!/bin/bash
# Verify concurrently usage in packages/blocks/ticket-list
rg -n "concurrently" packages/blocks/ticket-list/ --type json --type ts --type js -g '!node_modules'

51-51: Confirm Next.js 16 breaking changes are handled across all consuming code.

The Next.js peer dependency is bumped from ^15.4.7 to ^16.0.5 across all 24 block packages, indicating an intentional, coordinated upgrade. Next.js 16 introduces significant breaking changes that will require updates:

  • Async Request APIs: cookies(), headers(), draftMode(), params, and searchParams must now be awaited in layouts, pages, and route handlers
  • Removed features: AMP support, serverRuntimeConfig/publicRuntimeConfig, legacy next/legacy/image imports
  • Middleware: middleware.ts replaced with proxy.ts using a new proxy model
  • Build tools: Turbopack is now the default bundler; next lint command removed
  • Environment requirements: Node.js >= 20.9.0 and TypeScript >= 5.1 are now required
  • API changes: revalidateTag() signature changes, images.domainsimages.remotePatterns

Verify that:

  • All blocks and consuming applications have updated their code to handle async Request APIs
  • Build tooling and CI/CD pipelines support the new Node.js and TypeScript minimums
  • Any custom middleware configurations have been migrated to the new proxy model
  • Image configuration (if used) has been updated from domains to remotePatterns
apps/api-harmonization/package.json (2)

14-15: Approved: preserveWatchOutput flag reduces verbosity during watch mode.

The addition of --preserveWatchOutput to both dev and debug scripts aligns with the PR objective to reduce output noise and memory overhead during development, supporting the resource optimization goals.


82-83: SWC configuration is properly set up and compatible with NestJS 11.1.9.

The nest-cli.json file correctly configures "builder": "swc", and the specified SWC versions (@swc/cli@^0.7.9, @swc/core@^1.15.3) are compatible with NestJS 11.1.9. No known compatibility issues or breaking changes exist with these versions.

packages/blocks/category-list/package.json (3)

17-17: Verify TypeScript version supports --preserveWatchOutput.

The --preserveWatchOutput flag is used to preserve build output in watch mode, preventing unnecessary rebuilds when using turbo watch dev. However, this flag is only available in TypeScript 5.5+.

#!/bin/bash
# Description: Verify TypeScript version supports --preserveWatchOutput flag

# Check the TypeScript version defined in the devDependencies
rg -A 1 "typescript" packages/blocks/category-list/package.json

16-20: No action needed—dev script removal is correct for this package.

The category-list package correctly has no dev script. Only api-harmonization and frontend (exception packages) retain dev scripts as per the PR objectives. This package is not in the exception list and the removal is consistent with the PR changes.


51-51: Verify Next.js v16 compatibility with peer dependencies.

The Next.js peer dependency is being upgraded from ^15.4.7 to ^16.0.5. While this is intentional per the PR objectives to enable Turbopack improvements, verify that all peer dependencies in this file are compatible with Next.js 16 and that the block's code doesn't rely on APIs that changed between versions.

What are the major breaking changes in Next.js 16 compared to Next.js 15?
turbo/generators/templates/block/package.hbs (1)

41-54: Peer dependency bumps (NestJS/Next.js) look consistent; verify generator output against these versions

Updating the block template’s peerDeps to @nestjs/axios ^4.0.1, @nestjs/common ^11.0.16, and next ^16.0.5 aligns with the repo‑wide upgrades described in the PR summary. From the template alone there’s no obvious mismatch (e.g., @nestjs/core is already ^11).

Please still verify that:

  • The generated block skeleton (Nest modules, HTTP clients, Next integration points) is compatible with these specific versions, and
  • The minimal Next/Nest versions for consuming apps are documented somewhere so blocks don’t get installed into projects on older majors by accident.

If you’ve already run the generator and smoke‑tested a freshly generated block against the upgraded apps, this looks good to merge.

apps/frontend/package.json (4)

15-46: Verify dependency removal: inconsistency with AI-generated summary.

The AI summary states that @o2s/api-harmonization was removed, but this dependency is not clearly visible in the provided annotated code. However, line 45 still contains "@o2s/utils.api-harmonization": "*", which remains unchanged.

Confirm whether @o2s/api-harmonization (distinct from @o2s/utils.api-harmonization) was actually removed as part of this PR, or if the AI summary is inaccurate. If it was removed, ensure no frontend code references it; if it wasn't, clarify the status.

#!/bin/bash
# Check if @o2s/api-harmonization exists and is referenced

echo "=== Checking for @o2s/api-harmonization references ==="
rg '@o2s/api-harmonization' apps/frontend --type json --type ts --type tsx --type js --type jsx -C 2 || echo "No references found"

echo -e "\n=== Checking git diff for actual removals ==="
git diff HEAD~1 apps/frontend/package.json | grep -A 2 -B 2 'api-harmonization' || echo "No removals in git diff"

6-8: Turbopack FS Caching is already properly configured.

The next.config.ts correctly enables turbopackFileSystemCacheForDev: true in the experimental configuration (line 37), which complements the --turbopack flag in the dev script. The frontend is already aligned with the PR's resource optimization objectives. No changes needed.


74-74: Type definition pinning strategy is appropriate and compatible.

Pinned versions @types/react@19.2.7 and @types/react-dom@19.2.3 are fully compatible with react@19.2.0 and react-dom@19.2.0. All workspace packages declare only loose peerDependencies (^19), so the pinned versions safely satisfy these constraints. The overrides section provides necessary transitive dependency control without creating conflicts, ensuring deterministic type definitions across the monorepo.


56-56: Exact version pinning for React 19.2.0 is not a security concern.

React 19.2.0 is the latest patch release (as of October 2025) with no known CVEs in the core package. Removing the caret does not block any available security updates. While exact pinning may reduce flexibility compared to a caret range, it does not prevent critical patches from being applied.

Also applies to: 58-58

Likely an incorrect or invalid review comment.

packages/configs/integrations/package.json (2)

18-21: Removal of strapi-cms and zendesk integrations is verified as safe.

No references to @o2s/integrations.strapi-cms or @o2s/integrations.zendesk exist in the codebase. The reduction to only @o2s/integrations.mocked is intentional, and no downstream packages depend on the removed integrations.


14-14: Remove the --preserveWatchOutput flag from the build script; it has no effect in non-watch mode.

The --preserveWatchOutput flag is a valid TypeScript compiler option, but it only applies when using --watch mode for incremental compilation to prevent console clearing between rebuilds. Since the build script uses one-time compilation (no --watch), this flag has no purpose and should be removed. The corrected build script should be "tsc && tsc-alias".

Likely an incorrect or invalid review comment.

packages/blocks/quick-links/package.json (1)

16-20: Build script correctly updated for Turbopack watch-based workflow.

The addition of --preserveWatchOutput to the TypeScript build command aligns with the PR's shift from per-package dev watchers to Turbopack file watching. The removal of this package's dev script is also correct, as quick-links is not in the exception list (api-harmonization, frontend, docs).

Please confirm that the --preserveWatchOutput flag is available and working correctly in TypeScript 5.9.3, and that this change doesn't introduce unexpected side effects in the watch/rebuild pipeline.

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)
package.json (1)

24-25: Clarify intent of dual rimraf invocations in clean and clean:output scripts.

Both scripts execute rimraf twice:

  1. Via npm exec --workspaces -- rimraf ... (runs in each workspace)
  2. Directly at the root level rimraf ...

If the intent is to clean workspace-scoped artifacts (e.g., dist, .next in each package) and then root-level artifacts, this is clear. However, the pattern appears redundant since npm exec --workspaces should handle both. Consider simplifying or documenting the reasoning if the dual invocation is intentional.

If you intend to clean only the root-level artifacts, remove the npm exec --workspaces invocation:

-"clean": "npm exec --workspaces -- rimraf node_modules dist .next .turbo && rimraf node_modules dist .next .turbo",
+"clean": "rimraf node_modules dist .next .turbo",

-"clean:output": "npm exec --workspaces -- rimraf dist .next .turbo && rimraf dist .next .turbo"
+"clean:output": "rimraf dist .next .turbo"

Alternatively, if you intend to clean workspace artifacts separately, document the rationale inline or in a comment.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 07b062e and d1917c8.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (2)
  • package.json (3 hunks)
  • turbo/generators/templates/block/package.hbs (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • turbo/generators/templates/block/package.hbs
⏰ 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: deploy-preview
🔇 Additional comments (2)
package.json (2)

6-7: Verify the predev workflow and Turbo filter syntax.

The predev script uses filter syntax -F=!{./apps/*} -F=!{./packages/cli/*} to exclude packages from the build phase. However:

  1. This filter syntax needs verification for Turbo 2.6.1 compatibility (e.g., is the negation pattern correct, or should it use a different syntax like --filter=!...?).
  2. The dev script does not automatically invoke predev, which means users must manually run npm run predev && npm run dev or remember to run these separately. This creates a two-step developer workflow that may not be obvious, especially for new contributors.
  3. The turbo watch dev command needs verification to confirm it works correctly when packages haven't been pre-built.

Recommendations:

  • Either integrate predev into the dev script (e.g., "dev": "npm run predev && turbo watch dev") to ensure a seamless one-command workflow, or document this requirement clearly in a migration guide (aligns with the PR TODO about adding a migration guide).
  • Verify the Turbo filter syntax against Turbo 2.6.1 documentation and test it locally.

20-20: LGTM — direct invocation of npm-check-updates.

Removing the npx prefix and calling npm-check-updates directly (now a devDependency) is a good practice. It improves consistency and avoids the overhead of spawning npx.

@vercel
Copy link

vercel bot commented Dec 3, 2025

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

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
o2s-docs Skipped Skipped Dec 3, 2025 2:42pm

@vercel vercel bot temporarily deployed to Preview – o2s-docs December 3, 2025 12:59 Inactive
@vercel vercel bot requested a deployment to Preview – o2s-docs December 3, 2025 14:31 Abandoned
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: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 327606a and 2439aec.

📒 Files selected for processing (1)
  • apps/frontend/package.json (3 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, next-auth v5.0.0-beta.30 supports Next.js 16 through its peerDependencies range: "^14.0.0-0 || ^15.0.0 || ^16.0.0".

Applied to files:

  • apps/frontend/package.json
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next-intl 4.1.0 (and the version ^4.1.0 used in peerDependencies) works correctly with Next.js 16, despite general community concerns about partial compatibility.

Applied to files:

  • apps/frontend/package.json
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.

Applied to files:

  • apps/frontend/package.json
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, the application does not use Next.js cache components (use cache/cacheComponents), so next-intl compatibility limitations related to those experimental features are not a concern.

Applied to files:

  • apps/frontend/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: deploy-preview
🔇 Additional comments (1)
apps/frontend/package.json (1)

12-12: No action needed. ESLint is properly configured with Next.js-specific rules through @o2s/eslint-config/frontend, which includes @next/eslint-plugin-next with both recommended and core-web-vitals rule sets. The switch from next lint to the flat config format is correct.

Likely an incorrect or invalid review comment.

@vercel vercel bot temporarily deployed to Preview – o2s-docs December 3, 2025 14:39 Inactive
@vercel vercel bot temporarily deployed to Preview – o2s-docs December 3, 2025 14:42 Inactive
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

♻️ Duplicate comments (2)
apps/frontend/package.json (2)

75-75: Unresolved: Redundant @types pinning in both devDependencies and overrides.

This issue was flagged in a previous review. Lines 75 and 77 pin @types/react (19.2.7) and @types/react-dom (19.2.3) in devDependencies, duplicating the identical versions in overrides (lines 89–90). In npm workspaces, overrides alone enforces these versions across transitive dependencies, making the devDependencies pins redundant. Remove them from devDependencies to clarify intent.

 "devDependencies": {
   "@next/bundle-analyzer": "16.0.5",
   "@o2s/eslint-config": "*",
   "@o2s/prettier-config": "*",
   "@o2s/typescript-config": "*",
   "@svgr/webpack": "^8.1.0",
   "@trivago/prettier-plugin-sort-imports": "^6.0.0",
   "@turbo/gen": "^2.6.1",
   "@types/bcryptjs": "^3.0.0",
   "@types/node": "^24.10.1",
-  "@types/react": "19.2.7",
   "@types/react-autosuggest": "^10.1.11",
-  "@types/react-dom": "19.2.3",
   "dotenv": "^17.2.3",
   "eslint": "^9.39.1",
   "eslint-config-next": "16.0.5",

Also applies to: 77-77, 88-91


7-7: Unresolved: predev script requires shx in devDependencies.

This issue was flagged in a previous review. The predev script uses shx rm but shx is not listed in devDependencies, causing the script to fail. Add shx to devDependencies to resolve.

 "devDependencies": {
+    "shx": "^0.3.4",
     "@next/bundle-analyzer": "16.0.5",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2439aec and 849b7ac.

📒 Files selected for processing (32)
  • apps/frontend/package.json (3 hunks)
  • packages/blocks/article-list/package.json (2 hunks)
  • packages/blocks/article-search/package.json (2 hunks)
  • packages/blocks/article/package.json (2 hunks)
  • packages/blocks/category-list/package.json (2 hunks)
  • packages/blocks/category/package.json (2 hunks)
  • packages/blocks/faq/package.json (2 hunks)
  • packages/blocks/featured-service-list/package.json (2 hunks)
  • packages/blocks/invoice-list/package.json (2 hunks)
  • packages/blocks/notification-details/package.json (2 hunks)
  • packages/blocks/notification-list/package.json (2 hunks)
  • packages/blocks/notification-summary/package.json (2 hunks)
  • packages/blocks/order-details/package.json (2 hunks)
  • packages/blocks/order-list/package.json (2 hunks)
  • packages/blocks/orders-summary/package.json (2 hunks)
  • packages/blocks/payments-history/package.json (2 hunks)
  • packages/blocks/payments-summary/package.json (2 hunks)
  • packages/blocks/quick-links/package.json (2 hunks)
  • packages/blocks/service-details/package.json (2 hunks)
  • packages/blocks/service-list/package.json (2 hunks)
  • packages/blocks/surveyjs-form/package.json (2 hunks)
  • packages/blocks/ticket-details/package.json (2 hunks)
  • packages/blocks/ticket-list/package.json (2 hunks)
  • packages/blocks/ticket-recent/package.json (2 hunks)
  • packages/blocks/ticket-summary/package.json (2 hunks)
  • packages/blocks/user-account/package.json (2 hunks)
  • packages/configs/integrations/package.json (1 hunks)
  • packages/integrations/contentful-cms/package.json (2 hunks)
  • packages/integrations/strapi-cms/package.json (1 hunks)
  • packages/modules/surveyjs/package.json (2 hunks)
  • packages/utils/api-harmonization/package.json (1 hunks)
  • packages/utils/frontend/package.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (20)
  • packages/blocks/order-details/package.json
  • packages/blocks/category/package.json
  • packages/utils/api-harmonization/package.json
  • packages/utils/frontend/package.json
  • packages/blocks/order-list/package.json
  • packages/blocks/invoice-list/package.json
  • packages/blocks/notification-details/package.json
  • packages/blocks/user-account/package.json
  • packages/blocks/ticket-recent/package.json
  • packages/blocks/category-list/package.json
  • packages/blocks/service-details/package.json
  • packages/blocks/featured-service-list/package.json
  • packages/blocks/ticket-details/package.json
  • packages/blocks/payments-summary/package.json
  • packages/blocks/faq/package.json
  • packages/blocks/article-list/package.json
  • packages/blocks/surveyjs-form/package.json
  • packages/blocks/payments-history/package.json
  • packages/blocks/orders-summary/package.json
  • packages/blocks/service-list/package.json
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next-intl 4.1.0 (and the version ^4.1.0 used in peerDependencies) works correctly with Next.js 16, despite general community concerns about partial compatibility.

Applied to files:

  • packages/blocks/ticket-list/package.json
  • packages/blocks/notification-summary/package.json
  • packages/blocks/quick-links/package.json
  • packages/blocks/ticket-summary/package.json
  • packages/modules/surveyjs/package.json
  • packages/blocks/article/package.json
  • packages/blocks/notification-list/package.json
  • apps/frontend/package.json
  • packages/blocks/article-search/package.json
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, next-auth v5.0.0-beta.30 supports Next.js 16 through its peerDependencies range: "^14.0.0-0 || ^15.0.0 || ^16.0.0".

Applied to files:

  • packages/blocks/ticket-list/package.json
  • packages/blocks/notification-summary/package.json
  • packages/blocks/quick-links/package.json
  • packages/blocks/ticket-summary/package.json
  • packages/modules/surveyjs/package.json
  • packages/blocks/article/package.json
  • packages/blocks/notification-list/package.json
  • apps/frontend/package.json
  • packages/blocks/article-search/package.json
📚 Learning: 2025-12-03T14:01:47.507Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: packages/blocks/quick-links/package.json:51-51
Timestamp: 2025-12-03T14:01:47.507Z
Learning: In the openselfservice repository, next/bundle-analyzer does not support Turbopack yet (as of PR #419), but this is acceptable since it's a development tool and doesn't block core functionality.

Applied to files:

  • packages/blocks/quick-links/package.json
  • apps/frontend/package.json
📚 Learning: 2025-12-03T12:34:20.684Z
Learnt from: marcinkrasowski
Repo: o2sdev/openselfservice PR: 419
File: apps/frontend/package.json:52-52
Timestamp: 2025-12-03T12:34:20.684Z
Learning: In the openselfservice repository, the application does not use Next.js cache components (use cache/cacheComponents), so next-intl compatibility limitations related to those experimental features are not a concern.

Applied to files:

  • packages/blocks/quick-links/package.json
  • apps/frontend/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: deploy-preview
🔇 Additional comments (34)
packages/blocks/notification-summary/package.json (3)

17-17: Verify that the dev script should be retained for this package.

Per the PR objectives, the per-package dev task was removed for all packages except api-harmonization, frontend, and docs to reduce CPU/RAM load. This package (@o2s/blocks.notification-summary) is a block package and does not appear to be among the three exceptions.

Confirm whether this dev script should be removed to align with the PR's optimization goal of eliminating unnecessary Node.js processes.


19-19: Lint script appropriately expanded to include TSX files.

The expansion from *.ts to *.{ts,tsx} aligns with the broader codebase standardization mentioned in the PR and is a sensible improvement for comprehensive type checking.


52-52: Next.js peer dependency upgraded to v16 with confirmed compatibility.

The upgrade from ^15.3.2 to ^16.0.5 aligns with the PR's Next.js v16 migration goal. Per learnings, next-intl v4.1.0 (line 53) is confirmed to work correctly with Next.js 16 in this repository, ensuring no breaking changes in this package's dependencies.

packages/integrations/contentful-cms/package.json (3)

14-14: --preserveWatchOutput flag added to TypeScript build.

The addition of the --preserveWatchOutput flag aligns with the PR optimization strategy and helps preserve output during watch mode, reducing unnecessary clears. This is consistent with the standardized TypeScript build approach across the monorepo.


13-18: Dev script correctly removed per PR optimization objectives.

The removal of the "dev" script is consistent with the PR goal to eliminate per-package dev tasks and centralize control through Turbo. Since contentful-cms is not in the exceptions list (only api-harmonization, frontend, and docs retain per-package dev scripts), this removal is correct.


17-17: Expanded file pattern in generate script to include TSX files.

The pattern update from "generated/**/*.ts" to "generated/**/*.{ts,tsx}" is reasonable, as GraphQL code generation can produce TypeScript and TSX files. Prettier will now format both file types, ensuring consistency.

packages/blocks/ticket-list/package.json (3)

17-17: Build script aligns with PR optimization goals.

The addition of --preserveWatchOutput reduces redundant output during incremental builds, supporting the broader dev-task optimization initiative to reduce resource consumption. This change is consistent with the pattern across the monorepo.


18-18: Lint script expanded to include .tsx files.

The addition of .tsx to the eslint glob pattern ensures React TypeScript files are properly linted, improving coverage across the codebase. This is a sound enhancement.


51-51: Next.js peer dependency updated correctly.

The upgrade to ^16.0.5 aligns with the monorepo-wide Next.js v16 migration. Based on learnings, next-intl@^4.1.0 (line 52) is confirmed to be compatible with Next.js 16, so no conflicts are expected.

packages/blocks/ticket-summary/package.json (2)

19-19: Lint glob pattern expansion is consistent with monorepo standardization.

The expanded pattern to include .tsx files ensures that React component files receive the same linting treatment as .ts files, which is appropriate for a block component package. This aligns with the PR's goal to standardize lint/build processes across the monorepo.


52-52: Next.js peer dependency upgrade to v16 is compatible with declared dependencies.

The upgrade from the prior version to ^16.0.5 aligns with the PR's objective of Next.js v16 adoption. Based on learnings, next-intl 4.1.0 (declared in line 53) is verified to work correctly with Next.js 16, and the NestJS/React peer dependencies are library-agnostic and unaffected by the Next.js version change. No compatibility issues expected for consuming apps.

packages/blocks/article/package.json (4)

17-17: Build script now includes --preserveWatchOutput for standardized TypeScript output handling.

The addition of the --preserveWatchOutput flag to the TypeScript build command aligns with the PR's goal to standardize build scripts across the monorepo. This flag is part of the dev-task optimization strategy to improve build consistency.

Verify that the chained tsc-alias command executes correctly after the TypeScript build with the new flag, particularly in watch or concurrent scenarios where output preservation matters.


18-18: Lint glob expanded to include .tsx files alongside .ts.

This change is appropriate if the package includes TypeScript React components (which it likely does, given its exports to frontend/sdk). This expands linting coverage to JSX-containing files, a reasonable improvement.


51-51: Next.js peer dependency bumped to v16.x.

The update from ^15.4.7 to ^16.0.5 is intentional per the PR objectives to upgrade Next.js v16 across the monorepo. The learnings confirm that next-intl@^4.1.0 (line 52) is compatible with Next.js 16, ensuring no peer dependency conflicts in this package.


54-54: EOF newline added.

Minor formatting improvement; no functional impact.

packages/integrations/strapi-cms/package.json (2)

14-14: Verify the use of --preserveWatchOutput in a non-watch build context.

The --preserveWatchOutput TypeScript compiler flag is typically used with --watch to preserve output from previous builds. This script runs tsc once (non-watch) before piping to tsc-alias. Confirm whether this flag has the intended effect in a non-watch context, or if it's a no-op that can be safely included.


17-17: Safe glob pattern expansion to include .tsx files.

The glob pattern for the generate script has been expanded from generated/**/*.ts to generated/**/*.{ts,tsx} to include TypeScript React files. This is a safe change—if no .tsx files are generated, the pattern simply won't match—and aligns with the broader pattern across the monorepo in this PR.

packages/configs/integrations/package.json (3)

15-15: Lint glob expansion to include .tsx files is sound.

Expanding the linting glob to include .{ts,tsx} aligns with modern TypeScript practices and ensures that React component files are properly linted alongside pure TypeScript files. This change is consistent with the monorepo-wide modernization pattern mentioned in the PR.


18-21: No breaking dependencies found from removal of strapi-cms and zendesk integrations.

The removed @o2s/integrations.strapi-cms and @o2s/integrations.zendesk packages are not referenced as dependencies in any other package.json files in the monorepo, nor are they imported in any code files. The change to retain only @o2s/integrations.mocked is safe and will not break dependent packages.


14-14: No action needed—--preserveWatchOutput is a valid TypeScript compiler flag.

The --preserveWatchOutput flag is a documented TypeScript compiler option that prevents watch mode from clearing the console on each rebuild. This aligns with the PR's optimization goal of reducing resource usage while retaining earlier errors and warnings.

packages/blocks/notification-list/package.json (2)

17-18: Build and lint optimizations aligned with PR objectives.

The addition of --preserveWatchOutput and inclusion of .tsx files in the lint glob are consistent with the repo-wide optimization strategy and improve developer experience without breaking changes.


51-51: Next.js 16.0.5 peer dependency upgrade is coordinated across the workspace.

The peer dependency update aligns with the broader Next.js 16 migration documented in the PR. Based on learnings, next-intl@^4.1.0 is compatible with Next.js 16, and the application does not use experimental cache components, so no compatibility concerns.

apps/frontend/package.json (4)

12-12: Lint command update aligns with PR strategy.

Switching from next lint to direct eslint invocation with expanded glob to include .tsx files is consistent with the optimization approach and allows finer control over linting scope.


53-59: Next.js 16 and dependency versions are compatible.

The upgrade to Next.js 16.0.5, next-intl ^4.5.6, and React 19.2.0 is compatible with the application's requirements. Based on learnings:

  • next-auth@5.0.0-beta.30 supports Next.js 16 (peerDependencies: ^14.0.0-0 || ^15.0.0 || ^16.0.0)
  • next-intl is compatible; application does not use cache components, so experimental features are not a concern

57-57: Clarify intent behind React version pinning change (^19.2.0 → 19.2.0).

Both react and react-dom were changed from caret ranges (^19.2.0) to exact versions (19.2.0). Given the addition of the overrides section (lines 88–91), this appears intentional to enforce strict versions across the monorepo. However, confirm whether this change is necessary or if caret ranges would suffice alongside the overrides.

Also applies to: 59-59


66-66: Next.js ecosystem tooling bumped consistently to 16.0.5.

Both @next/bundle-analyzer and eslint-config-next are correctly updated to 16.0.5, ensuring consistency with the Next.js upgrade. Note that bundle-analyzer does not yet support Turbopack (per learnings), but this is acceptable for a development tool and does not block functionality.

Also applies to: 80-80

packages/blocks/article-search/package.json (3)

17-17: ✓ Build script optimization aligns with dev task consolidation.

The addition of --preserveWatchOutput reduces TypeScript rebuild overhead by preserving intermediate compilation artifacts, supporting the PR's objective to lower CPU/RAM load during development.


18-18: ✓ Lint script correctly expanded to cover TypeScript and TSX files.

Broadening the ESLint scope to include .tsx files ensures consistent linting across all source files in the package and aligns with modern React/TypeScript practices.


53-53: ✓ Next.js v16 peer dependency update is compatible.

The bump from ^15.4.7 to ^16.0.5 is appropriate for this block package. Based on learnings, next-intl@^4.1.0 (already specified at line 54) has been verified to work correctly with Next.js 16 in this repository. The update supports downstream consumption by frontend apps upgraded to Next.js 16 as part of this PR.

packages/modules/surveyjs/package.json (3)

18-18: Lint script scope expansion looks good.

Broadening the lint glob from *.ts to *.{ts,tsx} is a sensible improvement that ensures React components and TypeScript files are consistently linted across the module. This aligns well with the module's multi-target nature (frontend, SDK, api-harmonization exports).


53-53: Next.js 16 compatibility confirmed via learnings.

The bump to next@^16.0.5 is a major version upgrade. Based on retrieved learnings, next-intl 4.1.0 (which this module declares at line 54) is confirmed to work correctly with Next.js 16 in this repository context, so peer dependency alignment is solid.


17-17: The --preserveWatchOutput flag is supported in TypeScript 5.9.3 and is a valid CLI option that prevents clearing the console on each watch update. No further action needed.

packages/blocks/quick-links/package.json (2)

17-17: Build script change looks good.

The addition of --preserveWatchOutput aligns with the PR's dev optimization goals and is consistent across updated packages.


51-51: Next.js 16 peer dependency bump is compatible with consuming packages.

The upgrade from ^15.4.7 to ^16.0.5 is confirmed compatible with next-intl 4.1.0 and next-auth v5.0.0-beta.30. apps/frontend already uses Next.js 16.0.5 with these dependencies, confirming no regressions in the consuming package.

@marcinkrasowski marcinkrasowski merged commit 0354126 into main Dec 3, 2025
4 checks passed
@marcinkrasowski marcinkrasowski deleted the feat/dev-task-optimizations branch December 3, 2025 15:02
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.

[Bug] running dev task is too resource-heavy

1 participant