chore: update to latest Qwik v2#136
Conversation
|
@maiieul is attempting to deploy a commit to the Open Circle Team on Vercel. A member of the Team first needs to authorize it. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughThe PR upgrades 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 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. Comment |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Updates the Qwik integration and examples to align with newer Qwik signal typing/behavior and updated tooling dependencies.
Changes:
- Replaced
ReadonlySignal<T>usages withReadonly<Signal<T>>across docs, playground components, and framework Qwik types. - Updated Qwik/Vite-related devDependencies (including switching some Qwik deps to
pkg.pr.newURLs) and removed a pnpm patched dependency entry. - Adjusted Qwik router preview entry and tweaked
useResolvedQrlto avoid tracked reads.
Reviewed changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| website/src/routes/(docs)/qwik/guides/(main-concepts)/input-components/index.mdx | Updates guide sample types/imports to new Signal typing pattern. |
| website/package.json | Updates Qwik deps to pkg.pr.new URLs, bumps eslint-plugin-qwik and Vite. |
| playgrounds/qwik/src/entry.preview.tsx | Removes router config import/parameter from preview adapter. |
| playgrounds/qwik/src/components/TextInput.tsx | Migrates component prop types from ReadonlySignal to Readonly<Signal>. |
| playgrounds/qwik/src/components/Slider.tsx | Migrates component prop types from ReadonlySignal to Readonly<Signal>. |
| playgrounds/qwik/src/components/Select.tsx | Migrates component prop types from ReadonlySignal to Readonly<Signal>. |
| playgrounds/qwik/src/components/RadioGroup.tsx | Migrates component prop types from ReadonlySignal to Readonly<Signal>. |
| playgrounds/qwik/src/components/InputErrors.tsx | Migrates component prop types from ReadonlySignal to Readonly<Signal>. |
| playgrounds/qwik/src/components/FileInput.tsx | Migrates component prop types from ReadonlySignal to Readonly<Signal>. |
| playgrounds/qwik/src/components/Checkbox.tsx | Migrates component prop types from ReadonlySignal to Readonly<Signal>. |
| playgrounds/qwik/package.json | Updates Qwik deps to pkg.pr.new URLs, bumps eslint-plugin-qwik and Vite. |
| packages/core/package.json | Updates @qwik.dev/core to pkg.pr.new URL. |
| package.json | Removes pnpm patchedDependencies block for @qwik.dev/router. |
| frameworks/qwik/src/types/form.ts | Migrates exported form store signal fields to Readonly<Signal<...>>. |
| frameworks/qwik/src/types/field.ts | Migrates exported field store signal fields to Readonly<Signal<...>>. |
| frameworks/qwik/src/hooks/useResolvedQrl/useResolvedQrl.ts | Uses untrack to avoid tracked reads when resolving QRLs. |
| frameworks/qwik/src/hooks/usePathSignal/usePathSignal.ts | Returns Readonly<Signal<T>> instead of ReadonlySignal<T>. |
| frameworks/qwik/package.json | Updates @qwik.dev/core to pkg.pr.new URL, bumps eslint-plugin-qwik and Vite. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
ed7441a to
ff6f3d9
Compare
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (1)
playgrounds/qwik/src/components/InputErrors.tsx (1)
5-8: ⚡ Quick winUse
interfaceforInputErrorPropsobject shape.This props object is declared with
type, but the TypeScript guideline here requiresinterfacefor object shapes.Suggested change
-type InputErrorProps = { +interface InputErrorProps { name: string; errors: Readonly<Signal<[string, ...string[]] | null>>; -}; +}As per coding guidelines, "Prefer
interfaceovertypefor defining object shapes in TypeScript".🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@playgrounds/qwik/src/components/InputErrors.tsx` around lines 5 - 8, Change the props declaration from a type alias to an interface: replace the type InputErrorProps definition with an interface InputErrorProps that declares the same members (name: string; errors: Readonly<Signal<[string, ...string[]] | null>>;), ensuring any usages of InputErrorProps (e.g., component props or function signatures) remain unchanged.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@frameworks/qwik/package.json`:
- Line 50: Multiple workspace packages are pinned to different Qwik commits;
unify them by choosing one canonical commit SHA (e.g., the one used in
website/package.json or the desired release) and update all occurrences of
`@qwik.dev/core` and `@qwik.dev/router` in frameworks/qwik/package.json,
website/package.json (and any other package manifests) to reference that same
commit tag, then regenerate and commit an updated pnpm-lock.yaml by running pnpm
install so the lockfile matches the manifests; ensure you update the dependency
strings that reference the pkg.pr.new URLs (the `@qwik.dev/core` and
`@qwik.dev/router` entries) and verify the workspace builds.
In `@playgrounds/qwik/src/entry.preview.tsx`:
- Around line 14-15: The top-of-file comment "make sure qwikRouterConfig is
imported before entry" is stale; remove or update it to reflect current imports
in entry.preview.tsx (there is only the render import from './entry.ssr'). Edit
the file to delete the obsolete comment or replace it with a current, accurate
note about import ordering if needed, ensuring references to qwikRouterConfig
are removed and only relevant context for import render is kept.
- Line 20: The pure factory call createQwikRouter({ render }) needs the
tree-shaking purity annotation; add the comment // `@__NO_SIDE_EFFECTS__`
immediately on the line above the createQwikRouter invocation (the default
export) so the pure factory call createQwikRouter is annotated for tree-shaking
optimization.
In
`@website/src/routes/`(docs)/qwik/guides/(main-concepts)/input-components/index.mdx:
- Around line 69-77: The props interface TextInputProps now types input and
errors as Readonly<Signal<...>> but the usage snippets still pass
field.input.value / field.errors.value; update the example(s) that consume
TextInputProps (references: TextInputProps, input, errors, and
FieldElementProps) to pass the signal objects themselves (e.g., field.input,
field.errors) instead of their .value, so the example compiles; apply the same
change to the other occurrence noted around lines 145-153.
---
Nitpick comments:
In `@playgrounds/qwik/src/components/InputErrors.tsx`:
- Around line 5-8: Change the props declaration from a type alias to an
interface: replace the type InputErrorProps definition with an interface
InputErrorProps that declares the same members (name: string; errors:
Readonly<Signal<[string, ...string[]] | null>>;), ensuring any usages of
InputErrorProps (e.g., component props or function signatures) remain unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8e4b5f13-eca2-473d-bc2e-b85511088c81
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (18)
frameworks/qwik/package.jsonframeworks/qwik/src/hooks/usePathSignal/usePathSignal.tsframeworks/qwik/src/hooks/useResolvedQrl/useResolvedQrl.tsframeworks/qwik/src/types/field.tsframeworks/qwik/src/types/form.tspackage.jsonpackages/core/package.jsonplaygrounds/qwik/package.jsonplaygrounds/qwik/src/components/Checkbox.tsxplaygrounds/qwik/src/components/FileInput.tsxplaygrounds/qwik/src/components/InputErrors.tsxplaygrounds/qwik/src/components/RadioGroup.tsxplaygrounds/qwik/src/components/Select.tsxplaygrounds/qwik/src/components/Slider.tsxplaygrounds/qwik/src/components/TextInput.tsxplaygrounds/qwik/src/entry.preview.tsxwebsite/package.jsonwebsite/src/routes/(docs)/qwik/guides/(main-concepts)/input-components/index.mdx
💤 Files with no reviewable changes (1)
- package.json
ff6f3d9 to
37c6eee
Compare
There was a problem hiding this comment.
4 issues found and verified against the latest diff
Tip: cubic can generate docs of your entire codebase and keep them up to date. Try it here.
Re-trigger cubic
f7270e9 to
3e3f563
Compare
9ebb679 to
9d92871
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@pnpm-workspace.yaml`:
- Line 52: The vite@7 override in pnpm-workspace.yaml is pinned to version
7.3.2, which is downgrading the intended upgrade to 7.3.5 specified in the
package manifests. Update the version value for the vite@7 override entry from
7.3.2 to 7.3.5 to align with the manifest bumps and allow packages like website
and frameworks/qwik to use the newer version.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: a505646b-58ed-454f-84bd-4ac624265c34
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (17)
frameworks/qwik/package.jsonframeworks/qwik/src/hooks/usePathSignal/usePathSignal.tsframeworks/qwik/src/types/field.tsframeworks/qwik/src/types/form.tspackages/core/package.jsonplaygrounds/qwik/package.jsonplaygrounds/qwik/src/components/Checkbox.tsxplaygrounds/qwik/src/components/FileInput.tsxplaygrounds/qwik/src/components/InputErrors.tsxplaygrounds/qwik/src/components/RadioGroup.tsxplaygrounds/qwik/src/components/Select.tsxplaygrounds/qwik/src/components/Slider.tsxplaygrounds/qwik/src/components/TextInput.tsxplaygrounds/qwik/src/entry.preview.tsxpnpm-workspace.yamlwebsite/package.jsonwebsite/src/routes/(docs)/qwik/guides/(main-concepts)/input-components/index.mdx
✅ Files skipped from review due to trivial changes (1)
- playgrounds/qwik/src/components/Slider.tsx
🚧 Files skipped from review as they are similar to previous changes (13)
- frameworks/qwik/package.json
- playgrounds/qwik/src/components/RadioGroup.tsx
- packages/core/package.json
- frameworks/qwik/src/hooks/usePathSignal/usePathSignal.ts
- playgrounds/qwik/src/components/FileInput.tsx
- website/src/routes/(docs)/qwik/guides/(main-concepts)/input-components/index.mdx
- playgrounds/qwik/src/components/TextInput.tsx
- playgrounds/qwik/src/entry.preview.tsx
- frameworks/qwik/src/types/field.ts
- playgrounds/qwik/src/components/Checkbox.tsx
- frameworks/qwik/src/types/form.ts
- playgrounds/qwik/src/components/Select.tsx
- playgrounds/qwik/src/components/InputErrors.tsx
| @@ -50,5 +50,3 @@ overrides: | |||
| 'undici@7': '7.24.0' | |||
| 'vite@6': '6.4.2' | |||
| 'vite@7': '7.3.2' | |||
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== package manifests requesting vite =="
rg -n '"vite"\s*:\s*' --glob '**/package.json'
echo
echo "== workspace overrides for vite =="
rg -n "vite@6|vite@7" pnpm-workspace.yaml
echo
echo "== lockfile resolved vite spec/version excerpts =="
rg -n "specifier:\s*7\.3|version:\s*7\.3" pnpm-lock.yaml -C1 | head -n 120Repository: open-circle/formisch
Length of output: 2728
vite@7 override is downgrading the intended upgrade target.
Line 52 pins vite@7 to 7.3.2, which overrides the 7.3.5 manifest bumps and forces packages requesting 7.3.5 (website and frameworks/qwik) to use an older version instead.
Suggested fix
- 'vite@7': '7.3.2'
+ 'vite@7': '7.3.5'📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 'vite@7': '7.3.2' | |
| 'vite@7': '7.3.5' |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@pnpm-workspace.yaml` at line 52, The vite@7 override in pnpm-workspace.yaml
is pinned to version 7.3.2, which is downgrading the intended upgrade to 7.3.5
specified in the package manifests. Update the version value for the vite@7
override entry from 7.3.2 to 7.3.5 to align with the manifest bumps and allow
packages like website and frameworks/qwik to use the newer version.
|
It's a Qwik core projection-diffing bug (triggered by our |
|
Ah my bad I thought it was in 😅. Yeah we can wait for beta 38. |

Summary by cubic
Upgrade Qwik to v2.0.0-beta.37 and migrate to the new Signal API. Fix the double-render in
pkg.pr.newpreview by removing the extra router config.Dependencies
@qwik.dev/core,@qwik.dev/router, andeslint-plugin-qwikto2.0.0-beta.37across the repo.viteto7.3.5andvue-tscto~3.1.0.pnpm.patchedDependenciesfor@qwik.dev/router.Migration
ReadonlySignal<T>withReadonly<Signal<T>>across hooks, types, components, and docs.export default createQwikRouter({ render }); removeqwikRouterConfig.Written for commit dacb579. Summary will update on new commits.