reflex-components-core Changelog
v0.9.9 (2026-08-28)
Features
- The "Built with Reflex" badge appends a urlencoded
refquery parameter to its reflex.dev link when theREFLEX_REFERRER_PARAMenvironment variable is set at compile time. (#6951)
Bug Fixes
- Sanitize buffered upload filenames the same way streamed upload filenames are sanitized. (#6753)
rx.scripthead updates now flush synchronously instead of via react-helmet's requestAnimationFrame batching, fixing intermittently missing script tags after hydration (flaky "scripts not loaded" failures). (#6905)- Upload filenames whose segments contain nothing but dots and spaces (e.g.
"..","./../.",".. ") now sanitize to the fallback nameuploadinstead of returning the bare segment. Such names pointed the saved path outside the upload directory — directly on POSIX, and via Win32's trailing dot/space trimming on Windows — and crashed the upload handler with a 500. (#6971)
Miscellaneous
- Hoist the
RegistrationContextimport in the upload handler to module level. (#6382) - Internal logging migrated from the legacy console helpers to standard python
loggingper-module loggers. (#6864) - Property docstrings are now noun phrases rather than "Get the ..." / "Return the ..." (ruff 0.16's new
D421). (#6893)
v0.9.8 (2026-08-04)
Miscellaneous
- Bumped
react-error-boundary6.1.1 → 6.1.2. (#6678)
v0.9.7 (2026-07-15)
Miscellaneous
rx.uploadinternals useArrayVar.mapinstead of the deprecatedforeach. (#6701)
v0.9.6 (2026-06-25)
Bug Fixes
- Deliver extra bound handler arguments to upload handlers, so
on_drop=State.handle_upload(rx.upload_files(...), field)passesfieldthrough to the backend instead of raising a missing-argument error. (#5290) - Preserve literal string types through
rx.cond, sorx.cond(State.flag, "green", "red")infersVar[Literal["green", "red"]]instead of widening toVar[str]and tripping Pyright on props typed asLiteral[...] | Var[Literal[...]]such as Radixcolor_scheme. (#6545) rx.debounce_inputno longer crashes the page withReferenceError: input is not definedwhen wrapping a native DOM element such asrx.el.inputorrx.el.textarea. Theelementprop now passes global-scope tags as string literals (element:"input"), while library components keep referencing their imported identifiers. (#6637)
v0.9.5 (2026-06-10)
Features
Formnow validates statically-knowable fields against aTypedDict-annotatedon_submithandler at create time: it walks nested form controls (including components nested in props), collects their staticname/idvalues, and raisesEventHandlerValueErrorlisting the missing and present fields when a requiredTypedDictfield has no matching control.input,select, andtextareaare marked as form controls so their identifiers are collected, and required-field resolution honorsNotRequiredacross Python 3.10 and 3.11+. Theon_submithandler signature also accepts a mapping-style payload viaon_submit_mapping_event. (#6301)
Miscellaneous
- The connection-error banner now subscribes only to the dedicated
CONNECT_ERRORShook instead of the shared events hook, and the upload component declares itsUploadFilesProviderthroughVarData.app_wrapsrather thanUpload._get_app_wrap_components. (#6447)