Releases: reflex-dev/reflex
v0.2.9
Breaking Changes
rx.constants
module refactored
- Many names have changed for better organization and namespacing of the growing number of constant values.
rx.constants
is not really a public API, but some existing code may have been accessing values in this module.
- code cleanup (split constants into a folder) by @Lendemor in #1866
New Features
Core Graphing Library is now Recharts
The API for rendering charts and graphs has changed.
- See the docs for examples and more information.
- Victory charts are deprecated and will be removed in a subsequent release.
rx.data
is no longer used.
- #1878
Run Arbitrary Javascript from Event Handler
Redirect into New Window
return rx.redirect("https://google.com", external=True)
to open page in new tab/window- allow external link for redirect by @Lendemor in #1902
HTML Editor Component
Improvements
- Allow arbitrary Reflex components to map to markdown tags for more customizable styling.
- Include scripts in
<head>
for every page by settinghead_components
prop inrx.App
- Adding Missing Props to
button
,button_group
, andcircular_progress
- Add button spinner_placement prop by @ElijahAhianyo in #1871
- Button Group variant and size props by @ElijahAhianyo in #1873
- circular_progress cleanup: size, thickness, label by @masenf in #1879
- Add
Readme.md
for turkish language by @09u2h4n in #1922 - Pin frontend package versions by @picklelo in #1920
- More reliable deploys without bringing in unexpected upstream changes
Bug Fixes
- component:
imports
override_get_dependencies_imports
by @masenf in #1859 - Fix regression where
rx.table
stopped working with state Var- rx.table
__bool__
regression fix by @ElijahAhianyo in #1828
- rx.table
MutableProxy
fixes when accessinglist
,dict
, orset
vars on a State- fix rx.image src not working with state by @Lendemor in #1915
- fix menu items= API by @Lendemor in #1905
Other Changes
- Bump to v0.2.8 by @picklelo in #1855
- Format event handlers not in importable modules by @picklelo in #1875
- Add a placeholder timeout to GitHub Actions unit tests by @jackwcodes in #1897
- test_state: assert popped value is the actual value by @masenf in #1906
- Deprecate set_cookie and set_local_storage by @ElijahAhianyo in #1917
- Add forward slash to local JS import by @picklelo in #1924
- Update Deprecations by @ElijahAhianyo in #1927
New Contributors
- @jackwcodes made their first contribution in #1897
- @09u2h4n made their first contribution in #1922
Full Changelog: v0.2.8...v0.3.0
v0.2.8
β¨ This release is made possible in part by users like YOU! β¨
Breaking Changes
CopyToClipboard
component has been removed.
Use the rx.set_clipboard
special event instead.
New Features
get_event_triggers
API
The new Component.get_event_triggers
API combines the old get_triggers
and get_controlled_triggers
methods into a unified API (the previous methods will continue to work in 0.2.8, but wrapped components should move to the new API).
The new API is more flexible, providing control over handler and trigger argument mapping. The method is expected to return a dictionary of callables. The keys are the names of the triggers in the react component. The values are callables whose signature defines the javascript trigger signature and the return value is a list of args that will be passed to the python EventHandler
function.
This allows wrapping of components that accept non-standard event handler functions. Typically a lambda
is used to map arguments, but a regular function with type annotations can also be used to enable extended Var operations like indexing.
For example, the FormSelect
component uses a non-standard signature for on_change
, this can now be accomodated in the new API.
class FormSelect(rx.Component):
library = "@patternfly/react-core"
tag = "FormSelect"
def get_event_triggers(self) -> Dict[str, Any]:
return {
EventTriggers.ON_CHANGE: lambda _e, value: [value],
}
rx.download
special event
The new download event prompts the frontend browser for file download.
It can be used directly as an event trigger:
rx.button("Download file", on_click=rx.download("/uri/for/file.extension", "target_file.extension")
Or it can be yielded from a backend event handler:
def export_data(self):
...
# do export logic here and write to filepath
# then
yield rx.download(filepath, filename)
Register Serializers for Custom Types
A one-arg callable in a Reflex app or component module with @rx.serializer
decorator will be considered a serializer for the type of its argument. This allows arbitrary types used on the backend to be accessed on the frontend, as long as there is a serializer defined that returns a JSON serializable value.
For example, the following code is used to serialize plotly Figure
objects.
import json
from plotly.graph_objects import Figure
from plotly.io import to_json
@rx.serializer
def serialize_figure(figure: Figure) -> list:
return json.loads(str(to_json(figure)))["data"]
Background Task Event Handlers that do not block other Events
An async
EventHandler
function in a State
that is decorated with @rx.background
is considered a "Background Task". When triggered by the frontend or chained from another event handler, it will spawn a long running task that will NOT block other EventHandlers from running.
There are three main differences from a normal EventHandler
to be aware of:
- Background Task must be
async
- Background Task cannot directly modify state values and state values may be stale if other events have modified the state since the task started running.
- Only read or write state vars inside an
async with self
context block, where exclusive access to the latest state is guaranteed.
- Only read or write state vars inside an
- Background Task cannot be directly called from another event handler.
- Must
yield
orreturn
the background task to chain it from another handler.
- Must
class State(rx.State):
counter: int = 0
@rx.background
async def bg_task(self):
for ix in range(10):
async with self:
# state mutation is only allowed inside context block
self.counter += 1
# await long operations outside the context to avoid blocking
await asyncio.sleep(0.5)
Full documentation for this feature is still being developed. Please post comments regarding background tasks on the discussion thread.
- rx.background and StateManager.modify_state provides safe exclusive access to state by @masenf in #1676
Improvements
Support Reactivity for rx.Base
fields
Modifying fields on an rx.Base
instance will trigger updates in the state without having to reassign them. This also applies when working with fields that are container types such as list
and dict
.
Better Error Messages
- Style props with Callable Values by @ElijahAhianyo in #1751
- Type Validation for Var Operations and Enhanced Compatibility by @ElijahAhianyo in #1674
Usability
- Allow underscores in routes by @ElijahAhianyo in #1713
- Implemented color_scheme for Tabs Component by @raven-black-dream in #1792
- Simplify base rxconfig by @picklelo in #1821
- Number input float by @raven-black-dream in #1817
- Support custom styling for code in markdown by @picklelo in #1844
- add option to disable Tailwind by @ElijahAhianyo in #1842
Bug Fixes
- added check to remove local import starting from . by @wassafshahzad in #1807
- exec: print the URL, not the address the server binds to by @masenf in #1846
Minor Changes and Fixups
- use actions/checkout@v4 by @masenf in #1768
- Bump version to 0.2.7 by @picklelo in #1782
- check pyi generations are up to date by @jackie-pc in #1786
- supply default for rx.Model PK for both DB and python to work by @martinxu9 in #1788
- move dynamic imports to dedicated method by @Lendemor in #1785
- removed is_read_only from select by @wassafshahzad in #1799
- numberinput: check
_id is not None
to avoid Var truthiness warning by @masenf in #1806 - Remove deprecated route decorator by @ElijahAhianyo in #1815
- Move custom styles to root App file(_app.js) by @ElijahAhianyo in #1764
- Disable metrics in CI by @picklelo in #1822
- Remove extra imports from rx.markdown by @picklelo in #1837
- Prevent Substate class shadowing by @ElijahAhianyo in #1827
- pyproject.toml: add
packaging
to dep list by @masenf in #1839 - state: implement copy and deepcopy for MutableProxy by @masenf in #1845
- allow for non-installable imports by @Lendemor in #1843
- Format component as React string by @picklelo in #1848
- use jinja2 to render package.json by @Lendemor in #1849
- StateProxy rebinds functools.partial and methods that are bound to the proxied State by @masenf in #1853
New Contributors
- @raven-black-dream made their first contribution in #1792
Full Changelog: v0.2.7...v0.2.8
v0.2.7
πΒ Thanks to our supportive community and helpful contributors! πͺ
Breaking Changes
Default Websocket Endpoint is now /_event
#1542
Upload endpoint also moved to /_upload
.
Any reverse proxy configurations that were explicitly forwarding /event
and /upload
to the backend server should be updated to use the new endpoints.
- renamed reserved endpoints of Reflex by @Lendemor in #1542
- Caddyfile: reflex uses
/_event
and/_upload
now by @masenf in #1726
App
kwarg connect_error_component
is removed.
Use overlay_component
instead. (#1379)
New Features
Client-side Storage integrated with State #1629
- Allow
rx.LocalStorage
andrx.Cookie
type vars in a State class that are automatically persisted in the client browser when modified on the backend. - These values can be used in frontend or backend code just like any other state Var.
class State(rx.State):
my_token: rx.LocalStorage = ""
my_hour_cookie: rx.Cookie = rx.Cookie("initial", max_age=3600)
def set_token(self):
self.my_token = str(uuid.uuid4())
def update_cookie(self):
if self.my_hour_cookie == "initial":
self.my_hour_cookie = "updated"
Implement on_mount
and on_unmount
for all components #1636
These new event handlers, present on all components, tie into Reactβs useEffect
hook and are used to trigger backend events needed to initialize a component when it loaded in a page.
Note: on_mount
will fire twice in dev mode due to the use of Reactβs StrictMode.
Note: on_mount
will not fire for page navigation events between different params of the same dynamic route, since the page itself does not get reloaded so no remount occurs. For navigation events, see on_load
argument of app.add_page
.
FNM is now used to install nodejs on POSIX platforms
by @ElijahAhianyo in #1606 #1701
frontend_packages
are automatically determined #1607
frontend_packages
are inferred based on thelibrary
prop of a wrapped component, instead of having to specify them manually in therxconfig.py
file.- The
library
prop may now include a version pin, like **library =** "gridjs-react@^6.0.1"
- The
package.json
list of frontend dependencies only includes components that are actually used in the app, which decreases bundle size. - To include additional dependencies used by a component, specify them in the new
lib_dependencies
prop of the wrapped component.
Per-component prop autocompletion for IDEs #1708
Generated .pyi
files provide better function signatures for component create
methods, enumerating most recognized props.
Further enhancements will be supplied in a future release to include per-prop documentation and improved signatures for event handlers.
Support Breakpoints in VSCode and PyCharm #1653
- Breakpoints set in the IDE will be respected when running the project in dev mode. See DEBUGGING.md for an example.
Expose basePath
configuration option #1724
Support running multiple reflex apps from the same domain by changing the basePath
prefix that the frontend uses (by @nevdelap).
Improvements
- Validate component children by @ElijahAhianyo in #1647
- Refactor zipping in
reflex export
by @martinxu9 in #1668 - Avoid leaking secrets in log files and on the console.
- fix:issue-1667;added if condition check to not echo DB_URL by @shashank40 in #1681
- Automatically display a Modal when the backend is unable to connect.
- Add contains, reverse operations for Var by @martinxu9 in #1679
- Add special var for upload: clear_selected_files by @martinxu9 in #1703
- Support automatic serialization of date, datetime, time, and timedelta Vars in a State class.
- added changes for datetime by @wassafshahzad in #1745
- Raise TypeError when attempting to incorrectly use a state Var in a
bool
oriter
context. - Allow dynamic routes to work with static hosting (github pages, netlify, s3, etc)
Bug Fixes
- ReflexList: reassign field on
insert
by @masenf in #1652 - Allow event handlers in parent state to be directly called from child state.
- Allow
rx.form
to work with debounce inputs - Track var dependencies in comprehensions and nested functions by @masenf in #1728
- Proper serialization for chained Event payloads by @masenf in #1725
Minor Changes and Fixups
- Upgrade to v0.2.6 by @picklelo in #1669
- Revert "Use DebounceInput wrapper for fully controlled Editable" by @martinxu9 in #1670
- Use stream_logs for frontend process by @picklelo in #1682
- Fix run frontend only by @picklelo in #1706
- Update zh_cn README.md by @sszzz830 in #1685
- fix: correct the zh_cn README by @milochen0418 in #1716
- Fix setting substate client storage by @picklelo in #1723
- Avoid compile step when running production backend by @masenf in #1665
- AppHarness: disable telemetry for test apps by @masenf in #1733
- state: _init_mutable_fields for backend vars as well by @masenf in #1729
- Fix project hash and modernize type annotations by @picklelo in #1704
- Refactor: Move format_prop Static Method for Improved Reusability by @ElijahAhianyo in #1714
- ConnectionModal uses Cond for rendering by @masenf in #1739
- remove some packages requirements in frontend_packages option by @Lendemor in #1700
- App: only render default overlay_component when DefaultState is not used by @masenf in #1744
New Contributors
- @shashank40 made their first contribution in #1681
- @sszzz830 made their first contribution in #1685
- @nevdelap made their first contribution in #1724
Full Changelog: v0.2.6...v0.2.7
v0.2.6
A quick follow-up release to fix issues discovered and reported by our thriving community on Discord. πͺ
Fix Regressions
Ensure non-sqlite databases can be used #1661
Block problematic upstream package python-engineio-4.6.0
#1658
Other Changes
- Added the
step
prop toSlider
[Issue #1639] by @muddi900 in #1643 - added support for limits in pagination by @wassafshahzad in #1646
- add type conversion for int,float in built-in setters by @Lendemor in #1660
New Contributors
Full Changelog: v0.2.5...v0.2.6
v0.2.5
πͺ Thanks to our amazing users and contributors!! π π
Known Regressions
- non-sqlite database access is not working #1661
Breaking Changes
Chained event handlers from return
/ yield
must always be referenced from the State class, NOT the instance
class State(rx.State):
def handlerA(self):
...
def handlerB(self):
return self.handlerA() # β Will raise TypeError now!
def handlerC(self):
return State.handlerA() # β
Always reference chained handlers by class
The exception will look like TypeError: Your handler State.handlerB must only return/yield: None, Events or other EventHandlers referenced by their class (not using self)
and will occur when the handler is called, not at compile time.
Removal of Config
knobs
admin_dash
- configure the admin dashboard viarx.App
insteadbackend_transports
- all connections will use websocketcors_credentials
db_config
- usedb_url
insteadenv
- specify the run environment via CLI flags toreflex run --env dev|prod
env_path
- reading environment variables from a file is no longer supported (suggest use ofdocker-compose
or simplysource
the env file before runningreflex
)override_os_envs
- os environment variables will always take precedencepolling_max_http_buffer_size
- all connections will use websocket
New Features
Support f-string formatting of State vars
Frontend rendering functions can now make use of f"built in {State.value}"
style formatting, instead of +
concatenation.
Node.js is automatically installed on Windows (non-WSL)
Using the cross-platform fnm
tool to facilitate automatic installation of node runtime on native windows platform, where previously a manual install was needed.
POSIX support for fnm
to replace nvm
is coming soon.
Display system and environment information with --loglevel debug
For easier bug reporting and investigations, all relevant platform info, config, and tools used by Reflex will be logged in debug mode.
rx.selected_files
Var exposes files selected by the rx.upload
component
This new Var can be rendered as a frontend component:
rx.foreach(
rx.selected_files,
rx.text,
)
Improvements
Frontend performance boost
Refactoring the main frontend event loop reduces event handling and rendering time by 3x.
Refactored Config
class
Simplify configuration knobs and recognize all configuration values set as environment variables.
rx.form
now works with more form components
Including rx.pin_input
, rx.number_input
, and rx.range_slider
More flexible container serialization inside State classes
set
is now supported as aVar
type- Recursive serialization now allows for
list
,tuple
, andset
of PIL image, plotly plots, and pandas dataframes.
Use βtrailingSlashβ mode to better support static site hosting
When exporting a site via reflex export
, an index.html
file will be created inside a directory for each static route, which makes hosting via s3, github pages, netlify, and others simpler by not requiring a βtry_filesβ rule or rewrites.
docker-example
is simplified and extended
The main Dockerfile
is simpler and there is now a compose.yaml
and Caddy.Dockerfile
which can be used to deploy a reflex app with automatic TLS support.
Other Improvements
- Expose
debounce_timeout
prop onrx.input
andrx.text_area
for tuning fully-controlled input behavior on large sites. - Ignore
*.db
and files in default.gitignore
template NoSSRComponent
supports components using either named or default exports.
Bug Fixes
- Flex
wrap
anddirection
props accept list of values, for use at different responsive breakpoints. - Can specify
on_load
when defining a custom 404 page. - Raise useful exception when a user-defined State var shadows an internal name.
BUN_PATH
is respected again (regression from 0.2.3)- Var operations like
to_string
,and
, andor
return a new Var with the correcttype_
set. - Passing a
dict
as a prop where the values contain double quotes is no longer an error. (Fixrx.html
component where content contains double quotes)
Other Changes
- For show file on PyPI correctly, to use the full-path hyperlink to indicate the raw file by @milochen0418 in #1559
- PR zh/zh_tw readme update by @milochen0418 in #1557
- Add windows warning message. by @Alek99 in #1570
- Change fixture scope to be run per session rather than per function by @mat-mil in #1569
- App harness use new_process by @picklelo in #1573
- Update urls to reflex.dev by @picklelo in #1572
- Update CONTRIBUTING.md by @Alek99 in #1580
- Add AppHarness for form submit by @Lendemor in #1571
- FIXED #1598: pyproject.toml: Wrong repository URL by @jenisys in #1602
- test_dynamic_routes: fix flakyness in test_dynamic_routes by @masenf in #1603
- Fix rx.link href prop and Var.to_string type by @picklelo in #1600
- integration tests: don't shadow real error when screenshot fails by @masenf in #1608
- link: fix link with no href by @masenf in #1612
- Update .gitignore to ignore coverage.* files by @martinxu9 in #1623
- Remove unused
full_control
related code by @martinxu9 in #1624 - test_form_submit: poll for backend_state to be updated by @masenf in #1625
New Contributors
- @Smit-Parmar made their first contribution in #1535
- @mat-mil made their first contribution in #1568
- @jenisys made their first contribution in #1602
- @martinxu9 made their first contribution in #1614
- @danik292 made their first contribution in #1645
Full Changelog: v0.2.4...v0.2.5
v0.2.4
What's Changed
- Update Readme by @Alek99 in #1463
- Guide to clone the correct repo in CONTRIBUTING.md by @milochen0418 in #1471
- replace favicon.ico to represent reflex by @milochen0418 in #1469
- Disable fully controlled Input and TextArea by @masenf in #1383
- Fix Nextjs Dynamic Import by @Alek99 in #1480
- Use concurrent.futures for threading by @picklelo in #1483
- Bump version to 0.2.3 by @picklelo in #1481
- Full OS matrix builds for unit and integration tests (Linux, Mac, Windows) by @jackie-pc in #1460
- Windows CI: debug logs encoding fix by @jackie-pc in #1491
- Simplify rxconfig template by @picklelo in #1492
- Update README.md by @Alek99 in #1498
- fail faster in integration test by @jackie-pc in #1493
- Fix deploy command by @picklelo in #1496
- check_initialized: skip REFLEX_DIR check for backend only by @masenf in #1478
- scripts/integration: fix mismerge -- wait for $check_ports by @masenf in #1504
- docker-example: update executable and README by @masenf in #1499
- fix state reset() by @Lendemor in #1501
- CI: Basic integration test for WSL by @jackie-pc in #1510
- add main entry point to allow
python -m reflex
by @masenf in #1516 - Remove Home folder for windows by @ElijahAhianyo in #1502
- fix lost events when yielding by @Lendemor in #1521
- Add alt tag for images by @picklelo in #1524
- NoSSRComponent recognizes is_default by @masenf in #1533
- Wrap Input and TextArea with DebounceInput for full control by @masenf in #1484
- Run AppHarness selenium integration tests in CI by @masenf in #1538
- Expose NoSSRComponent for downstream use by @masenf in #1537
- Get rid of mod_import by @Alek99 in #1547
Full Changelog: v0.2.3...v0.2.4
v0.2.3
What's Changed
- Lendemor/fix datatable rendering by @Lendemor in #1360
- Check bun installation exit code during reflex init by @siddhantgoel in #1385
- Allow custom Tailwind content by @kbrgl in #1399
- rx.App
state
arg should not be required by @ElijahAhianyo in #1361 - Update tests for Foreach by @ElijahAhianyo in #1394
- integration/test_server_side_event.py: tests for set_value by @masenf in #1390
- improve 404 logic by @Lendemor in #1398
- Bump version to 0.2.2 by @picklelo in #1400
- Fix foreach indexing by @picklelo in #1403
- Update Readme links by @TaiJuWu in #1405
- feature: Auto install node by nvm on Linux by @TaiJuWu in #1404
- Bugfix for hidden refs on form submit by @ElijahAhianyo in #1418
- rx.markdown custom styles for tags by @picklelo in #1416
- dev-mode compile: purge .web dir at last min to reduce downtime window by @jackie-pc in #1430
- update templates to remove deprecation warning by @Lendemor in #1437
- List and Dict mutation on setattr by @ElijahAhianyo in #1428
- rename rx.route decorator by @Lendemor in #1442
- Update package.json to use nvm by @picklelo in #1419
- Github action to run unit tests on windows by @jackie-pc in #1444
- update behaviour for wrong state passed as argument of rx.App by @Lendemor in #1447
- Update version flag by @picklelo in #1452
- CI: factor out env setup as composite action by @jackie-pc in #1455
- Improve prerequisites check by @picklelo in #1454
- fix breadcrumb API & add get_page_crumbs method by @Lendemor in #1387
- CI: separate pre-commit github action job by @jackie-pc in #1457
- Remove curl and parallelize node/bun install by @picklelo in #1458
- Add unified logging by @picklelo in #1462
- Show status bar on reflex init by @picklelo in #1467
New Contributors
- @jackie-pc made their first contribution in #1430
Full Changelog: v0.2.2...v0.2.3
v0.2.2
Small release fixing a bug in the render of pc.foreach.
What's Changed
- [Fixes #1351] print SQL execution statements if SQLALCHEMY_ECHO constant is set for debugging by @SlamChillz in #1369
- Fix sitemap output dir by @picklelo in #1382
- table: allow rows to be a Var by @masenf in #1374
- Synchronize Event Namespace by @ElijahAhianyo in #1370
- state.js: do not shadow outer
state
var when updating state by @masenf in #1375 - Fix foreach index type by @picklelo in #1389
New Contributors
- @SlamChillz made their first contribution in #1369
Full Changelog: v0.2.1...v0.2.2
v0.2.1
What's Changed
- component: do not create ref for dynamic id by @masenf in #1307
- Update bug_report.md by @Lendemor in #1312
- state.js: accumulate incoming events by @masenf in #1313
- Computed vars tuple and str indexing support by @ElijahAhianyo in #1322
- Added input el left/right by @Alek99 in #1335
- rx.Model: automigrate using alembic by @masenf in #1321
- Fix codeblock import by @picklelo in #1337
- parameter for turning off nextJS compression by @Lendemor in #1316
- reflex: respect "env" from rxconfig by @masenf in #1338
- reflex.testing.AppHarness: tools for testing reflex apps by @masenf in #1326
- Strict type checking for indexing with vars by @ElijahAhianyo in #1333
- pyproject.toml: bump httpx to ^0.24.0 by @masenf in #1353
- Optimize dev mode compile by @picklelo in #1348
- Add custom message with current time in console when the user exits an app by @QuietPigeon2001 in #1345
- Add Simplified Chinese version of the README by @stevenyuser in #1341
- reflex db migrate CLI and associated config by @masenf in #1336
- Export Error Handling + Improved CLI by @Alek99 in #1359
- Generate sitemap on export by @picklelo in #1358
- Yield with uploads by @ElijahAhianyo in #1339
- reflex db cli: catch exception in makemigrations by @masenf in #1362
- Expose Script component from next/script by @masenf in #1355
New Contributors
- @QuietPigeon2001 made their first contribution in #1345
- @stevenyuser made their first contribution in #1341
Full Changelog: v0.2.0...v0.2.1
v0.2.0
What's Changed
- Get Cookies by @ElijahAhianyo in #1221
- Update readme example by @Alek99 in #1225
- Bugfix: Gitignore file empty newlines by @ElijahAhianyo in #1232
- fix upload file not set state before return by @sheldonchiu in #1227
- Get Local Storage by @ElijahAhianyo in #1234
- add set_clipboard method by @Lendemor in #1230
- Rename pynecone to reflex by @picklelo in #1236
- Update new url by @picklelo in #1246
- Wrapper over subprocess.Popen to unify the launch of child processes by @ozeranskii in #1250
- exclude .web folder from uvicorn file sync due to increased CPU load by @maks1m in #1252
- pc export flag rename by @ElijahAhianyo in #1258
- Allow view overrides when registering models with admin by @siddhantgoel in #1249
- Remove cookies by @ElijahAhianyo in #1223
- Local storage clear and remove by @ElijahAhianyo in #1222
- state: Leading underscore functions are not backend vars by @masenf in #1268
- Fix missing stdout in event handlers by @picklelo in #1271
- Bugfix: Some Pages are not Generated: by @ElijahAhianyo in #1278
- migrate_to_reflex: convert pcconfig to rxconfig by @masenf in #1270
- Fix the zh translation by @milochen0418 in #1262
- link: clear
as
property if link has no href by @masenf in #1272 - fix silent compilation error by @Lendemor in #1281
- Add default styles to markdown by @picklelo in #1284
- fix pc export by @sheldonchiu in #1265
- reflex export:
get_app
beforesetup_frontend
by @masenf in #1286 - Replace pkg_resources with importlib by @siddhantgoel in #1301
- Change readme to reflex by @Alek99 in #1289
- pyproject.toml: update homepage and documentation links by @masenf in #1299
- vars: unbox EventHandler and functools.partial for dep analysis by @masenf in #1305
- fix the link toward docs in default apps by @Lendemor in #1292
- poetry.lock: update pinned versions by @masenf in #1308
New Contributors
- @maks1m made their first contribution in #1252
- @siddhantgoel made their first contribution in #1249
Full Changelog: v0.1.34...v0.2.0