finds.dev← search

// the find

wycats/javascript-decorators

★ 2,388 · updated Sep 2021

The original TC39 decorators proposal from Yehuda Katz, which kickstarted the long journey to getting decorators into JavaScript. It describes the Stage 1 design — a descriptor-based model where decorators receive `(target, name, descriptor)` — which was later abandoned in favor of a completely different design. This repo is now a historical artifact; the actual proposal lives at tc39/proposal-decorators.

The descriptor-based desugaring examples are genuinely clear — reading through the ES5/ES6 desugarings gives you a solid mental model of what decorator syntax actually means at runtime. The grammar section is precise and useful for anyone who wanted to understand the syntactic rules. It influenced TypeScript's experimentalDecorators implementation, so this design is still running in millions of production apps today. The interop notes on private state and reusability show the proposal authors were thinking seriously about edge cases.

This design is dead. TC39 rejected the descriptor-based model and shipped a completely different API in ES2022+; anything built on this proposal (TypeScript experimentalDecorators, Babel legacy mode) is now technical debt. Last commit was 2021, README just says 'moved' — zero value in looking here for current behavior. The README doesn't explain *why* this design was dropped, which is the actually interesting thing to know. No implementation notes, no migration path.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →