CRAN submission. Major release upgrading the package to React Router v7 with the data router API (loaders, actions, fetchers, deferred data).
RouterProvider() now takes a router
argument built with create*Router() instead of route
children.data() was renamed to dataResponse() and
replace() was renamed to replaceResponse() to
avoid masking base R functions.reloadDocument on Link() /
NavLink() defaults to FALSE.react-router-dom 7.x).createBrowserRouter(),
createHashRouter(), createMemoryRouter()
paired with RouterProvider(router = ...) — the recommended
way to use loaders, actions, fetchers, and Await.Await, Form,
ScrollRestoration, Outlet,
Routes, Navigate.useLoaderData, useActionData,
useNavigation, useNavigate,
useNavigationType, useMatch,
useMatches, useSearchParams,
useRouteError, useRouteLoaderData,
useFetcher, useFetchers,
useRevalidator, useBlocker,
useSubmit, and more.redirect(),
replaceResponse(), redirectDocument(),
dataResponse().redirect(), replaceResponse(), and
redirectDocument() reject unsafe URL schemes
(javascript:, data:, vbscript:)
and protocol-relative targets.reactRouterExample() validates example
against the list of bundled examples, closing a path-traversal vector in
user-supplied input.Route() validates that loader and
action inherit from JS_EVAL at call time,
surfacing a common mistake before it becomes a browser-side error.dataResponse(): value is now a required
argument.useNavigate(), useSubmit(), and
useLinkClickHandler() refuse into= with
as = "children" and point to render = JS(...)
or as = "onClick" — these hooks return functions, not
renderable children.RouterProvider logs a dev-mode warning when the route
tree changes after mount; remount via a key prop to apply
new routes.reloadDocument is now FALSE by default
(like in React Router 6.30.0)