@@ -15,7 +15,53 @@ TypeScript/UI worklets.
1515 Objective-C/UIKit.
1616- Track the runtime API surface in `RN_API.md`.
1717
18- ## Latest Update - 2026-06-29
18+ ## Latest Update - 2026-06-30
19+
20+ ### 2026-06-30 00:10 EDT - JS subclasses use remembered alloc/init construction
21+
22+ - Scope check:
23+ - This remains PR #46 RN-module branch stabilization after the split from
24+ `refactor`. The change is a generic NativeScript JS-subclass construction
25+ primitive, not a React Native Screens shim and not direct engine backend
26+ refactor work.
27+ - Simulator-only rule remains active; no physical devices were used.
28+ - CI finding:
29+ - GitHub Actions run `28418328502` on `bd5c2640` kept setup, dependency
30+ install, FFI boundary check, V8 download, libffi build, metadata
31+ generation, NativeScript build, CLI build, and macOS tests green.
32+ - iOS simulator still timed out in `ApiTests.js NSMutableArrayMethods`.
33+ - The canceled diagnostic run `28417161267` showed macOS entering JS `init`
34+ and the native callback normally, but iOS repeatedly called the JS `count`
35+ getter with missing `_array` before JS `init` or the native callback logged
36+ anything. That points to Objective-C/Foundation probing the JS-backed
37+ `NSMutableArray` subclass during zero-argument `+new`, before the JS
38+ receiver has been associated and initialized.
39+ - Change:
40+ - JS-extended native classes now opt into alloc/init construction even for
41+ zero-argument constructors. `.extend(...)` wrappers and TypeScript
42+ `NativeClass` materialization wrappers are tagged with
43+ `__nativeApiUseAllocInitConstructor`.
44+ - The generic native-class constructor now routes flagged zero-argument
45+ subclasses through `alloc`, remembers the receiver, and then invokes the
46+ selected initializer instead of raw `nativeClass.new()`.
47+ - Source coverage now guards the alloc/init flag and constructor path so this
48+ does not regress back to raw `+new` for JS-backed subclasses.
49+ - Verification:
50+ - `node packages/react-native/test/runtime-instance-selector-base-dispatch.test.js`
51+ passed.
52+ - `node packages/react-native/test/runtime-indexed-collection-alias.test.js`
53+ passed.
54+ - Runtime RN JS tests passed:
55+ `for f in packages/react-native/test/*.test.js; do node "$f" || exit 1; done`.
56+ - `git diff --check` passed.
57+ - `npm run check:ffi-boundaries` passed.
58+ - `npm run build:macos-cli` passed.
59+ - Still next:
60+ - Commit/push this alloc/init construction fix and watch fresh PR CI for the
61+ iOS simulator `ApiTests.js NSMutableArrayMethods` result.
62+ - If iOS still hangs, compare the verbose spec/log output: if JS `init` now
63+ appears before the first missing `_array` count call, the next fix should be
64+ a generic construction-state callback policy rather than an RNS workaround.
1965
2066### 2026-06-29 23:30 EDT - initializer result wrapper cache preservation
2167
0 commit comments