The use_current_url behavior has a fundamental limitation. Its purpose is to merge values from the URL (GET parameters) into the current request. However, in cases where the request itself is actively modifying the GET parameters, it becomes ambiguous—especially when parameters are removed.
If a parameter is updated, the code can easily detect and replace it. But if a parameter is missing, we can’t tell whether:
it was intentionally removed (e.g., the user cleared it on purpose), or
it’s just a fresh page load where the URL happens to be empty, but we still want to carry over the existing browser URL parameters.
This ambiguity means use_current_url isn’t reliably usable. On a true page load, an empty URL might mean “include the existing parameters,” but in other cases, an empty set might mean “drop them.”
The use_current_url behavior has a fundamental limitation. Its purpose is to merge values from the URL (GET parameters) into the current request. However, in cases where the request itself is actively modifying the GET parameters, it becomes ambiguous—especially when parameters are removed.
If a parameter is updated, the code can easily detect and replace it. But if a parameter is missing, we can’t tell whether:
it was intentionally removed (e.g., the user cleared it on purpose), or
it’s just a fresh page load where the URL happens to be empty, but we still want to carry over the existing browser URL parameters.
This ambiguity means use_current_url isn’t reliably usable. On a true page load, an empty URL might mean “include the existing parameters,” but in other cases, an empty set might mean “drop them.”