15 — Removed / not shipped¶
This chapter is the tombstone register. It exists so v1 migrators and readers cross-checking against blog posts can find out, in one place, what's gone, what was proposed but not shipped, and what to use instead.
If a row says "(proposed earlier)," that means the surface was named in an early draft of the v2 spec and dropped before ship. The replacement is canonical; the proposed name never existed at run-time.
| Removed / not shipped | What to do instead | Reference |
|---|---|---|
dispatch-with (master) |
(dispatch event {:fx-overrides {...}}) |
MIGRATION M-4 |
dispatch-sync-with (master) |
(dispatch-sync event {:fx-overrides {...}}) |
MIGRATION M-4 |
dispatch-to (proposed earlier) |
(dispatch event {:frame :todo}) |
002 |
subscribe-to (proposed earlier) |
(subscribe query-v {:frame :todo}) |
002 |
frame-dispatcher (proposed earlier) |
dispatcher — captures the current frame at call time; safe to call during render and from async callbacks |
002 |
bound-dispatcher / bound-subscriber (proposed earlier) |
Cut as pure aliases for dispatcher / subscriber. The verb-form names already imply capture-at-call-time semantics. |
002 |
enable-performance-api-tracing! (proposed earlier) |
Performance-API instrumentation is gated on the compile-time re-frame.performance/enabled? goog-define, not a runtime toggle. See 11 — Instrumentation. |
009 |
add-trace-listener / remove-trace-listener (proposed earlier) |
register-listener! / unregister-listener! |
009 |
register-trace-listener / unregister-trace-listener (no-bang, proposed earlier) |
Renamed to register-listener! / unregister-listener! — the bang form matches the side-effecting nature of listener registration. |
009 |
Bare [:my-view "args"] keyword-tagged hiccup |
Var form [my-view "args"] (canonical) or [(rf/view :my-view) "args"] for late-binding by id. |
004 |
h macro (proposed earlier) |
Removed. Use the Var form [my-view "args"] or [(rf/view :my-view) "args"]. |
004 |
reg-global-interceptor |
reg-frame :interceptors — frame-level is the canonical "global within this frame." For cross-frame observation, use register-listener!. |
MIGRATION M-17 |
clear-global-interceptor |
No replacement needed — re-register reg-frame with an updated :interceptors vector (absent-key semantics clear it). |
MIGRATION M-17 |
reg-sub-raw |
reg-sub for app-db reads; Pattern-AsyncEffect for non-app-db sources; state machines for lifecycle; the 006 adapter contract for bridging external reactivity. |
MIGRATION M-18 |
re-frame.alpha/reg |
Per-kind macros: reg-event-db / reg-event-fx / reg-event-ctx / reg-sub / reg-fx / reg-cofx / reg-flow. The re-frame.alpha namespace is dissolved. |
MIGRATION M-23 |
re-frame.alpha/sub |
Vector-form (rf/subscribe [::id arg]). |
MIGRATION M-23 |
re-frame.alpha/reg-sub-lifecycle and built-in lifecycle policies (:safe, :no-cache, :reactive, :forever) |
Sub-cache uses a single algorithm — deferred ref-counting with grace-period. For specific edge cases, file a follow-up bead. | MIGRATION M-23 |
debug interceptor |
Trace surface (Spec 009) + 10x / re-frame-pair | MIGRATION M-21 |
trim-v interceptor |
Canonical map-payload call shape | MIGRATION M-21 |
on-changes interceptor |
Flows (Spec 013) | MIGRATION M-21 |
enrich interceptor |
Flows (derived state) / :schema (validation) / custom ->interceptor (escape hatch) |
MIGRATION M-21 |
after interceptor |
Registered fx (:fx [[:my-fx ...]]) for side-effects; custom ->interceptor for context-shaped work; vendor from v1 if the helper is wanted as a local utility |
MIGRATION M-21 |
with-overrides (v1 macro name) |
Renamed to with-fx-overrides. |
MIGRATION M-50 |
Why these went¶
A few one-line rationales for the larger cuts:
reg-global-interceptor— the v1 surface conflated "global" (process-wide) and "global within this frame" (frame-wide). The frame-wide answer isreg-frame :interceptors; the process-wide answer isregister-listener!(observation, not mutation). Splitting the two ended the confusion.reg-sub-raw— the v1 escape hatch covered four distinct use cases (app-db reads, async sources, lifecycle, external reactivity). Each now has its own surface —reg-sub, Pattern-AsyncEffect, state machines, the adapter contract — and the escape hatch isn't necessary.re-frame.alpha— the alpha namespace was an experiment to unify registration / dispatch under genericreg/sub/disverbs. The unification didn't pay for itself — the per-kind macros read better at the call site and survive better in the linter — and the alpha namespace is dissolved. No APIs in this reference live outsidere-frame.core(with the documented per-namespace exceptions).- The five v1 interceptors (
debug,trim-v,on-changes,enrich,after) — each was either trivially->interceptor-able (so didn't earn its own surface), or replaced by a richer mechanism (flows, schemas, the trace surface).
See also¶
- MIGRATION.md — the AI-driven migration spec, with one rule per row above.
- 01 — Core — the surfaces that replaced the removed ones.