Status: Backlog Priority: P2 Created: 2026-02-19 Owner: —
The routing system follows a RAD-like pattern where the options namespace is the base library namespace plus -options. Currently:
c.f.s.i.f.ui-routes-options (deprecated) defines component options as qualified keywords under ::ui-routes/c.f.s.i.f.routing.core is the main routing API namespacecore suffix is non-standard — the API ns should just be c.f.s.i.f.routingTo follow the RAD pattern:
c.f.s.i.f.routing (rename from routing.core)c.f.s.i.f.routing-options (new, duplicates deprecated ui-routes-options)The deprecated ui-routes-options stays as-is for backward compat. The new routing-options ns defines the same vars but with qualified keywords under ::routing/ namespace.
Create src/main/com/fulcrologic/statecharts/integration/fulcro/routing_options.cljc
c.f.s.i.f.routing-optionsui-routes-options: initialize, initial-props, busy?, statechart, statechart-id, actors::routing/ (i.e. :c.f.s.i.f.routing/initialize, etc.)ui-routes-options are for legacy ui-routes users only.Rename routing/core.cljc → routing.cljc
c.f.s.i.f.routingrouting/core.cljc should become a thin delegation ns with ^:deprecated metadata that requires the new ns and re-defs all public vars (use potemkin/import-vars pattern or manual def delegation)Rename routing/core_test.cljc → routing_test.cljc
c.f.s.i.f.routing-testrouting.core to routingUpdate alias in the main routing ns from uro to sfro (statechart fulcro routing options)
ui-routes-options :as uro to routing-options :as sfrouro/ references in the routing ns body to sfro/Update routing.core require in other files:
routing-demo2/ui.cljs — requires routing.core :as sroute → routing :as sroute (alias stays same)routing-demo2/ui.cljs — uses uro/busy?, uro/statechart-id → sfro/busy?, sfro/statechart-id (update require + references)Update Guide.adoc — all uro/ prefixes in routing section become sfro/
Update integration/CLAUDE.md — file map entry for routing/core.cljc → routing.cljc
Do NOT change ui-routes-options or ui-routes — they remain deprecated as-is
src/main/.../fulcro/routing_options.cljc — NEW options ns
src/main/.../fulcro/routing.cljc — RENAMED from routing/core.cljc
src/test/.../fulcro/routing_test.cljc — RENAMED from routing/core_test.cljc
src/main/.../fulcro/routing/core.cljc — Convert to deprecated delegation ns
src/main/.../fulcro/routing/url_codec.cljc — Docstring ref to routing.core → routing
src/routing-demo2/.../routing_demo2/ui.cljs — Update routing.core → routing require; uro/ → sfro/
src/routing-demo2/.../routing_demo2/app.cljs — Update routing.core → routing require
src/routing-demo2/.../routing_demo2/chart.cljc — Update routing.core → routing require + docstrings
src/routing-demo2/.../routing_demo2/admin_chart.cljc — Update routing.core → routing require + docstring
src/test/.../routing_demo2/chart_test.cljc — Update routing.core → routing require
src/test/.../fulcro/routing/url_sync_headless_spec.cljc — Update routing.core → routing require
Guide.adoc — routing.core → routing (6 refs); uro/ → sfro/ (8 refs)
src/main/.../integration/CLAUDE.md — Update file map
src/main/.../fulcro/ui_routes.cljc — Legacy, uses `ro` alias, unchanged
src/main/.../fulcro/ui_routes_options.cljc — Deprecated, unchanged
routing_options.cljc(ns com.fulcrologic.statecharts.integration.fulcro.routing-options
"Component options for statechart-driven routing.
Follows the RAD pattern: options ns = base API ns + '-options'.")
(def initialize
"Component option. One of :once, :always, or :never. ..."
:com.fulcrologic.statecharts.integration.fulcro.routing/initialize)
(def initial-props ...)
(def busy? ...)
(def statechart ...)
(def statechart-id ...)
(def actors ...)
routing.cljc (copy of routing/core.cljc)routing/core.cljcc.f.s.i.f.routingui-routes-options :as uro → routing-options :as sfrouro/ → sfro/ in file bodyuro/ → sfro/routing/core.cljc to deprecated delegation(ns ^:deprecated com.fulcrologic.statecharts.integration.fulcro.routing.core
"DEPRECATED. Use com.fulcrologic.statecharts.integration.fulcro.routing instead."
(:require [com.fulcrologic.statecharts.integration.fulcro.routing :as routing]))
(def session-id routing/session-id)
(def route-to-event-name routing/route-to-event-name)
;; ... all public vars ...
routing/core_test.cljc → routing_test.cljc — update ns and requireurl_sync_headless_spec.cljc — change require from routing.core → routingrouting_demo2/chart_test.cljc — change require from routing.core → routingAll demo files require routing.core :as sroute — update to routing :as sroute (alias stays sroute):
ui.cljs — also change uro/busy? → sfro/busy?, uro/statechart-id → sfro/statechart-id, add routing-options :as sfro requireapp.cljs — require onlychart.cljc — require + docstring references to routing.coreadmin_chart.cljc — require + docstring referencerouting.core (ns name, require forms, prose) → routinguro/ (component options documentation) → sfro/routing.core :as sroute → routing :as sroutefulcro/routing/core.cljc → fulcro/routing.cljcfulcro/routing_options.cljcrouting.core → routingdocs/ai/running-tests.md) — all must passnpx shadow-cljs compile test && npx karma start --single-run — all must passnpx shadow-cljs compile routing-demo2 — compiles without warningsuro/ references should be zero outside deprecated ui_routes.cljc and ui_routes_options.cljcrouting.core requires should only exist in the deprecated delegation ns routing/core.cljcrouting\.core in Guide.adoc or demo docstringsCan you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |