Skip to content

Tags: reflex-dev/reflex

Tags

reflex-site-shared-v0.0.34

Toggle reflex-site-shared-v0.0.34's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Surface package changelogs on docs site (#6636)

* Publish package changelogs on the docs site under /docs/changelog/

At startup the docs app now reaches up to the repo root and pulls in the
towncrier-managed changelogs (repo-root CHANGELOG.md plus each
packages/*/CHANGELOG.md), serving them through the regular docgen pipeline:

- /changelog/ renders the main reflex changelog; each subpackage gets
  /changelog/<package>/. New package changelogs appear automatically.
- The reflex-enterprise changelog is read from the installed distribution
  (via its dist RECORD) instead of a checked-in copy, so it can never go
  stale; the page appears once the published wheel ships a CHANGELOG.md.
- Changelog markdown is normalized with a canonical H1 title, and the
  on-page TOC is limited to version headings.
- Pages are listed in a Changelog section of the API Reference sidebar,
  included in llms.txt/llms-full.txt and .md asset serving, and the
  footer/navbar Changelog links now point at the new page instead of
  GitHub releases.

https://claude.ai/code/session_01ToXo8Yg1VTuuT2jgBqK6T7

* Prefer the shallowest CHANGELOG.md record in installed distributions

A wheel can vendor third-party changelogs deeper in its tree (e.g. bundled
frontend assets); picking the first RECORD match could surface the wrong
file. Sort candidates by path depth so the package-level changelog wins.

https://claude.ai/code/session_01ToXo8Yg1VTuuT2jgBqK6T7

* Bump reflex-enterprise floor to 0.9.0.post1 for the bundled changelog

The 0.9.0.post1 wheel ships reflex_enterprise/CHANGELOG.md, so the docs
site now renders the enterprise changelog at /changelog/reflex-enterprise/.
Exempt reflex-enterprise from the exclude-newer cutoff like the other
internal lockstep packages.

https://claude.ai/code/session_01ToXo8Yg1VTuuT2jgBqK6T7

* Set APP_HARNESS_FLAG for CI jobs that run the docs app in prod mode

reflex-enterprise 0.9.0 restricts `reflex run --env prod` to paid tiers,
which broke the reflex-docs integration jobs after the version bump. The
gate explicitly exempts reflex's own integration tests via the app
harness flag, so set it for every job that boots the docs app in prod.

https://claude.ai/code/session_01ToXo8Yg1VTuuT2jgBqK6T7

* bump lock file

* docs/app: update reflex-enterprise to 0.9.1

* pin wrapt < 2.2

wrapt 2.2 adds generic typing to ObjectProxy and needs some code change to pass pyright

* revert ruff, pyright, typer, wrapt upgrades

these upgrades introduced pre-commit issues, will upgrade separately and
mitigate the changes in code

* remove useless TYPE_CHECKING import of AuthProvider

---------

Co-authored-by: Claude <noreply@anthropic.com>

reflex-site-shared-v0.0.33

Toggle reflex-site-shared-v0.0.33's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
SEO follow-up: longer docs meta descriptions + missing H1/alt (#6692)

* SEO: longer docs meta descriptions + missing H1/alt (post-deploy report)

extract_doc_description now accumulates prose across sections to ~120-155 chars (was stopping at the first short sentence) and strips 'N minutes' reading-time markers — fixes meta-description-too-short on ~60 docs. Promote recipes/content/forms.md intro to a real # H1 (its only headings were demo rx.heading, now h2). Add alt to the html_embed banner image.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: early-exit description accumulation at structural lines once long enough

Address review: stop gathering at a heading/list when prose already >= min_len so a later section can't be stitched into the meta description; short openers still accumulate across sections.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: use body prose when frontmatter description is short; drop demo H1

extract_doc_description short-circuited on any frontmatter
description/meta_description >= 20 chars, so docs with a short authored
description (airtable, langchain, connect_to_github) kept a too-short
meta description even though their body prose was rich. Gate the
frontmatter/metadata short-circuit on the same ~120-char minimum used for
body accumulation: a short authored description now falls through to the
body prose, and a result that still can't reach the minimum returns None
so docpage's title-based fallback (~115 chars) applies. Net: every docs
page now has a >=~115-char description (205 body-derived, ~40 fallback),
none below 120.

Also drop the live <h1> from the html_embed demo so the rendered page has
a single H1 (its own "HTML Embed"); the demo now shows an h2->h6 ramp,
which still demonstrates raw-HTML heading rendering.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: descriptive HTML <title> for API/CLI-reference pages (title-too-short)

API-reference (App, State, Var, Config, …) and Cloud CLI-reference (Deploy,
Login, Regions, …) pages had <title>s under 30 chars because the title
doubles as the short sidebar/nav label. Add an optional Route.seo_title that
overrides only the HTML <title>/OG/Twitter (via reflex_docs.py head_title =
seo_title or title), leaving the sidebar namespace key (to_snake_case(title))
unchanged. e.g. "App" -> "reflex.App API Reference · Reflex Docs".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: remove extra <h1> on docs component/reference & index pages

Each docs page must have a single <h1> (its doc title). Demote extra
rendered headings:
- heading.md: demo rx.heading(as_="h1") -> as_="h2"
- markdown.md: demo rx.markdown("# …") strings -> "## …" (react-markdown
  renders "#" as a live <h1>)
- form-ll.md: "# " inside `md warning` (not `alert`, so it renders as a real
  <h1>) -> "## "; input-ll.md, databricks.md: level-1 body "# " -> "## "
- library.py / recipes_overview.py / enterprise/components.md index pages:
  per-category rx.el.h1 / h1_comp -> h2 (e.g. /docs/library had 16 <h1>)
- component.py: interactive props-table preview forces as_="h2" for the
  Heading component (rx.heading defaults to <h1>)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: fix /pricing structured-data (Google rich results validation error)

The pricing SoftwareApplication had no offers/review/aggregateRating (a
required field for the SoftwareApplication rich result), and the Product
listed a single misleading "$0 Free" offer. Add an AggregateOffer over the
real tier range (Free $0 / Pro $200 / Enterprise custom => lowPrice 0,
highPrice 200, offerCount 3) to both entities and set operatingSystem="Web".
Applied to both the imported meta/meta.py and the parallel lib/meta/meta.py.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fixes

---------

Co-authored-by: Alek <alek@reflex.dev>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Carlos <cutillascarlos@gmail.com>

reflex-site-shared-v0.0.32

Toggle reflex-site-shared-v0.0.32's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
SEO audit fixes: docs meta/titles/H1/alt + shared redirect & structur…

…ed-data (#6686)

* SEO: dedupe sitewide redirect links and fix JSON-LD in shared site package

Footer/navbar link to /blog/ and /docs/ (was /blog, /docs which 301) and FORUM_URL -> GitHub Discussions, clearing ~1400 'links to redirect' rows sitewide. pricing_jsonld drops the price-less Enterprise offer and blog_index_jsonld drops the invalid ListItem datePublished (Google rich-results / schema.org errors).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: emit complete per-page meta for docs pages

Docs pages now emit description + full Open Graph + Twitter card + canonical (previously only a title), with page-specific OG values and a /docs-prefixed trailing-slash canonical that also drives the sitemap loc. Titles lengthened and de-duplicated; descriptions auto-extracted from each page's first paragraph. Fixes Twitter-card-missing (~770), OG-incomplete (~691), meta-description-missing (~770), duplicate-without-canonical (~765), title-too-short (~549), and non-canonical/3XX-in-sitemap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: add missing H1s, image alt text, and fix broken docs links

Add a top-level H1 to 10 docs pages that had none; add descriptive alt text to ~97 rx.image() calls across docs and to integrations-docs screenshots; repoint the dead build.reflex.dev/tokens link to /docs/hosting/tokens.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Apply pre-commit ruff formatting to docs code blocks

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: address review — broaden numbered-list skip + bound title fallback

extract_doc_description now skips ordered-list items 1.-9. (was 1.-3.) so later numbered items aren't pulled into descriptions; the bare-title fallback is now length-checked, dropping to the unsuffixed title when even that would exceed ~60 chars.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: emit a single og:image (fix favicon + preview duplicate)

Reflex's compiler always renders one og:image from add_page's image kwarg (defaulting to favicon.ico). Pass the real preview image to add_page and strip og:image from the create_meta_tags meta list, so each page has exactly one og:image (the preview) plus one twitter:image, instead of favicon + preview. Applies to the docs renderer (reflex_docs.py) and docs landing page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: stop frontmatter leaking into docs meta descriptions; add image alt

extract_doc_description now prefers a frontmatter description field and otherwise strips the whole --- block before scanning, so lines like 'title: Aligned Grids' or 'tags: DevTools' no longer become the meta description. Also add alt text to docs-landing and shared gallery/markdown images.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* SEO: eliminate remaining multiple-H1 and redirect-link sources

Multiple H1: demote demo rx.heading() to as_=h2 across 57 docs (164 calls), demote section-level markdown '# ' headings to '##' in 18 docs, and render the component 'API Reference' heading as h2 — each docs page now has a single H1. Redirect links: make all top-level internal links in the shared footer/navbar/sidebar trailing-slash (/docs/, /blog/, /pricing/, ...) so they no longer hit 301s. Alt text: add descriptive alt to ui.avatar.image logos/avatars in docs-landing, integration gallery, and shared gallery.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* optimize documentation rendering and add missing trailing slash

* fix canonical leading slash on some pages

---------

Co-authored-by: Alek <alek@reflex.dev>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: carlosabadia <cutillascarlos@gmail.com>

v0.9.6.post1

Toggle v0.9.6.post1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
ENG-9923: Add REFLEX_EXTRA_PLUGINS env var to append to plugin list (#…

…6685)

* ENG-9923: Add REFLEX_EXTRA_PLUGINS env var to append to plugin list

REFLEX_EXTRA_PLUGINS defined plugin import paths that will be added to the
Config.plugins list if the list does not already contain a plugin of that type.

When adding extra plugins, the `disable_plugins` config field is respected, so
explicitly disabled plugins cannot be injected from the environment.

* Remove warning when disabling a non-builtin plugin

* add CHANGELOG entry for 0.9.6.post1 directly

* track invalid plugins when handling env vars

* use more specific InvalidPluginConfigError throughout _normalize_plugins

* let AttributeError fall through in interpret_plugin_class_env

Changes the error message on a bad plugin name which was confusing:

```
Warning: Ignoring invalid REFLEX_EXTRA_PLUGINS entry 'repro_hydrate_fallback.Foobar' (Invalid plugin class:
'Foobar' for REFLEX_EXTRA_PLUGINS[0]. Must be a subclass of Plugin.).
```

To a more clear error

```
Warning: Ignoring invalid REFLEX_EXTRA_PLUGINS entry 'repro_hydrate_fallback.Foobar' (Failed to get plugin class
'Foobar' from module 'repro_hydrate_fallback' for REFLEX_EXTRA_PLUGINS[0]: module 'repro_hydrate_fallback' has no
attribute 'Foobar').
```

* CHANGELOG: error message for interpret_plugin_class_env

Improved error messaging for plugin specifications and fixed warning for non-built-in plugins in config.

* tersify description of REFLEX_EXTRA_PLUGINS

* fix test assertions

previous test cases were asserting on the "wrong" message

reflex-base-v0.9.6.post1

Toggle reflex-base-v0.9.6.post1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
ENG-9923: Add REFLEX_EXTRA_PLUGINS env var to append to plugin list (#…

…6685)

* ENG-9923: Add REFLEX_EXTRA_PLUGINS env var to append to plugin list

REFLEX_EXTRA_PLUGINS defined plugin import paths that will be added to the
Config.plugins list if the list does not already contain a plugin of that type.

When adding extra plugins, the `disable_plugins` config field is respected, so
explicitly disabled plugins cannot be injected from the environment.

* Remove warning when disabling a non-builtin plugin

* add CHANGELOG entry for 0.9.6.post1 directly

* track invalid plugins when handling env vars

* use more specific InvalidPluginConfigError throughout _normalize_plugins

* let AttributeError fall through in interpret_plugin_class_env

Changes the error message on a bad plugin name which was confusing:

```
Warning: Ignoring invalid REFLEX_EXTRA_PLUGINS entry 'repro_hydrate_fallback.Foobar' (Invalid plugin class:
'Foobar' for REFLEX_EXTRA_PLUGINS[0]. Must be a subclass of Plugin.).
```

To a more clear error

```
Warning: Ignoring invalid REFLEX_EXTRA_PLUGINS entry 'repro_hydrate_fallback.Foobar' (Failed to get plugin class
'Foobar' from module 'repro_hydrate_fallback' for REFLEX_EXTRA_PLUGINS[0]: module 'repro_hydrate_fallback' has no
attribute 'Foobar').
```

* CHANGELOG: error message for interpret_plugin_class_env

Improved error messaging for plugin specifications and fixed warning for non-built-in plugins in config.

* tersify description of REFLEX_EXTRA_PLUGINS

* fix test assertions

previous test cases were asserting on the "wrong" message

v0.9.6

Toggle v0.9.6's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Materialize changelogs for reflex v0.9.6 and friends (#6679)

* Materialize changelogs for reflex v0.9.6 and friends

Build the pending news fragments into CHANGELOG.md for the framework and the
modified subpackages. Each version is the next dot bump from the package's
latest release tag:

- reflex                   0.9.5.post2 -> 0.9.6
- reflex-base              0.9.5.post2 -> 0.9.6
- reflex-components-core   0.9.5       -> 0.9.6
- reflex-components-moment 0.9.1       -> 0.9.2
- reflex-components-plotly 0.9.2       -> 0.9.3
- reflex-hosting-cli       0.1.67      -> 0.1.68

Also strip the issue link embedded in the #6617/#6621 fragment text so
towncrier renders each link exactly once.

Dependency pin updates (reflex-components-core's reflex-base >= 0.9.5.post2.dev0
dev pin, and the root reflex-base floor) are intentionally left out: they pin
to as-yet-unpublished versions and must land after reflex-base 0.9.6 is
published, matching the established two-wave release flow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ELfV78gRoQiknTTEXctPs

* Update changelog for version reflex-hosting-cli 0.1.67

v0.1.67 was released without actually publishing the changelog, so publishing it now.

---------

Co-authored-by: Claude <noreply@anthropic.com>

v0.9.6a1

Toggle v0.9.6a1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Materialize changelogs for reflex v0.9.6 and friends (#6679)

* Materialize changelogs for reflex v0.9.6 and friends

Build the pending news fragments into CHANGELOG.md for the framework and the
modified subpackages. Each version is the next dot bump from the package's
latest release tag:

- reflex                   0.9.5.post2 -> 0.9.6
- reflex-base              0.9.5.post2 -> 0.9.6
- reflex-components-core   0.9.5       -> 0.9.6
- reflex-components-moment 0.9.1       -> 0.9.2
- reflex-components-plotly 0.9.2       -> 0.9.3
- reflex-hosting-cli       0.1.67      -> 0.1.68

Also strip the issue link embedded in the #6617/#6621 fragment text so
towncrier renders each link exactly once.

Dependency pin updates (reflex-components-core's reflex-base >= 0.9.5.post2.dev0
dev pin, and the root reflex-base floor) are intentionally left out: they pin
to as-yet-unpublished versions and must land after reflex-base 0.9.6 is
published, matching the established two-wave release flow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ELfV78gRoQiknTTEXctPs

* Update changelog for version reflex-hosting-cli 0.1.67

v0.1.67 was released without actually publishing the changelog, so publishing it now.

---------

Co-authored-by: Claude <noreply@anthropic.com>

reflex-components-plotly-v0.9.3

Toggle reflex-components-plotly-v0.9.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Materialize changelogs for reflex v0.9.6 and friends (#6679)

* Materialize changelogs for reflex v0.9.6 and friends

Build the pending news fragments into CHANGELOG.md for the framework and the
modified subpackages. Each version is the next dot bump from the package's
latest release tag:

- reflex                   0.9.5.post2 -> 0.9.6
- reflex-base              0.9.5.post2 -> 0.9.6
- reflex-components-core   0.9.5       -> 0.9.6
- reflex-components-moment 0.9.1       -> 0.9.2
- reflex-components-plotly 0.9.2       -> 0.9.3
- reflex-hosting-cli       0.1.67      -> 0.1.68

Also strip the issue link embedded in the #6617/#6621 fragment text so
towncrier renders each link exactly once.

Dependency pin updates (reflex-components-core's reflex-base >= 0.9.5.post2.dev0
dev pin, and the root reflex-base floor) are intentionally left out: they pin
to as-yet-unpublished versions and must land after reflex-base 0.9.6 is
published, matching the established two-wave release flow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ELfV78gRoQiknTTEXctPs

* Update changelog for version reflex-hosting-cli 0.1.67

v0.1.67 was released without actually publishing the changelog, so publishing it now.

---------

Co-authored-by: Claude <noreply@anthropic.com>

reflex-components-plotly-v0.9.3a1

Toggle reflex-components-plotly-v0.9.3a1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Materialize changelogs for reflex v0.9.6 and friends (#6679)

* Materialize changelogs for reflex v0.9.6 and friends

Build the pending news fragments into CHANGELOG.md for the framework and the
modified subpackages. Each version is the next dot bump from the package's
latest release tag:

- reflex                   0.9.5.post2 -> 0.9.6
- reflex-base              0.9.5.post2 -> 0.9.6
- reflex-components-core   0.9.5       -> 0.9.6
- reflex-components-moment 0.9.1       -> 0.9.2
- reflex-components-plotly 0.9.2       -> 0.9.3
- reflex-hosting-cli       0.1.67      -> 0.1.68

Also strip the issue link embedded in the #6617/#6621 fragment text so
towncrier renders each link exactly once.

Dependency pin updates (reflex-components-core's reflex-base >= 0.9.5.post2.dev0
dev pin, and the root reflex-base floor) are intentionally left out: they pin
to as-yet-unpublished versions and must land after reflex-base 0.9.6 is
published, matching the established two-wave release flow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ELfV78gRoQiknTTEXctPs

* Update changelog for version reflex-hosting-cli 0.1.67

v0.1.67 was released without actually publishing the changelog, so publishing it now.

---------

Co-authored-by: Claude <noreply@anthropic.com>

reflex-components-moment-v0.9.2

Toggle reflex-components-moment-v0.9.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Materialize changelogs for reflex v0.9.6 and friends (#6679)

* Materialize changelogs for reflex v0.9.6 and friends

Build the pending news fragments into CHANGELOG.md for the framework and the
modified subpackages. Each version is the next dot bump from the package's
latest release tag:

- reflex                   0.9.5.post2 -> 0.9.6
- reflex-base              0.9.5.post2 -> 0.9.6
- reflex-components-core   0.9.5       -> 0.9.6
- reflex-components-moment 0.9.1       -> 0.9.2
- reflex-components-plotly 0.9.2       -> 0.9.3
- reflex-hosting-cli       0.1.67      -> 0.1.68

Also strip the issue link embedded in the #6617/#6621 fragment text so
towncrier renders each link exactly once.

Dependency pin updates (reflex-components-core's reflex-base >= 0.9.5.post2.dev0
dev pin, and the root reflex-base floor) are intentionally left out: they pin
to as-yet-unpublished versions and must land after reflex-base 0.9.6 is
published, matching the established two-wave release flow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ELfV78gRoQiknTTEXctPs

* Update changelog for version reflex-hosting-cli 0.1.67

v0.1.67 was released without actually publishing the changelog, so publishing it now.

---------

Co-authored-by: Claude <noreply@anthropic.com>