Skip to content

v2.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Sep 18:47
· 4 commits to master since this release

2.7.0 (2026-09-06)

⚠ BREAKING CHANGES

  • atoms: rootAtom is renamed rootRoute, createRootAtom to
    rootRouteAtom, redirectAtom to redirectRouteAtom, queryParamAtom to
    queryParamRouteAtom, and validateAtom to validateRouteAtom. Their
    options types follow: RootOptions becomes RootRouteOptions and
    QueryParamOptions becomes QueryParamRouteOptions. locationAtom,
    queryAtom, notAtom, navigationGuardAtom and every name already ending in
    RouteAtom are unchanged.

Ticket: 789

  • atoms: resolvedAtom is removed. resolvedAtom(route, load) becomes
    asyncRouteAtom(route, name, load).data, where name is what the loaded object
    binds to if the route is ever used for gating. followResolvedRedirects is
    renamed followAsyncRedirects and takes .data atoms. preloadRoutes is
    renamed preloadAsyncRoutes, matching hydrateAsyncRoutes/followAsyncRoutes.
    The Resolver and RouteLookup types are replaced by one RouteLoader, and
    AsyncRouteAtom.lookup is renamed data. hydrateAsyncRoutes,
    followAsyncRoutes and AsyncRouteSnapshot are unchanged.

Ticket: 675

  • jarl-atoms: notAtom takes a single route atom rather than a spread of
    them. Combine several with unionRouteAtom([...]) first.

Ticket: 420

  • changelog: suppression' mid-paragraph, no colon, not a real footer,
    and the parser swept it (plus the trailing Co-Authored-By line) into the
    release notes as a fabricated BREAKING CHANGES entry.

What it described was also stale even if it had been real: the very next
commit (2db21b1) abandoned that reset-to-2.0.1 plan and continued from
2.5.0 instead, once it turned out npm's dependent-check and dist-tags
made the rollback impossible. Nothing about jarl's public API actually
broke in 2.6.0 - every other entry in the release is an internal
release-process change. Safe to hand-edit: @semantic-release/changelog
only ever prepends new releases, it never rewrites past entries.

Features

  • atoms: add validateAtom for constraints spanning several segments (794f8c0)
  • atoms: one asyncRouteAtom API for async route data (d67c00c)
  • docs: 678 — routing demo that switches on a page route atom (b5a0aec)
  • docs: 907 — host an llms.txt for coding agents installing jarl (daff689)
  • docs: demo page for cancelling navigation on dirty edits (5870133)
  • docs: demo page for custom path atoms (yyyy-mm-dd, name.ext) (f89999e)
  • docs: link jarl-atoms/jarl-react identifiers in code blocks to their API reference (045b894), closes #slug
  • docs: link local relative imports in demo source to GitHub (2cc8dfb)
  • jarl-atoms: 420 — notAtom takes one route and an options object (de0e997)
  • jarl-atoms: 420 — unionRouteAtom combines several routes into one (a2af36c)
  • jarl-atoms: 778 — veto any navigation with navigationGuardAtom (9ac8b10)
  • jarl-atoms: 927 — enumRouteAtom binds a path segment from a fixed set of values (5b43305)
  • jarl-react: 435 — forward NavOptions through useNavigate (5311c85)
  • jarl-react: 778 — useNavigationGuard binding (4b934d2)

Bug Fixes

  • docs: bundle the production SSR server self-contained (82c9772)
  • docs: stop exporting non-component values from Fast Refresh boundaries (abfccd6)
  • e2e: 823 — update registry-smoke to the exports 675/789 renamed (3befb44)
  • infra: JARL1183 — reach the SSR instance directly, dropping the load balancer (48ede6c)
  • infra: JARL1188 — detach the /ssr/* behaviour so the VPC origin can be updated (3e1b2e9)
  • infra: JARL1188 — restore the /ssr/* behaviour on the repointed VPC origin (3292e96)
  • infra: JARL1337 — pin the SSR AMI so deploys stop replacing the instance (6771c3e)

Documentation

  • changelog: remove the bogus 2.6.0 BREAKING CHANGES section (59f9c94)

Code Refactoring

  • atoms: 789 — name every route atom *RouteAtom, and only route atoms (cf4d08e)