Repository navigation
Refresh framework frontend pins and locked backend dependencies - #7645
Conversation
Frontend, taking the newest release at least seven days old (the window the backend lock already uses): React 19.3.1, Vite 8.3.4, PostCSS 8.5.30, postcss-import 17.0.1, Radix accordion/dialog/form/progress/ slider at the radix-ui 1.8.1 set (so they dedupe with the copy Radix Themes pulls in), react-syntax-highlighter 16.1.2, and in reflex-components-internal tailwind-merge 3.7.0 and @icons-pack/react-simple-icons 13.15.1. react-router 8.5.0 and Vite 8.3.5 are still inside the window and held for the next sweep. Backend: `uv lock --upgrade` within the existing exclude-newer window, keeping ruff and pyright at their pinned versions. Notable moves: SQLAlchemy 2.1.4, pydantic 2.14.1, Starlette 1.8.0, granian 2.8.4, FastAPI 0.143.2, python-engineio 4.14.0, playwright 1.64.0, reflex-enterprise 0.9.8. Widen reflex-release's towncrier cap to allow 26, and move the docs app to xy 0.0.8, which restores live chart rendering on Reflex 0.10. Hold the Python plotly package with plotly.js, since plotly.py 7 targets plotly.js 4, and drop the pydantic-core and pyee holds, which no longer hold anything back. SQLAlchemy 2.1 types `returning(*cols)` rows as one-element tuples; annotate reflex-workflow's lease update as a plain `Update` so its rows unpack on both 2.0 and 2.1. reflex-enterprise 0.9.8 registers a pytest plugin that imports its own var subclasses, whose generated `*CastedVar` lands in reflex_base's module; stop test_get_leaf_vars_sorts_every_cached_operation's subclass walk at classes defined outside Reflex so it only counts Reflex's own. Regenerate the docs app's reflex.lock for the new pins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186fG7rqdRbDhz4WvGHtvDF
[Medium impact] The PR appears safe to merge; no actionable findings remain in this review. SummaryRefreshes frontend pins and locked Python dependencies, with small typing and test updates.
Reviews (4) · Last reviewed commit: "Pair each Radix primitive with its versi..." · Reviewed by Greptile |
pytest-playwright 0.10 dropped its pytest-base-url dependency, which was the only thing installing requests in the integration environment, so collecting tests/integration/test_urls.py failed with ModuleNotFoundError and took every app harness job down with it. httpx is already a reflex runtime dependency. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186fG7rqdRbDhz4WvGHtvDF
Merging this PR will degrade performance by 0.02%2 warnings
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing |
|
CodSpeed Performance Analysis on 26d1a3b flagged
CodSpeed isn't a required check. The push of cd3b8d6 (a merge of main, which brings in the Generated by Claude Code |
|
unit-tests (ubuntu-latest, 3.15) on cd3b8d6 failed in the "Run unit tests w/ redis and OPLOCK_ENABLED" step: 1 test failed and 13,183 passed. The failure was This is an existing timing race in the oplock contention tests, not something this PR introduced:
I don't know of an existing fix for the race. I'm re-running the failed job once. Generated by Claude Code |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186fG7rqdRbDhz4WvGHtvDF
|
CodSpeed Performance Analysis on 7c56b16 flags Generated by Claude Code |
Type of change
Routine dependency sweep: framework frontend pins plus the locked backend environment. I applied one rule throughout: take the newest release that is at least seven days old. The backend lock already enforces this with
exclude-newer = "7 days". This PR applies it to npm pins as well, with one exception noted below.Frontend
radix-ui@1.6.7, which@radix-ui/themesdepends on, so apps loaded one copy of each primitive. The new set matchesradix-ui@1.8.1, the current release a fresh Themes install resolves to. Bumping them individually would load two copies of the Radix internals (separate dismissable-layer and focus stacks). This set is about 3 hours inside the 7-day window; keeping a single copy seemed worth the exception. The upstream changelogs list type fixes and additive features only.[tool.check-outdated-deps](plotly.js, tailwind, react-dropzone, lucide-react, ag-grid and others),@babel/core(8.x is a major), and Bun 1.4.4 from Upgrade default Bun to 1.4.4 #7639.docs/app/reflex.lock. It resolvesradix-ui@1.8.1with no nested duplicate@radix-ui/*copies.Backend
uv lock --upgradewithin the existing window, keepingruffandpyrightat their pinned versions. Notable moves: SQLAlchemy 2.1.4, pydantic 2.14.1, Starlette 1.8.0, granian 2.8.4, FastAPI 0.143.2, python-engineio 4.14.0, playwright 1.64.0, reflex-enterprise 0.9.8, towncrier 26.9.0.virtualenv21.14.12 from chore(deps): bump virtualenv to 21.14.12 for Dependabot alert #7644 (the Dependabot security fix).towncrierfrom<26to<27. Version 26 is CalVer with no breaking changes.xy0.0.7 → 0.0.8. It's a single bugfix that restores live chart rendering on Reflex 0.10.[tool.check-outdated-deps]:plotlypackage, because plotly.py 7 targets plotly.js 4, which is still held at 3.x (Migrate to plotly.js 4.x (removes the mapbox tracesrx.plotly.mapboxwraps) #7002).pydantic-coreandpyeeholds; both now resolve to their latest versions, so the script flagged them as stale.scripts/check_outdated_deps.py backendpasses.Fixes the upgrades required
returning(*cols)overload types rows as one-element tuples, which broke pyright in reflex-workflow.lease()is now annotated-> Update, soexecute()returns untyped rows. I checked this with pyright on both SQLAlchemy 2.0.52 and 2.1.4. One test helper gets anassert until is not None.test_get_leaf_vars_sorts_every_cached_operation(from feat(vars): add get_leaf_vars #7606):reflex_apppytest plugin that imports itsLambdaVar.Var.__init_subclass__then generates aLambdaCastedVarinsidereflex_base.vars.base, and the test counted it as one of Reflex's own operations.-p no:reflex_app.tests/integration/test_urls.pynow useshttpxinstead ofrequests:pytest-playwright0.10 dropped itspytest-base-urldependency, which was the only thing installingrequestsin the integration environment.httpxis already a reflex runtime dependency.Validation
tests/units/reflex_bench/drivers/test_browser.py. They fail identically with the previous Playwright, because this container's preinstalled Chromium (build 1194) is older than Playwright needs.ruff check,ruff format --check,pyright reflex tests, fullpyright, the pre-committycheck,uv lock --check,reflex-release changelog-checkandreflex-release sync --checkall pass. Stub regeneration leavespyi_hashes.jsonunchanged.@mantine/core,@xyflow/react,rehype-sanitize,react-colorful).News fragments were added for reflex-base, components-radix, components-code, components-internal, reflex-release and reflex-workflow.
Generated by Claude Code
<source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/turn-on-auto-fix-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/turn-on-auto-fix-light.svg"><img alt="Turn on auto-fix" src="https://www.cubic.dev/buttons/turn-on-auto-fix-light.svg">