Browser compatibility to Netbox #5931

Closed
opened 2025-12-29 19:34:23 +01:00 by adam · 11 comments
Owner

Originally created by @Alestor on GitHub (Jan 12, 2022).

NetBox version

v3.1.5

Python version

3.9

Steps to Reproduce

Use older browser like Chrome Version 76 or 84

  • Go to Devices and select Filter
  • Open a drop-down menu with dynamic content like Sites

Expected Behavior

Within the drop-down menu all available Sites should be displayed.

Observed Behavior

Non of the available sites are displayed. An error within the development Console is shown.

image

Originally created by @Alestor on GitHub (Jan 12, 2022). ### NetBox version v3.1.5 ### Python version 3.9 ### Steps to Reproduce Use older browser like Chrome Version 76 or 84 - Go to Devices and select Filter - Open a drop-down menu with dynamic content like Sites ### Expected Behavior Within the drop-down menu all available Sites should be displayed. ### Observed Behavior Non of the available sites are displayed. An error within the development Console is shown. ![image](https://user-images.githubusercontent.com/6898158/149173080-3f1f7c20-4626-49df-ba51-fb0875d750fb.png)
adam added the type: bugpending closurestatus: under review labels 2025-12-29 19:34:23 +01:00
adam closed this issue 2025-12-29 19:34:23 +01:00
Author
Owner

@kkthxbye-code commented on GitHub (Jan 12, 2022):

replaceAll is available in Chrome 85, I suggest you ask your company to upgrade. I simply don't see a reason to support two+ year old browsers.

You can see other compatible browsers here:

https://caniuse.com/?search=replaceAll

There's really no good reason to run an old version of Chrome. If safety was a concern, updates would be an absolute must considering the amount of 0-days that have been release in the last two+ years for Chrome.

@kkthxbye-code commented on GitHub (Jan 12, 2022): replaceAll is available in Chrome 85, I suggest you ask your company to upgrade. I simply don't see a reason to support two+ year old browsers. You can see other compatible browsers here: https://caniuse.com/?search=replaceAll There's really no good reason to run an old version of Chrome. If safety was a concern, updates would be an absolute must considering the amount of 0-days that have been release in the last two+ years for Chrome.
Author
Owner

@jeremystretch commented on GitHub (Jan 12, 2022):

Whether or not we tweak the code to support older browsers is up for debate (and I'd like to hear from @thatmattlove on the feasibility), we should at least note the minimum supported version of each major browser in the documentation.

@jeremystretch commented on GitHub (Jan 12, 2022): Whether or not we tweak the code to support older browsers is up for debate (and I'd like to hear from @thatmattlove on the feasibility), we _should_ at least note the minimum supported version of each major browser in the documentation.
Author
Owner

@Alestor commented on GitHub (Jan 12, 2022):

Thanks for your input. caniuse.com is very helpful, didn't know that site. My initial request on slack was about minimum supported Browser Versions for Netbox. I can confirm that with Chrome 85 the filters work as intended. I'll do some more test tomorrow.
I totally agree on running old version of any browsers is a security issue. My current case is the deployment of Netbox in a closed environment (without internet access), where also other Web Apps are running. Since there is a policy to ensure compatibility to all the legacy stuff, acceptance tests take a long time and the refresh of browsers happens only every couple of years. Unfortunately from experience I can tell, that this is not a unusual situation at big companies.
Anyway, I don't expect to get any support for this. I just need to be able to tell, what's the minimal requirements to run netbox.

@Alestor commented on GitHub (Jan 12, 2022): Thanks for your input. caniuse.com is very helpful, didn't know that site. My initial request on slack was about minimum supported Browser Versions for Netbox. I can confirm that with Chrome 85 the filters work as intended. I'll do some more test tomorrow. I totally agree on running old version of any browsers is a security issue. My current case is the deployment of Netbox in a closed environment (without internet access), where also other Web Apps are running. Since there is a policy to ensure compatibility to all the legacy stuff, acceptance tests take a long time and the refresh of browsers happens only every couple of years. Unfortunately from experience I can tell, that this is not a unusual situation at big companies. Anyway, I don't expect to get any support for this. I just need to be able to tell, what's the minimal requirements to run netbox.
Author
Owner

@mathieu-mp commented on GitHub (Feb 4, 2022):

We ran into the same issue here on another closed environment, after upgrading to 3.1.6.
Is there any chance we see some retro-compatibility implemented, or the use of a more compatible solution ?

@mathieu-mp commented on GitHub (Feb 4, 2022): We ran into the same issue here on another closed environment, after upgrading to 3.1.6. Is there any chance we see some retro-compatibility implemented, or the use of a more compatible solution ?
Author
Owner

@jeremystretch commented on GitHub (Feb 4, 2022):

@mathieu-mp I'd be happy to assign this issue to you if you'd like to volunteer to change the relevant TypeScript to support older browsers.

@jeremystretch commented on GitHub (Feb 4, 2022): @mathieu-mp I'd be happy to assign this issue to you if you'd like to volunteer to change the relevant TypeScript to support older browsers.
Author
Owner

@mathieu-mp commented on GitHub (Feb 4, 2022):

I tried something there: #8555

@mathieu-mp commented on GitHub (Feb 4, 2022): I tried something there: #8555
Author
Owner

@kkthxbye-code commented on GitHub (Feb 4, 2022):

Edit:
Instead of matheius changes, I think the target here should be changed to ES2020:

https://github.com/netbox-community/netbox/blob/develop/netbox/project-static/tsconfig.json#L12

And them "ES2021.String" should be added to the lib option:

https://www.typescriptlang.org/tsconfig#lib

This will include the typescript standardlibrary for strings for everyone, not sure how big of an impact that is.

I'm still heavily against catering for old versions of auto-updating browsers. It's everything that the webdev space has been working hard to get away from for the past many years.

@kkthxbye-code commented on GitHub (Feb 4, 2022): Edit: Instead of matheius changes, I think the target here should be changed to ES2020: https://github.com/netbox-community/netbox/blob/develop/netbox/project-static/tsconfig.json#L12 And them "ES2021.String" should be added to the lib option: https://www.typescriptlang.org/tsconfig#lib This will include the typescript standardlibrary for strings for everyone, not sure how big of an impact that is. I'm still heavily against catering for old versions of auto-updating browsers. It's everything that the webdev space has been working hard to get away from for the past many years.
Author
Owner

@mathieu-mp commented on GitHub (Feb 7, 2022):

Edit: Instead of matheius changes, I think the target here should be changed to ES2020:

https://github.com/netbox-community/netbox/blob/develop/netbox/project-static/tsconfig.json#L12

And them "ES2021.String" should be added to the lib option:

https://www.typescriptlang.org/tsconfig#lib

This will include the typescript standardlibrary for strings for everyone, not sure how big of an impact that is.

I'm still heavily against catering for old versions of auto-updating browsers. It's everything that the webdev space has been working hard to get away from for the past many years.

Hi @kkthxbye-code, does it mean we wouldn't have to apply any code change, and that TypeScript would come with all that old browsers need to deal with e.g. string.replaceAll ?

@mathieu-mp commented on GitHub (Feb 7, 2022): > Edit: Instead of matheius changes, I think the target here should be changed to ES2020: > > https://github.com/netbox-community/netbox/blob/develop/netbox/project-static/tsconfig.json#L12 > > And them "ES2021.String" should be added to the lib option: > > https://www.typescriptlang.org/tsconfig#lib > > This will include the typescript standardlibrary for strings for everyone, not sure how big of an impact that is. > > I'm still heavily against catering for old versions of auto-updating browsers. It's everything that the webdev space has been working hard to get away from for the past many years. Hi @[kkthxbye-code](https://github.com/kkthxbye-code), does it mean we wouldn't have to apply any code change, and that TypeScript would come with all that old browsers need to deal with e.g. string.replaceAll ?
Author
Owner

@kkthxbye-code commented on GitHub (Feb 7, 2022):

@mathieu-mp - I was actually wrong. Typescript doesn't provide polyfills at all, you can only target the es version of the syntax. So we are back to either gimping the usable JS version, adding polyfills or using something like babel.

If your change is accepted, the developer docs should be updated with what es version/features are allowed to be used.

Edit:
There should probably also be a way to catch if any newer features are used when bundling (I don't think it is fair to require contributers to install insecure browsers to test). I have had no luck finding anything. I tried something like es-check, but it doesn't catch the newer String methods. Neither does typescript if you change the target version. Looking at the bundle.js package, the target is already set to es2016 (what are we actually supporting?), so that clearly doesn't catch it. Babel is able to polyfill it using core-js if you target for example chrome 76.

@kkthxbye-code commented on GitHub (Feb 7, 2022): @mathieu-mp - I was actually wrong. Typescript doesn't provide polyfills at all, you can only target the es version of the syntax. So we are back to either gimping the usable JS version, adding polyfills or using something like babel. If your change is accepted, the developer docs should be updated with what es version/features are allowed to be used. Edit: There should probably also be a way to catch if any newer features are used when bundling (I don't think it is fair to require contributers to install insecure browsers to test). I have had no luck finding anything. I tried something like es-check, but it doesn't catch the newer String methods. Neither does typescript if you change the target version. Looking at the bundle.js package, the target is already set to es2016 (what are we actually supporting?), so that clearly doesn't catch it. Babel is able to polyfill it using core-js if you target for example chrome 76.
Author
Owner

@github-actions[bot] commented on GitHub (Apr 9, 2022):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.

@github-actions[bot] commented on GitHub (Apr 9, 2022): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md).
Author
Owner

@github-actions[bot] commented on GitHub (May 9, 2022):

This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.

@github-actions[bot] commented on GitHub (May 9, 2022): This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#5931