Hello {{@name}}
+ + +// New syntax for when you need generics +class GenericComponent{{json-stringify @data}}
+
+}
+```
+
+## Drawbacks
+
+### Learning Complexity
+
+Adding another way to define template-only components could be confusing for new users. However, this is mitigated by:
+- The feature is TypeScript-specific and optional
+- It follows familiar class extension patterns
+- Clear documentation about when to use each approach
+- Eslint and Glint tooling can reduce the switching costs (which we probably want anyway for our existing component format switching)
+
+## Alternatives
+
+n/a
+
+## Unresolved questions
+
+n/a
\ No newline at end of file
From 142772eb9ebdb93f845b0ebb77bbc77a1edd07cc Mon Sep 17 00:00:00 2001
From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com>
Date: Thu, 14 Aug 2025 12:37:55 -0400
Subject: [PATCH 2/5] Update meta
---
...class-component.md => 1133-template-only-class-component.md} | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename text/{0000-template-only-class-component.md => 1133-template-only-class-component.md} (99%)
diff --git a/text/0000-template-only-class-component.md b/text/1133-template-only-class-component.md
similarity index 99%
rename from text/0000-template-only-class-component.md
rename to text/1133-template-only-class-component.md
index 58f4e7545c..24bd6f39fa 100644
--- a/text/0000-template-only-class-component.md
+++ b/text/1133-template-only-class-component.md
@@ -7,7 +7,7 @@ teams:
- framework
- typescript
prs:
- accepted: # Fill this in with the URL for the Proposal RFC PR
+ accepted: https://github.com/emberjs/rfcs/pull/1133
project-link:
suite:
---
From 1f67b4956d9d2fb77f02ceb5fea2e0d2f27e7ea0 Mon Sep 17 00:00:00 2001
From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com>
Date: Thu, 14 Aug 2025 12:43:39 -0400
Subject: [PATCH 3/5] Add polyfill example
---
text/1133-template-only-class-component.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/text/1133-template-only-class-component.md b/text/1133-template-only-class-component.md
index 24bd6f39fa..8f7fdf6970 100644
--- a/text/1133-template-only-class-component.md
+++ b/text/1133-template-only-class-component.md
@@ -149,7 +149,7 @@ var Demo = template(`{{@value}}`, { scope: () => ({}) });
However, because we also support compile-less environments, the `TemplateOnly` export would _work_ if it made it to the runtime.
-[Here is an example implementation of that fallback behavior in the Limber REPL]()
+[Here is an example implementation of that fallback behavior in the Limber REPL](https://limber.glimdown.com/edit?c=JYWwDg9gTgLgBAbzjKBDAxgawKYBM4C%2BcAZlBCHAOQACA5gDagjZQD0KGmwAdrZQNwAoUJFiI4EboRJkKNbCABGLViAi5gxYCwHDw0eEnSowqRcEYxtAZwA0ca9hgBhcpG7ZuMALKpuqWhYiUnIqagVlNnQ3SU8YXREDcWt0AAs8AFd6bGkQuXClFSgM7noICDBdQXR6VGtrOAAVBTBamGwAeVKAT0QCQVZWOABlAFFRgC44VJgYMGsJwdpgGFSMxQA6aJBWBiYWACtrXcYQZigAWgA3HcUyxVYAZgA2dAAWACYATjeABlxfl9sMRsAB2YjPACMqEej1BqABz0ekI%2BAFZiNDUSjnr9iB9WKYsAFsMcAKR-PZnIolKzMViMB7bdxxdgtNrYC6SejdDYwawAYgAMh8PtVavU4M5xdZmuB2V1ub5-IEoIhBHAHDBUFZ0GqNRrsvAQH5iaqALxwDwAd0l0tlrW1nR6StNAAoAJRCfUOJyufQeLwulWuj1wM0APjgxuVLHs9vlPU9cHVhBTKeMpnMlhsYY1GbMFhWNldlEeG0hj0o9gQKY1uBJKAy6Bg0CmxFQ9EctlrcDq3W46EFmmw6G6NWwzg79EUnAWJA7XZ7GTAuEdAAlypg2wvsN2NQRPYJ01BsI6-cyvK7z7EvFK6nZe1BaNZ3Xr9SeYBkoFJrZKYgGXGlD0vVTFNAhcSR2gADxgUMa29D8vx-LJ6BA-p%2BkEbAoNEeB63bLJ4Bqe84DXbB6DKAB1aB6HwLD2m4XAGnjR0FV6eC4GiGlcw%2BECAB52jlR1wx7bgIDgAADVZgGscSAEIe14sBwwATQgDJplQK4chqYAsDwZB0jgRQMlmSREAQKTrC2NSvAIIhaRJDZeIJYSNWcgSHXaYT%2BiAA&format=gjs)
### Usage Examples
From 62b1eece30941d993281dcd5495ffbbd86ced25b Mon Sep 17 00:00:00 2001
From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com>
Date: Thu, 14 Aug 2025 17:28:32 -0400
Subject: [PATCH 4/5] Automatic otpmization of class components
---
text/1133-template-only-class-component.md | 259 ------------------
...-automatic-class-component-optimization.md | 171 ++++++++++++
2 files changed, 171 insertions(+), 259 deletions(-)
delete mode 100644 text/1133-template-only-class-component.md
create mode 100644 text/1134-automatic-class-component-optimization.md
diff --git a/text/1133-template-only-class-component.md b/text/1133-template-only-class-component.md
deleted file mode 100644
index 8f7fdf6970..0000000000
--- a/text/1133-template-only-class-component.md
+++ /dev/null
@@ -1,259 +0,0 @@
----
-stage: accepted
-start-date: 2025-08-14T00:00:00.000Z
-release-date: # In format YYYY-MM-DDT00:00:00.000Z
-release-versions:
-teams:
- - framework
- - typescript
-prs:
- accepted: https://github.com/emberjs/rfcs/pull/1133
-project-link:
-suite:
----
-
-# Template-Only Class Components
-
-## Summary
-
-Add a new `TemplateOnly` base class to `@glimmer/component` that enables template-only components to be defined as classes, allowing them to support TypeScript generics for better type safety.
-
-## Motivation
-
-Currently, template-only components in Ember are defined using `const` declarations like this:
-
-```typescript
-export const Demo =
- {{@value}}
-
-```
-
-However, this approach has a significant limitation: **it's not possible to specify generic type parameters** with `const` declarations in TypeScript. This prevents template-only components from having proper type safety when they need to work with generic data types.
-
-For example, consider a template-only component that should work with different types of values:
-
-```typescript
-import type { TOC } from '@ember/component/template-only';
-
-// This doesn't work - can't add generics to const declarations
-export const DemoHello {{@name}}
- - -// New syntax for when you need generics -class GenericComponent{{json-stringify @data}}
-
-}
-```
-
-## Drawbacks
-
-### Learning Complexity
-
-Adding another way to define template-only components could be confusing for new users. However, this is mitigated by:
-- The feature is TypeScript-specific and optional
-- It follows familiar class extension patterns
-- Clear documentation about when to use each approach
-- Eslint and Glint tooling can reduce the switching costs (which we probably want anyway for our existing component format switching)
-
-## Alternatives
-
-n/a
-
-## Unresolved questions
-
-n/a
\ No newline at end of file
diff --git a/text/1134-automatic-class-component-optimization.md b/text/1134-automatic-class-component-optimization.md
new file mode 100644
index 0000000000..4ac52e701b
--- /dev/null
+++ b/text/1134-automatic-class-component-optimization.md
@@ -0,0 +1,171 @@
+---
+stage: accepted
+start-date: 2025-08-14T00:00:00.000Z
+release-date: # In format YYYY-MM-DDT00:00:00.000Z
+release-versions:
+teams:
+ - framework
+ - typescript
+prs:
+ accepted: https://github.com/emberjs/rfcs/pull/1134
+project-link:
+suite:
+---
+
+# Automatic class component optimization
+
+## Summary
+
+Enable `@glimmer/component` Component classes with no body (other than the template) to be automatically optimized at build time to the lighter template-only component format, allowing developers to use familiar class syntax with TypeScript generics while maintaining optimal runtime performance.
+
+This will only be available in applications as it will require a decision during compile time based on results of traversing the `template` contents.
+
+## Motivation
+
+Currently, template-only components in Ember are defined using `const` declarations like this:
+
+```glimmer-ts
+export const Demo =
+ {{@value}}
+
+```
+
+However, this approach has a significant limitation: **it's not possible to specify generic type parameters** with `const` declarations in TypeScript. This prevents template-only components from having proper type safety when they need to work with generic data types.
+
+For example, consider a template-only component that should work with different types of values:
+
+```glimmer-ts
+import type { TOC } from '@ember/component/template-only';
+
+// This doesn't work - can't add generics to const declarations
+export const Demo