Skip to content

Commit c5f1fef

Browse files
Merge branch 'main' into advance-rfc-1099
2 parents 91898a6 + 83d006c commit c5f1fef

File tree

2 files changed

+44
-21
lines changed

2 files changed

+44
-21
lines changed

text/0977-v2-app-format.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
---
2-
stage: accepted
3-
start-date: 2023-10-06
4-
release-date: # In format YYYY-MM-DDT00:00:00.000Z
2+
stage: released
3+
start-date: 2023-10-06T00:00:00.000Z
4+
release-date: 2025-10-15
55
release-versions:
6-
teams: # delete teams that aren't relevant
6+
ember-cli: 6.8.0
7+
teams:
78
- cli
89
- data
910
- framework
1011
- learning
1112
prs:
12-
accepted: https://github.com/emberjs/rfcs/pull/977
13+
accepted: 'https://github.com/emberjs/rfcs/pull/977'
14+
ready-for-release: 'https://github.com/emberjs/rfcs/pull/1062'
15+
released: 'https://github.com/emberjs/rfcs/pull/1147'
1316
project-link:
14-
suite:
17+
suite:
1518
---
1619

1720
<!---

text/1068-tracked-collections.md

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
---
2-
stage: accepted
2+
stage: released
33
start-date: 2025-01-12T00:00:00.000Z
4-
release-date: # In format YYYY-MM-DDT00:00:00.000Z
4+
release-date: 2025-10-13
55
release-versions:
6-
teams: # delete teams that aren't relevant
6+
ember-source: 6.8.0
7+
teams:
78
- data
89
- framework
910
- learning
1011
prs:
11-
accepted: https://github.com/emberjs/rfcs/pull/1068
12+
accepted: 'https://github.com/emberjs/rfcs/pull/1068'
13+
ready-for-release: 'https://github.com/emberjs/rfcs/pull/1088'
14+
released: 'https://github.com/emberjs/rfcs/pull/1146'
1215
project-link:
13-
suite:
16+
suite:
1417
---
1518

1619
<!---
@@ -118,7 +121,7 @@ import {
118121
trackedObject, trackedArray,
119122
trackedMap, trackedWeakMap,
120123
trackedSet, trackedWeakSet
121-
} from '@ember/reactive';
124+
} from '@ember/reactive/collections';
122125
```
123126

124127
### `trackedObject`, `trackedArray`, `trackedMap`, etc
@@ -149,7 +152,7 @@ Some examples assuming implementation of [RFC#998: Make fn built-in in strict-mo
149152

150153

151154
```gjs
152-
import { trackedArray } from '@ember/reactive';
155+
import { trackedArray } from '@ember/reactive/collections';
153156
154157
const nonTrackedArray = [1, 2, 3];
155158
const addTo = (arr) => arr.push(Math.random());
@@ -187,7 +190,7 @@ const addTo = (arr) => arr.push(Math.random());
187190
#### Example `trackedObject`
188191

189192
```gjs
190-
import { trackedObject } from '@ember/reactive';
193+
import { trackedObject } from '@ember/reactive/collections';
191194
192195
const nonTrackedObject = { a: 1 };
193196
const addTo = (obj) => obj[Math.random()] = Math.random();
@@ -248,6 +251,23 @@ For example, other future exports from `@ember/reactive` (in future RFCs), may i
248251
without the static analysis guarantees of `type=module`, every consumer of `@ember/reactive` would always have all of these exports in their build.
249252
For some utilities, we can place them under sub-path-exports, such as `@ember/reactive/window`, for window-specific reactive properties, but the exact specifics of each of these can be hashed out in their individual RFCs.
250253

254+
#### Why are the collections under `@ember/reactive/collections`?
255+
256+
Placing the collections in the main export surface alongside core primitives like `tracked`, `cached`, `cell`, and `resource` may not conflate importance of the collections.
257+
258+
> [!NOTE]
259+
> At the time of writing of this RFC, `tracked`, `cached`, `cell`, and `resource` RFCs have not been accepted for inclusion in `@ember/reactive`
260+
261+
This is motivated by actual usage out in the ecosystem of tracked-built-ins:
262+
263+
here are results from github.com searches for the `tracked-built-ins` equivalents (excluding ember-owned repos and forks of them):
264+
- "new TrackedObject(" - [520 Results]([https://github.com/search?q=%22new+TrackedObject%28%22&type=code](https://github.com/search?q=%22new+TrackedObject%28%22+NOT+is%3Afork++NOT+org%3Aemberjs+NOT+org%3Atracked-tools+NOT+org%3Aember-cli+NOT+org%3Aember-migration-utils+NOT+org%3Aember-learn&type=code))
265+
- "new TrackedArray(" - [312 Results](https://github.com/search?q=%22new+TrackedArray%28%22+NOT+is%3Afork++NOT+org%3Aemberjs+NOT+org%3Atracked-tools+NOT+org%3Aember-cli+NOT+org%3Aember-migration-utils+NOT+org%3Aember-learn+&type=code)
266+
- "new TrackedSet(" - [74 Results](https://github.com/search?q=%22new+TrackedSet%28%22+NOT+is%3Afork++NOT+org%3Aemberjs+NOT+org%3Atracked-tools+NOT+org%3Aember-cli+NOT+org%3Aember-migration-utils+NOT+org%3Aember-learn+&type=code)
267+
- "new TrackedWeakSet(" - [5 Results](https://github.com/search?q=%22new+TrackedWeakSet%28%22+NOT+is%3Afork++NOT+org%3Aemberjs+NOT+org%3Atracked-tools+NOT+org%3Aember-cli+NOT+org%3Aember-migration-utils+NOT+org%3Aember-learn+&type=code)
268+
- "new TrackedWeakMap(" - [4 Results](https://github.com/search?q=%22new+TrackedWeakMap%28%22+NOT+is%3Afork++NOT+org%3Aemberjs+NOT+org%3Atracked-tools+NOT+org%3Aember-cli+NOT+org%3Aember-migration-utils+NOT+org%3Aember-learn+&type=code)
269+
270+
Additionally, specifying collections gives us a blessed path for exported other useful datastructures in the future without continually adding to the main export file (even though dead-code-elimination would eliminate what is unused - not importing what may not be used could help local development)
251271

252272
### Consumption
253273

@@ -274,7 +294,7 @@ A utility for creating tracked arrays, copying the original data so that mutatio
274294
See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)
275295

276296
```gjs
277-
import { trackedArray } from '@ember/reactive';
297+
import { trackedArray } from '@ember/reactive/collections';
278298
import { on } from '@ember/modifier';
279299
import { fn } from '@ember/helper';
280300
@@ -301,7 +321,7 @@ A utility for creating tracked objects, copying the original data so that mutati
301321
See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)
302322

303323
```gjs
304-
import { trackedObject } from '@ember/reactive';
324+
import { trackedObject } from '@ember/reactive/collections';
305325
import { on } from '@ember/modifier';
306326
import { fn } from '@ember/helper';
307327
@@ -328,7 +348,7 @@ A utility for creating tracked maps, copying the original data so that mutations
328348
See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)
329349

330350
```gjs
331-
import { trackedMap } from '@ember/reactive';
351+
import { trackedMap } from '@ember/reactive/collections';
332352
import { on } from '@ember/modifier';
333353
import { fn } from '@ember/helper';
334354
@@ -356,7 +376,7 @@ A utility for creating tracked weak maps, copying the original data so that muta
356376
See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)
357377

358378
```gjs
359-
import { trackedWeakMap } from '@ember/reactive';
379+
import { trackedWeakMap } from '@ember/reactive/collections';
360380
import { on } from '@ember/modifier';
361381
import { fn } from '@ember/helper';
362382
@@ -380,7 +400,7 @@ A utility for creating tracked maps, copying the original data so that mutations
380400
See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set)
381401

382402
```gjs
383-
import { trackedSet } from '@ember/reactive';
403+
import { trackedSet } from '@ember/reactive/collections';
384404
import { on } from '@ember/modifier';
385405
import { fn } from '@ember/helper';
386406
@@ -408,7 +428,7 @@ A utility for creating tracked weak sets, copying the original data so that muta
408428
See [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet)
409429

410430
```gjs
411-
import { trackedWeakSet } from '@ember/reactive';
431+
import { trackedWeakSet } from '@ember/reactive/collections';
412432
import { on } from '@ember/modifier';
413433
import { fn } from '@ember/helper';
414434
@@ -469,7 +489,7 @@ We should do a codemod to convert the newable constructors from tracked-built-in
469489
Using Vite or Webpack (Embroider 3+), we can alias `tracked-built-ins` to point at the new modules, using a shim -- for example:
470490
```js
471491
// app/built-ins-shim.js
472-
import { trackedArray } from '@ember/reactive';
492+
import { trackedArray } from '@ember/reactive/collections';
473493

474494
export class TrackedArray {
475495
constructor(arr) {

0 commit comments

Comments
 (0)