Open
Improvement
1 of 2 issues completed
Description
Description
Now that we support ES2020 (aka not IE11 anymore) and Node.js 18+, we can get rid of parseUrl
in favor of a method that just uses the built-in URL object. This will save us some bundle size (given we can remove that regex), and we get performance benefits from using native code.
Instead of just blanket replacing parseUrl
, we'll slowly convert all it's usages to using a new helper, which looks something like so:
/**
* Parses string to a URL object
*
* @param url - The URL to parse
* @returns The parsed URL object or undefined if the URL is invalid
*/
export function parseStringToURL(url: string): URL | undefined {
try {
// Node 20+, Chrome 120+, Firefox 115+, Safari 17+
if ('canParse' in URL) {
// Use `canParse` to short-circuit the URL constructor if it's not a valid URL
// This is faster than trying to construct the URL and catching the error
return (URL as unknown as URLwithCanParse).canParse(url) ? new URL(url) : undefined;
}
} catch {
// empty body
}
return undefined;
}
- Remove all usages in
@sentry/core
, and implementparseStringToURL
- Replace
With that, we can also refactor getSanitizedUrlString
, which should provide some performance benefits.
Reminder list:
- Can we remove
extractQueryParamsFromUrl
?