TypeScript-DOM-lib-generator icon indicating copy to clipboard operation
TypeScript-DOM-lib-generator copied to clipboard

[Guidelines Proposal] Change consensus requirements

Open CodeWithShreyans opened this issue 2 months ago • 2 comments

Problem

Current contributor guidelines requires 2 major browser engines to implement a new Web API for its definition to be added to TS DOM types. https://github.com/microsoft/TypeScript-DOM-lib-generator#why-is-my-fancy-api-still-not-available-here

Seeing as Blink possesses >75% of browser engine market share and is by FAR the quickest engine to implement new web standards and standard proposals, this requirement causes unnecessary hassle and possible runtime errors if manually defined types are incorrect.

For example: https://x.com/CodeWShreyans/status/2000710168980377885?s=20 The Web Navigation API was added to the HTML Spec in 2022, shortly followed by Blink's implementation later the same year. Webkit released their implementation 3 days ago, over 3 years after Blink. Gecko still does not support it.

Solution

Add types to TS when a standard is supported by one major browser engine AND published to the official HTML spec. However to encourage safe use, the type can be possibly undefined until implemented by two major browser engines.

For example:

interface Window {
  navigation: Navigation | undefined
}

CodeWithShreyans avatar Dec 15 '25 23:12 CodeWithShreyans

Duplicate of #998

Bashamega avatar Dec 16 '25 05:12 Bashamega

@Bashamega not a duplicate, #998 talks about just one part of the solution, not the proposal itself

CodeWithShreyans avatar Dec 17 '25 03:12 CodeWithShreyans

Doing this would improperly guide people to write a bunch of web-incompatible code. The two-implementation requirement serves as a way to achieve a balance between web compatibility and usability.

And also Navigation API is getting a bunch of specification feedback after having multiple implementations as it's very complex and still missed details, so it's kinda a bad example.

Welcome to the dragon's maw. Navigation, session history, and the traversal through that session history are some of the most complex parts of this standard.

(ICYMI, #2276 added Navigation API which you should be able to use via @types/web.)

saschanaz avatar Dec 19 '25 21:12 saschanaz

I fully agree with saschanaz, it would result in websites being broken for users not on Chrome, and that'd be problematic for the web long-term. It's best to allow standards to be implemented across browsers before the types are available in TypeScript.

connorshea avatar Dec 20 '25 19:12 connorshea