gsxdsm
0746260544
fix(dashboard): memoize normalized shell state to stop render thrash
...
normalizeShellState rebuilds the object and its profiles array on every
call. useShellConnection was calling it during render, so consumers that
put state.profiles in a useEffect dep array (AppInner does, for the
shell-connection status effect) re-ran the effect on every render. The
async getShellConnectionNativeResult resolution then triggered another
render, feeding the loop. On desktop it stabilized; on iOS Safari it
could pin the main thread.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-08 08:37:26 -07:00
..
2026-05-08 04:21:20 -07:00
2026-05-05 11:04:48 -07:00
2026-05-05 11:04:48 -07:00
2026-04-08 10:39:38 -07:00
2026-04-12 17:55:07 -07:00
2026-04-30 19:18:56 -07:00
2026-05-05 06:32:33 -07:00
2026-04-08 16:48:35 -07:00
2026-05-03 16:26:47 -07:00
2026-04-28 14:30:38 -07:00
2026-04-27 17:26:07 -07:00
2026-04-21 20:12:00 -07:00
2026-04-23 23:02:36 -07:00
2026-05-06 19:55:55 -07:00
2026-04-27 04:05:25 -07:00
2026-04-22 17:12:27 -07:00
2026-05-04 02:23:04 -07:00
2026-04-23 23:02:35 -07:00
2026-04-20 12:59:58 -07:00
2026-04-22 13:57:10 -07:00
2026-05-03 14:10:11 -07:00
2026-05-03 07:47:45 -07:00
2026-04-19 10:13:33 -07:00
2026-05-07 17:24:11 -07:00
2026-04-12 07:00:49 -07:00
2026-04-25 20:32:37 -07:00
2026-04-23 23:02:36 -07:00
2026-04-23 23:02:36 -07:00
2026-04-23 23:02:36 -07:00
2026-03-26 00:10:53 -04:00
2026-05-04 23:47:26 -07:00
2026-04-24 23:16:29 -07:00
2026-05-04 06:12:12 -07:00
2026-04-25 18:22:37 -07:00
2026-04-28 14:25:55 -07:00
2026-05-06 22:17:35 -07:00
2026-05-03 19:45:18 -07:00
2026-05-03 02:58:55 -07:00
2026-05-05 07:44:56 -07:00
2026-05-02 08:05:33 -07:00
2026-05-05 15:06:17 -07:00
2026-04-09 13:01:19 -07:00
2026-05-07 23:21:05 -07:00
2026-04-24 09:38:16 -07:00
2026-04-27 19:36:24 -07:00
2026-05-05 12:14:20 -07:00
2026-05-06 02:14:05 -07:00
2026-04-16 10:04:44 -07:00
2026-04-23 23:02:35 -07:00
2026-04-15 19:53:22 -07:00
2026-04-23 23:02:36 -07:00
2026-04-23 23:02:36 -07:00
2026-04-14 09:29:08 -07:00
2026-04-24 08:55:02 -07:00
2026-05-06 12:14:26 -07:00
2026-05-06 19:55:55 -07:00
2026-04-10 02:59:38 -07:00
2026-04-17 15:21:15 -07:00
2026-05-04 09:20:07 -07:00
2026-04-15 18:23:05 -07:00
2026-05-01 13:08:07 -07:00
2026-04-13 18:21:31 -07:00
2026-04-22 01:31:40 -07:00
2026-04-20 10:16:13 -07:00
2026-05-08 08:37:26 -07:00
2026-05-07 23:21:05 -07:00
2026-04-11 11:27:32 -07:00
2026-04-29 17:23:22 -07:00
2026-05-06 12:24:57 -07:00
2026-05-06 00:05:55 -07:00
2026-04-23 23:02:35 -07:00
2026-04-30 19:42:05 -07:00
2026-04-17 14:31:43 -07:00
2026-04-26 15:12:32 -07:00
2026-04-27 01:40:07 -07:00
2026-04-23 23:02:36 -07:00
2026-04-08 07:38:32 -07:00
2026-05-07 17:24:11 -07:00
2026-04-23 23:02:36 -07:00
2026-04-23 23:02:36 -07:00
2026-04-23 23:02:36 -07:00