Remove empty query parameters from URLs
While working with HTML forms, you'll often end up with query parameters in the URL that don't have a value. For example, if you have a form with a search input and the user submits the form without entering anything, you'll end up with a URL like ?search=
If your app doesn't have a use-case for empty query parameters, you can remove them from the URL by calling a function that throws a redirect response.
async function clearEmptyParams(url: URL) {  let shouldRedirect = false  for (const [key, value] of url.searchParams.entries()) {    if (value === "") {      url.searchParams.delete(key)      shouldRedirect = true    }  }  if (shouldRedirect) {    throw redirect(url.toString())  }}You can then call this function in your loader function on any route that uses GET forms.
export async function loader({ request }: LoaderFunctionArgs) {	const url = new URL(request.url)	await clearEmptyParams(url)  …}