Rubén Norte
90d · built 2026-09-30
Performance
What Rubén Norte shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
−0.2engineers
delivers like 0.8 (0.8x pre-AI)
Output (ETV)
9.3ETV
+9.5% vs 8.5 prior
Features share
4.4%
−28.9 pp vs prior window
Fixes share
1.6%
−8.4 pp vs prior window
Work mix
4.4% Features32.9% Maintenance59.3% Tests1.7% Docs1.6% Fixes
67 commits over 90 days, ending 2026-09-30.
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
| Repo | Commits | ETV |
|---|---|---|
| react-native | 62 | 9.4 |
Most impactful commits
Top 10 by ETV in the last 90 days.
- 1.5ETVAdd Fantom integration tests for core public APIs (#57466) Summary: Pull Request resolved: https://github.com/react/react-native/pull/57466 Adds Fantom `-itest.js` coverage for maintained, public React Native APIs that were previously untested or thinly tested, driving both the JavaScript logic and the underlying cross-platform C++ through the public `react-native` package surface. To make JavaScript-driven animations deterministic under the test runner, this also introduces a small timing indirection in `Animated`: - New module `Animated/AnimationTimingUtils.js` exports `getCurrentAnimationTime` (returns `Date.now()` by default) and `setAnimationTimeProvider` (overrides the time source; pass `null` to restore the default). - `TimingAnimation`, `SpringAnimation` and `DecayAnimation` now read the current time from `getCurrentAnimationTime()` instead of calling `Date.now()` directly. The default behavior is unchanged. With this, a test can override the provider with a clock that advances one frame per read, which drives the JS-driver animation at the same cadence as the native frame clock. The spring and decay tests use this to verify the actual animation curve (overshoot for an underdamped spring, exponential deceleration for decay), not just the final value, and to run a single unified code path for both the JS and native drivers. New test files: - `Animated/__tests__/SpringAnimation-itest.js`, `DecayAnimation-itest.js`, `AnimatedColor-itest.js`, `AnimatedComposition-itest.js` — spring/decay curve shape (both drivers), `Animated.Color` value semantics, and the composition nodes (`add`/`subtract`/`multiply`/`divide`/`modulo`/`diffClamp`/tracking). `AnimatedFantomTestUtils.js` holds the shared trajectory helper. - `Components/View/__tests__/View-nativeCSSParsing-itest.js` — string-valued CSS (color functions, transform, gradients) parsed via native CSS parsing. - `Pressability/__tests__/Pressability-touch-itest.js` — press in/out/press, long press, press delay, and responder termination via touch events and the deterministic timer mock. - `Interaction/__tests__/PanResponder-itest.js` — grant/move/release/terminate and gesture state across touch sequences. - `LayoutAnimation/__tests__/LayoutAnimation-itest.js` — `configureNext`/`create`/presets applying the resulting layout. - `Network/__tests__/Network-itest.js` — synchronous `XMLHttpRequest` lifecycle and validation. Extended test files: - `Components/TextInput/__tests__/TextInput-itest.js` — `onSelectionChange`/`onSubmitEditing`/`onKeyPress`/`onEndEditing` events. - `Lists/__tests__/FlatList-itest.js` — `onViewableItemsChanged` across all `viewabilityConfig` options (`itemVisiblePercentThreshold`, `viewAreaCoveragePercentThreshold`, `minimumViewTime`, `waitForInteraction`). - `Text/__tests__/Text-itest.js` — `letterSpacing`, `lineHeight`, and `fontVariant` styles. The runtime behavior of `Animated` is unchanged; the new timing indirection defaults to `Date.now()`. Changelog: [Internal] Reviewed By: javache, zeyap Differential Revision: D110784436 fbshipit-source-id: 886c5fa735adb01b107ffba7c52c96f2a31b8909github.com-facebook-react-native · 17e55f6b · 2026-07-14
- 0.8ETVUse public imports in Codegen fixtures (#58572) Summary: Pull Request resolved: https://github.com/react/react-native/pull/58572 Migrate Codegen and compatibility fixtures from React Native deep imports to the public `react-native` entry point. Reference codegen-only types through the exported `CodegenTypes` namespace. Changelog: [Internal] Reviewed By: christophpurrer Differential Revision: D120537584 fbshipit-source-id: f97ee85fb5f16d23a998d25c1544134ee08bc3ccgithub.com-facebook-react-native · ffbca04c · 2026-09-18
- 0.8ETVRemove ReactNativeElement from Fantom tests (nullthrows/HostInstance/HTMLElement) (#57468) Summary: Pull Request resolved: https://github.com/react/react-native/pull/57468 Removes the `ensureInstance(ref.current, ReactNativeElement)` pattern from Fantom tests. Host refs are typed as `HostInstance` and read with `nullthrows(ref.current)`; component-specific instance types (e.g. `React.ElementRef<typeof TextInput>`, `React.ElementRef<typeof ScrollView>`) are kept only where a test actually uses a component's imperative API (`focus`/`blur`/`clear`, `getInnerViewRef`, etc.). This drops the `ReactNativeElement`/`ensureInstance` imports from tests that only needed a non-null host instance. Where a test genuinely needs a runtime type check, `instanceof ReactNativeElement` / `toBeInstanceOf(ReactNativeElement)` is replaced with the standard `instanceof HTMLElement` (a global), since React Native elements are instances of `HTMLElement` at runtime. This also covers the internal `-itest.fb.js` tests and the shared ShadowNode test utilities (`ShadowNodeReferenceCounter`/`ShadowNodeRevisionGetter`), which now type their refs as `HostInstance`. Known follow-up: the RN Flow global type definitions still need to be fixed. At the type level `HTMLElement` does not match `HostInstance` yet, even though the runtime values do. Because of this, `HTMLElement` cannot be used where a narrowed value flows into RN-internal APIs typed as `HostInstance`/`ReadOnlyNode` (e.g. `VirtualView`, which instead types its helper params as `HostInstance` directly and passes them through without a narrowing check). Aligning the `HTMLElement` global definition with `HostInstance` would let those remaining spots use `HTMLElement` too. This is a test-only change with no runtime or user-facing impact. Changelog: [Internal] Reviewed By: christophpurrer Differential Revision: D110888634 fbshipit-source-id: c570700ed82fd8333093ee01816e872c486f3e8fgithub.com-facebook-react-native · 5e64e907 · 2026-07-08
- 0.7ETVUse public APIs in Fantom tests (#58567) Summary: Pull Request resolved: https://github.com/react/react-native/pull/58567 Replace eligible React Native deep imports in Fantom tests with package exports, Fantom APIs, DOM globals, and types derived from exported symbols. Keep implementation-specific imports where the public surface does not expose equivalent behavior or compatible Flow types. Changelog: [Internal] ___ Reviewed By: cipolleschi Differential Revision: D120517166 fbshipit-source-id: 6ba6ec2c6159cca6309f558ccf478c49220e85fcgithub.com-facebook-react-native · 7a631409 · 2026-09-18
- 0.6ETVMake Lists, Networking, and UIManager modules Flow strict-local (#57726) Summary: Pull Request resolved: https://github.com/react/react-native/pull/57726 Upgrade the FlatList/SectionList list components, the networking modules (`XMLHttpRequest`, `FormData`, `RCTNetworking`, `convertRequestBody`), and the UIManager modules from `flow` to `flow strict-local`. Public type signatures are preserved exactly, so no consumers need updating; internal `any` and `Object` usages were replaced with accurate types wherever that did not change a public signature. Two public signatures deliberately keep their original loose types behind a scoped `$FlowFixMe[unclear-type]`, because Flow's invariance rules mean any precise annotation would reject existing callers: the `headers` parameters on the `XHRInterceptor` interface (invariant indexers), and `commandArgs` on `UIManager.dispatchViewManagerCommand` (invariant array elements, which would reject callers passing an already-typed array). Changelog: [Internal] Reviewed By: cipolleschi, javache Differential Revision: D113763786 fbshipit-source-id: 666702a0e6d8ebe16fd4ae93b6e4f614130b9894github.com-facebook-react-native · 0654db9a · 2026-09-10
- 0.6ETVRemove isOSS guards from Fantom renderer tests (#58447) Summary: Pull Request resolved: https://github.com/react/react-native/pull/58447 Remove the isOSS conditionals that were skipping Fantom renderer tests in OSS environments. Now that the React Native renderers have been upgraded and the code is compatible in OSS, these tests can run in both internal and OSS environments. Changes: - ResponderEventTarget-itest.js: Removed isOSS check that skipped the entire Responder System test suite - EventTargetDispatching-itest.js: Removed isOSS check that skipped the entire EventTarget-based Event Dispatching test suite - EventDispatching-benchmark-itest.js: Removed if (isOSS) block that provided a dummy test instead of the benchmark suite - EventDispatching-itest.js: Removed if (!isOSS) condition guarding three tests for native event timeStamp and global event dispatching Changelog: [Internal] Reviewed By: andrewdacenko Differential Revision: D107675643 fbshipit-source-id: e2d66b2dd9f4ab95d2d278ecbef9badca3b667fbgithub.com-facebook-react-native · a82827ec · 2026-09-11
- 0.3ETVMake Animated modules Flow strict-local (#57738) Summary: Pull Request resolved: https://github.com/react/react-native/pull/57738 Upgrade the Animated implementation and node modules from `flow` to `flow strict-local` to enforce stricter local type checking, replacing loose types with the accurate existing Animated type vocabulary. Constrain `createAnimatedComponent` to component-only `React.ElementType` values so component props remain inferred without `any`, and regenerate the public API snapshot. Runtime behavior is unchanged. Changelog: [Internal] Reviewed By: javache Differential Revision: D113763780 fbshipit-source-id: b62b4ab299c6917812c47f2d0750388407bd8de2github.com-facebook-react-native · 2487860b · 2026-09-10
- 0.3ETVAdd direct-event fast path to EventTarget dispatch (rnIsDirect) (#57448) Summary: Pull Request resolved: https://github.com/react/react-native/pull/57448 Direct events (those that neither bubble nor capture, such as `onLayout`) were still dispatched through the full W3C event-path algorithm when using the EventTarget-based dispatcher: the path was built by walking every ancestor up to the root, and the capture phase then iterated over all of them, even though a direct event only ever fires on its target. This made direct-event dispatch scale with tree depth (O(depth)). This introduces a "direct" event mode on `Event`: - A new RN-specific `rnIsDirect` option on `EventInit` (with a matching `rnIsDirect` getter). A direct event has only an `AT_TARGET` phase and an event path containing just the target node. - Construction validation: an event cannot be both `rnIsDirect` and `bubbles`; the constructor throws a `TypeError` for that combination. - When `rnIsDirect` is set, the event path is restricted to the target, so dispatch skips the ancestor walk and capture-phase traversal (O(1)). The renderer opts native direct events into this fast path (behind a runtime gate) by tagging them with `rnIsDirect` at the dispatch site. Bubbling events that merely skip bubbling (e.g. `onPointerEnter`) still have a capture phase and are intentionally not treated as direct. This is gated and defaults off, so there is no behavior change by default. Benchmark results (median dispatch latency for the new `onLayout` direct-event benchmarks; all use the same stable-tree setup so depth is directly comparable): | onLayout dispatch | EventTarget off (baseline) | EventTarget on, direct off | EventTarget on, direct on | | --- | --- | --- | --- | | flat (1 handler) | 12.7us | 20.7us | 18.2us | | nested 10 deep | 12.7us | 33.4us | 18.1us | | nested 50 deep | 12.7us | 82.2us | 18.2us | Without the fast path, EventTarget dispatch of a direct event scales with tree depth (20.7us -> 33.4us -> 82.2us). The fast path restores O(1): dispatch cost is flat across depth (~18us) and the nested-50-deep case drops from ~82.2us to ~18.2us (~4.5x faster), approaching the legacy baseline (~12.7us). The EventTarget-off numbers are unchanged by the direct-events flag, confirming the flag is correctly gated. Changelog: [Internal] Reviewed By: javache Differential Revision: D110759162 fbshipit-source-id: f6b2a7ece9bf4a00c6534a69c89c84bc713233d2github.com-facebook-react-native · ef146290 · 2026-07-07
- 0.3ETVMake remaining ReactNative and Core modules Flow strict-local (#57730) Summary: Pull Request resolved: https://github.com/react/react-native/pull/57730 Upgrade the remaining ReactNative and Core modules from `flow` to `flow strict-local`, preserving public type signatures so consumers are unaffected. Genuinely-dynamic internal `any` usages are marked with scoped `$FlowFixMe[unclear-type]` where an accurate type cannot be expressed. Changelog: [Internal] Reviewed By: javache Differential Revision: D113763791 fbshipit-source-id: a47b2e9bdccc77de5969bc4815010d634d37e753github.com-facebook-react-native · f68f981a · 2026-09-10
- 0.3ETVRemove React Native deep imports from Fantom (#58605) Summary: Pull Request resolved: https://github.com/react/react-native/pull/58605 Use global DOM APIs, supported React Native entry points, and package-relative implementation imports throughout Fantom. Use the renderer-only private interface for the existing public-instance conversion helpers instead of importing Node internals. Changelog: [Internal] Reviewed By: cipolleschi Differential Revision: D120717572 fbshipit-source-id: 1aae11b7b9434c783d42ca289e2c6edd17aa887cgithub.com-facebook-react-native · d6adb9f4 · 2026-09-21