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)