reflex-components-core Changelog
v0.10.0 (2026-10-08)
Breaking Changes
- Require Python 3.11 or newer; Python 3.10 is no longer supported. (#7449)
Features
- The connection banner reads
REFLEX_BACKEND_COLD_START_TIMEOUTas a duration, so it accepts a unit suffix such as30s. A bare number is still read as seconds. (#7138)
Bug Fixes
- Fix
rx.matchraisingReferenceError: Can't find variableat render when a state Var is used only in a case condition with component branches. (#6675) - Exclude IDs on forms and other non-controls from form submissions while preserving unset ID-backed controls and supporting custom controls marked with
_is_form_control. (#7227)
Miscellaneous
- Update react-dropzone to 17.0.0 and react-error-boundary to 6.1.6. (#7424)
v0.9.10.post1 (2026-09-21)
Bug Fixes
- Require
reflex-base >= 0.9.12. The declared floor was older than thereflex_base.components.tags.CommonTagimport this package relies on, so a resolver was free to pair it with areflex-basethat fails at import time withImportError: cannot import name 'CommonTag'. (#7268)
v0.9.10 (2026-09-21)
Bug Fixes
rx.el.svgand its children now render as one memoized component, sodefssuch as gradients and the elements that reference them by id always share one render scope. (#6708)rx.debounce_input(which fully-controlled inputs compile to) now delivers a parent-provided ref to the underlying input element instead of the component instance, fixing crashes underrx.form.control(..., as_child=True). (#6850)- Return a controlled 400 response when an upload request references an unknown event handler. (#6860)
- Give the Built with Reflex badge an accessible name when its visual text is hidden on small screens. (#7078)
reflex_components_core.datadisplayno longer advertisescode_block,data_editorand friends: those moved to the standalonereflex-components-codeandreflex-components-dataeditorpackages, so accessing them here raisedModuleNotFoundError. Reach them as before viarx.code_block/rx.data_editor, orreflex.components.datadisplay.code. (#7124)- Stop the default error boundary fallback from logging invalid DOM property warnings for its SVG icon. (#7130)
Miscellaneous
- Annotate
_renderoverrides as returningCommonTag, the new base of every tag class. (#7121)
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)