Skip to content

[ui] Intermittent React hook-order console error when navigating to Settings after onboarding flows #502

@joelklabo

Description

@joelklabo

Summary\nDuring local validation for #307, console intermittently reports React hook-order errors when navigating to after onboarding interactions.\n\n## Observed errors\n- \n- \n\n## Repro notes\n1. Run local dev session (

nostrstack@0.0.0 dev:logs /home/klabo/code/nostrstack
./scripts/dev/logs.sh

🪵 writing logs to /home/klabo/code/nostrstack/.logs/dev (api.log, social.log)
💡 view live: tail -f /home/klabo/code/nostrstack/.logs/dev/api.log /home/klabo/code/nostrstack/.logs/dev/social.log
👀 auto-following logs (set LOG_TAIL=0 to disable)
🔐 using existing certs at /home/klabo/code/nostrstack/certs/dev-cert.pem / /home/klabo/code/nostrstack/certs/dev-key.pem
==> /home/klabo/code/nostrstack/.logs/dev/api.log <==

==> /home/klabo/code/nostrstack/.logs/dev/social.log <==
Skipping slot 0: port 3001 has stale socket with no process owner
Skipping slot 6: port 3007 has stale socket with no process owner
Skipping slot 7: port 3008 has stale socket with no process owner
Skipping slot 8: port 3009 has stale socket with no process owner
Skipping slot 9: port 3010 has stale socket with no process owner
Skipping slot 10: port 3011 has stale socket with no process owner
Skipping slot 11: port 3012 has stale socket with no process owner
📦 Dev session: agent=klabo slot=23 api=3024 social=4196
🧬 applying Prisma migrations
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": SQLite database "dev.db" at "file:./dev.db"

7 migrations found in prisma/migrations

No pending migrations to apply.
🚀 starting regtest stack (docker compose)
🔑 ensuring LNbits superuser (admin/changeme)
✅ LNbits admin key exported

==> /home/klabo/code/nostrstack/.logs/dev/api.log <==

api@0.0.1 dev /home/klabo/code/nostrstack/apps/api
pnpm run seed:dev && tsx watch src/server.ts

[api 2026-02-18 09:53:26.771]
[api 2026-02-18 09:53:26.771] > api@0.0.1 dev /home/klabo/code/nostrstack/apps/api
[api 2026-02-18 09:53:26.771] > pnpm run seed:dev && tsx watch src/server.ts
[api 2026-02-18 09:53:26.771]

==> /home/klabo/code/nostrstack/.logs/dev/social.log <==

VITE v5.4.21 ready in 202 ms

[social 2026-02-18 09:53:26.982]
[social 2026-02-18 09:53:26.982] VITE v5.4.21 ready in 202 ms
[social 2026-02-18 09:53:26.982]
➜ Local: http://localhost:4196/
➜ Network: http://192.168.1.165:4196/
➜ Network: http://100.97.193.93:4196/
[social 2026-02-18 09:53:26.982] ➜ Network: http://10.13.13.2:4196/
➜ Network: http://172.17.0.1:4196/
➜ Network: http://172.19.0.1:4196/
➜ Local: http://localhost:4196/
[social 2026-02-18 09:53:26.982] ➜ Network: http://192.168.1.165:4196/
➜ Network: http://172.18.0.1:4196/
➜ Network: http://172.20.0.1:4196/
[social 2026-02-18 09:53:26.982] ➜ Network: http://100.97.193.93:4196/
[social 2026-02-18 09:53:26.982] ➜ Network: http://10.13.13.2:4196/
[social 2026-02-18 09:53:26.982] ➜ Network: http://172.17.0.1:4196/
[social 2026-02-18 09:53:26.982] ➜ Network: http://172.19.0.1:4196/
[social 2026-02-18 09:53:26.982] ➜ Network: http://172.18.0.1:4196/
[social 2026-02-18 09:53:26.982] ➜ Network: http://172.20.0.1:4196/

==> /home/klabo/code/nostrstack/.logs/dev/api.log <==

api@0.0.1 seed:dev /home/klabo/code/nostrstack/apps/api
DATABASE_URL=${DATABASE_URL:-file:./dev.db} tsx prisma/seed-dev.ts

[api 2026-02-18 09:53:27.190]
[api 2026-02-18 09:53:27.190] > api@0.0.1 seed:dev /home/klabo/code/nostrstack/apps/api
[api 2026-02-18 09:53:27.190] > DATABASE_URL=${DATABASE_URL:-file:./dev.db} tsx prisma/seed-dev.ts
[api 2026-02-18 09:53:27.190]
Seeded demo tenant/user: {
domain: 'localhost',
username: 'alice',
lightningAddress: 'alice@localhost'
}
[api 2026-02-18 09:53:27.477] Seeded demo tenant/user: {
[api 2026-02-18 09:53:27.477] domain: 'localhost',
[api 2026-02-18 09:53:27.477] username: 'alice',
[api 2026-02-18 09:53:27.477] lightningAddress: 'alice@localhost'
[api 2026-02-18 09:53:27.477] }
[09:53:28.803] INFO (2723175): Initializing Lightning Provider
provider: "lnbits"
[api 2026-02-18 09:53:28.831] [09:53:28.803] INFO (2723175): Initializing Lightning Provider
[api 2026-02-18 09:53:28.831] provider: "lnbits"
API listening on http://127.0.0.1:3024
[api 2026-02-18 09:53:29.051] API listening on http://127.0.0.1:3024
[09:53:29.051] INFO (2723175): Server listening at http://127.0.0.1:3024
[api 2026-02-18 09:53:29.052] [09:53:29.051] INFO (2723175): Server listening at http://127.0.0.1:3024
[09:53:29.051] INFO (2723175): Server listening at http://192.168.1.165:3024
[09:53:29.051] INFO (2723175): Server listening at http://100.97.193.93:3024
[09:53:29.051] INFO (2723175): Server listening at http://10.13.13.2:3024
[09:53:29.051] INFO (2723175): Server listening at http://172.17.0.1:3024
[09:53:29.051] INFO (2723175): Server listening at http://172.19.0.1:3024
[09:53:29.051] INFO (2723175): Server listening at http://172.18.0.1:3024
[09:53:29.051] INFO (2723175): Server listening at http://172.20.0.1:3024
[api 2026-02-18 09:53:29.053] [09:53:29.051] INFO (2723175): Server listening at http://192.168.1.165:3024
[api 2026-02-18 09:53:29.053] [09:53:29.051] INFO (2723175): Server listening at http://100.97.193.93:3024
[api 2026-02-18 09:53:29.053] [09:53:29.051] INFO (2723175): Server listening at http://10.13.13.2:3024
[api 2026-02-18 09:53:29.053] [09:53:29.051] INFO (2723175): Server listening at http://172.17.0.1:3024
[api 2026-02-18 09:53:29.053] [09:53:29.051] INFO (2723175): Server listening at http://172.19.0.1:3024
[api 2026-02-18 09:53:29.053] [09:53:29.051] INFO (2723175): Server listening at http://172.18.0.1:3024
[api 2026-02-18 09:53:29.053] [09:53:29.051] INFO (2723175): Server listening at http://172.20.0.1:3024
[social 2026-02-18 09:53:38.951] [baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: npm i baseline-browser-mapping@latest -D
[09:53:41.597] INFO (2723175): incoming request
reqId: "req-1"
req: {
"method": "GET",
"url": "/api/health",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57150
}
[api 2026-02-18 09:53:41.633] [09:53:41.597] INFO (2723175): incoming request
[api 2026-02-18 09:53:41.633] reqId: "req-1"
[api 2026-02-18 09:53:41.633] req: {
[api 2026-02-18 09:53:41.633] "method": "GET",
[api 2026-02-18 09:53:41.633] "url": "/api/health",
[api 2026-02-18 09:53:41.633] "host": "localhost:3024",
[api 2026-02-18 09:53:41.633] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:41.633] "remotePort": 57150
[api 2026-02-18 09:53:41.633] }
[09:53:41.630] INFO (2723175): request completed
reqId: "req-1"
res: {
"statusCode": 200
}
responseTime: 28.328108996152878
[api 2026-02-18 09:53:41.635] [09:53:41.630] INFO (2723175): request completed
[api 2026-02-18 09:53:41.635] reqId: "req-1"
[api 2026-02-18 09:53:41.635] res: {
[api 2026-02-18 09:53:41.635] "statusCode": 200
[api 2026-02-18 09:53:41.635] }
[api 2026-02-18 09:53:41.635] responseTime: 28.328108996152878
[09:53:41.632] INFO (2723175): incoming request
reqId: "req-2"
req: {
"method": "GET",
"url": "/api/health",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57166
}
[api 2026-02-18 09:53:41.639] [09:53:41.632] INFO (2723175): incoming request
[api 2026-02-18 09:53:41.639] reqId: "req-2"
[api 2026-02-18 09:53:41.639] req: {
[api 2026-02-18 09:53:41.639] "method": "GET",
[api 2026-02-18 09:53:41.639] "url": "/api/health",
[api 2026-02-18 09:53:41.639] "host": "localhost:3024",
[api 2026-02-18 09:53:41.639] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:41.639] "remotePort": 57166
[api 2026-02-18 09:53:41.639] }
[09:53:41.637] INFO (2723175): request completed
reqId: "req-2"
res: {
"statusCode": 200
}
responseTime: 3.5210649967193604
[api 2026-02-18 09:53:41.640] [09:53:41.637] INFO (2723175): request completed
[api 2026-02-18 09:53:41.640] reqId: "req-2"
[api 2026-02-18 09:53:41.640] res: {
[api 2026-02-18 09:53:41.640] "statusCode": 200
[api 2026-02-18 09:53:41.640] }
[api 2026-02-18 09:53:41.640] responseTime: 3.5210649967193604
[09:53:43.001] INFO (2723175): incoming request
reqId: "req-3"
req: {
"method": "GET",
"url": "/api/health",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57166
}
[api 2026-02-18 09:53:43.002] [09:53:43.001] INFO (2723175): incoming request
[api 2026-02-18 09:53:43.002] reqId: "req-3"
[api 2026-02-18 09:53:43.002] req: {
[api 2026-02-18 09:53:43.002] "method": "GET",
[api 2026-02-18 09:53:43.002] "url": "/api/health",
[api 2026-02-18 09:53:43.002] "host": "localhost:3024",
[api 2026-02-18 09:53:43.002] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:43.002] "remotePort": 57166
[api 2026-02-18 09:53:43.002] }
[09:53:43.002] INFO (2723175): request completed
reqId: "req-3"
res: {
"statusCode": 200
}
responseTime: 0.650079995393753
[api 2026-02-18 09:53:43.002] [09:53:43.002] INFO (2723175): request completed
[api 2026-02-18 09:53:43.002] reqId: "req-3"
[api 2026-02-18 09:53:43.002] res: {
[api 2026-02-18 09:53:43.002] "statusCode": 200
[api 2026-02-18 09:53:43.002] }
[api 2026-02-18 09:53:43.002] responseTime: 0.650079995393753
[09:53:43.003] INFO (2723175): incoming request
reqId: "req-4"
req: {
"method": "GET",
"url": "/api/health",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57150
}
[api 2026-02-18 09:53:43.004] [09:53:43.003] INFO (2723175): incoming request
[api 2026-02-18 09:53:43.004] reqId: "req-4"
[api 2026-02-18 09:53:43.004] req: {
[api 2026-02-18 09:53:43.004] "method": "GET",
[api 2026-02-18 09:53:43.004] "url": "/api/health",
[api 2026-02-18 09:53:43.004] "host": "localhost:3024",
[api 2026-02-18 09:53:43.004] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:43.004] "remotePort": 57150
[api 2026-02-18 09:53:43.004] }
[09:53:43.003] INFO (2723175): request completed
reqId: "req-4"
res: {
"statusCode": 200
}
responseTime: 0.4959940016269684
[api 2026-02-18 09:53:43.004] [09:53:43.003] INFO (2723175): request completed
[api 2026-02-18 09:53:43.004] reqId: "req-4"
[api 2026-02-18 09:53:43.004] res: {
[api 2026-02-18 09:53:43.004] "statusCode": 200
[api 2026-02-18 09:53:43.004] }
[api 2026-02-18 09:53:43.004] responseTime: 0.4959940016269684
[09:53:43.028] INFO (2723175): incoming request
reqId: "req-5"
req: {
"method": "GET",
"url": "/api/bitcoin/status",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57150
}
[api 2026-02-18 09:53:43.030] [09:53:43.028] INFO (2723175): incoming request
[api 2026-02-18 09:53:43.030] reqId: "req-5"
[api 2026-02-18 09:53:43.030] req: {
[api 2026-02-18 09:53:43.030] "method": "GET",
[api 2026-02-18 09:53:43.030] "url": "/api/bitcoin/status",
[api 2026-02-18 09:53:43.030] "host": "localhost:3024",
[api 2026-02-18 09:53:43.030] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:43.030] "remotePort": 57150
[api 2026-02-18 09:53:43.030] }
[09:53:43.030] INFO (2723175): incoming request
reqId: "req-6"
req: {
"method": "GET",
"url": "/debug/ws-wallet",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57166
}
[api 2026-02-18 09:53:43.031] [09:53:43.030] INFO (2723175): incoming request
[api 2026-02-18 09:53:43.031] reqId: "req-6"
[api 2026-02-18 09:53:43.031] req: {
[api 2026-02-18 09:53:43.031] "method": "GET",
[api 2026-02-18 09:53:43.031] "url": "/debug/ws-wallet",
[api 2026-02-18 09:53:43.031] "host": "localhost:3024",
[api 2026-02-18 09:53:43.031] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:43.031] "remotePort": 57166
[api 2026-02-18 09:53:43.031] }
[09:53:43.031] INFO (2723175): request completed
reqId: "req-6"
res: {
"statusCode": 200
}
responseTime: 0.7289550006389618
[api 2026-02-18 09:53:43.032] [09:53:43.031] INFO (2723175): request completed
[api 2026-02-18 09:53:43.032] reqId: "req-6"
[api 2026-02-18 09:53:43.032] res: {
[api 2026-02-18 09:53:43.032] "statusCode": 200
[api 2026-02-18 09:53:43.032] }
[api 2026-02-18 09:53:43.032] responseTime: 0.7289550006389618
[09:53:43.037] INFO (2723175): telemetry ws connection
clientCount: 1
[api 2026-02-18 09:53:43.037] [09:53:43.037] INFO (2723175): telemetry ws connection
[api 2026-02-18 09:53:43.037] clientCount: 1
[09:53:43.039] INFO (2723175): incoming request
reqId: "req-7"
req: {
"method": "GET",
"url": "/debug/ws-wallet",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57166
}
[api 2026-02-18 09:53:43.040] [09:53:43.039] INFO (2723175): incoming request
[api 2026-02-18 09:53:43.040] reqId: "req-7"
[api 2026-02-18 09:53:43.040] req: {
[api 2026-02-18 09:53:43.040] "method": "GET",
[api 2026-02-18 09:53:43.040] "url": "/debug/ws-wallet",
[api 2026-02-18 09:53:43.040] "host": "localhost:3024",
[api 2026-02-18 09:53:43.040] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:43.040] "remotePort": 57166
[api 2026-02-18 09:53:43.040] }
[09:53:43.040] INFO (2723175): request completed
reqId: "req-7"
res: {
"statusCode": 200
}
responseTime: 0.5036030113697052
[api 2026-02-18 09:53:43.040] [09:53:43.040] INFO (2723175): request completed
[api 2026-02-18 09:53:43.040] reqId: "req-7"
[api 2026-02-18 09:53:43.040] res: {
[api 2026-02-18 09:53:43.040] "statusCode": 200
[api 2026-02-18 09:53:43.040] }
[api 2026-02-18 09:53:43.040] responseTime: 0.5036030113697052
[09:53:43.047] INFO (2723175): telemetry ws connection
clientCount: 2
[api 2026-02-18 09:53:43.048] [09:53:43.047] INFO (2723175): telemetry ws connection
[api 2026-02-18 09:53:43.048] clientCount: 2
[09:53:43.069] INFO (2723175): request completed
reqId: "req-5"
res: {
"statusCode": 200
}
responseTime: 41.04441699385643
[api 2026-02-18 09:53:43.070] [09:53:43.069] INFO (2723175): request completed
[api 2026-02-18 09:53:43.070] reqId: "req-5"
[api 2026-02-18 09:53:43.070] res: {
[api 2026-02-18 09:53:43.070] "statusCode": 200
[api 2026-02-18 09:53:43.070] }
[api 2026-02-18 09:53:43.070] responseTime: 41.04441699385643
[09:53:43.189] INFO (2723175): wallet ws upgrade
[api 2026-02-18 09:53:43.190] [09:53:43.189] INFO (2723175): wallet ws upgrade
[09:53:43.189] INFO (2723175): wallet ws connection
clientCount: 1
[api 2026-02-18 09:53:43.190] [09:53:43.189] INFO (2723175): wallet ws connection
[api 2026-02-18 09:53:43.190] clientCount: 1
[09:53:43.868] INFO (2723175): incoming request
reqId: "req-8"
req: {
"method": "POST",
"url": "/api/regtest/fund",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57150
}
[api 2026-02-18 09:53:43.873] [09:53:43.868] INFO (2723175): incoming request
[api 2026-02-18 09:53:43.873] reqId: "req-8"
[api 2026-02-18 09:53:43.873] req: {
[api 2026-02-18 09:53:43.873] "method": "POST",
[api 2026-02-18 09:53:43.873] "url": "/api/regtest/fund",
[api 2026-02-18 09:53:43.873] "host": "localhost:3024",
[api 2026-02-18 09:53:43.873] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:43.873] "remotePort": 57150
[api 2026-02-18 09:53:43.873] }
[09:53:43.869] INFO (2723175): regtest fund requested
reqId: "17ce41ee-6ea7-46d4-a4d8-3e711947a884"
action: "regtest_fund"
[api 2026-02-18 09:53:43.873] [09:53:43.869] INFO (2723175): regtest fund requested
[api 2026-02-18 09:53:43.873] reqId: "17ce41ee-6ea7-46d4-a4d8-3e711947a884"
[api 2026-02-18 09:53:43.873] action: "regtest_fund"
LNbits topup skipped (non-fatal): [lncli] FAILED

[api 2026-02-18 09:53:47.267] LNbits topup skipped (non-fatal): [lncli] FAILED
[api 2026-02-18 09:53:47.267]
[09:53:47.587] INFO (2723175): regtest fund complete
reqId: "17ce41ee-6ea7-46d4-a4d8-3e711947a884"
minedBlocks: 6
[api 2026-02-18 09:53:47.588] [09:53:47.587] INFO (2723175): regtest fund complete
[api 2026-02-18 09:53:47.588] reqId: "17ce41ee-6ea7-46d4-a4d8-3e711947a884"
[api 2026-02-18 09:53:47.588] minedBlocks: 6
[09:53:47.588] INFO (2723175): request completed
reqId: "req-8"
res: {
"statusCode": 200
}
responseTime: 3719.180693000555
[api 2026-02-18 09:53:47.588] [09:53:47.588] INFO (2723175): request completed
[api 2026-02-18 09:53:47.588] reqId: "req-8"
[api 2026-02-18 09:53:47.588] res: {
[api 2026-02-18 09:53:47.588] "statusCode": 200
[api 2026-02-18 09:53:47.588] }
[api 2026-02-18 09:53:47.588] responseTime: 3719.180693000555
[09:53:47.608] INFO (2723175): incoming request
reqId: "req-9"
req: {
"method": "GET",
"url": "/api/bitcoin/status",
"host": "localhost:3024",
"remoteAddress": "127.0.0.1",
"remotePort": 57150
}
[api 2026-02-18 09:53:47.609] [09:53:47.608] INFO (2723175): incoming request
[api 2026-02-18 09:53:47.609] reqId: "req-9"
[api 2026-02-18 09:53:47.609] req: {
[api 2026-02-18 09:53:47.609] "method": "GET",
[api 2026-02-18 09:53:47.609] "url": "/api/bitcoin/status",
[api 2026-02-18 09:53:47.609] "host": "localhost:3024",
[api 2026-02-18 09:53:47.609] "remoteAddress": "127.0.0.1",
[api 2026-02-18 09:53:47.609] "remotePort": 57150
[api 2026-02-18 09:53:47.609] }
[09:53:47.612] INFO (2723175): request completed
reqId: "req-9"
res: {
"statusCode": 200
}
responseTime: 4.317707002162933
[api 2026-02-18 09:53:47.613] [09:53:47.612] INFO (2723175): request completed
[api 2026-02-18 09:53:47.613] reqId: "req-9"
[api 2026-02-18 09:53:47.613] res: {
[api 2026-02-18 09:53:47.613] "statusCode": 200
[api 2026-02-18 09:53:47.613] }
[api 2026-02-18 09:53:47.613] responseTime: 4.317707002162933
[09:54:19.962] INFO (2694632): incoming request
reqId: "req-c"
req: {
"method": "GET",
"url": "/api/health",
"host": "localhost:3023",
"remoteAddress": "127.0.0.1",
"remotePort": 43298
}
[09:54:19.964] INFO (2694632): request completed
reqId: "req-c"
res: {
"statusCode": 200
}
responseTime: 0.8102839887142181
[09:54:19.965] INFO (2694632): incoming request
reqId: "req-d"
req: {
"method": "GET",
"url": "/api/health",
"host": "localhost:3023",
"remoteAddress": "127.0.0.1",
"remotePort": 43298
}
[09:54:19.966] INFO (2694632): request completed
reqId: "req-d"
res: {
"statusCode": 200
}
responseTime: 0.5287329852581024
[09:54:31.977] �[33mWARN�[39m (2446958): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:32.081] WARN (2694632): telemetry block poll failed
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:33.964] WARN (2723175): telemetry block poll failed
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[api 2026-02-18 09:54:33.967] [09:54:33.964] WARN (2723175): telemetry block poll failed
[api 2026-02-18 09:54:33.967] pollDelayMs: 10000
[api 2026-02-18 09:54:33.967] err: {
[api 2026-02-18 09:54:33.967] "type": "TypeError",
[api 2026-02-18 09:54:33.967] "message": "fetch failed: ",
[api 2026-02-18 09:54:33.967] "stack":
[api 2026-02-18 09:54:33.967] TypeError: fetch failed
[api 2026-02-18 09:54:33.967] at node:internal/deps/undici/undici:15845:13
[api 2026-02-18 09:54:33.967] at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
[api 2026-02-18 09:54:33.967] at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
[api 2026-02-18 09:54:33.967] at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
[api 2026-02-18 09:54:33.967] at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
[api 2026-02-18 09:54:33.967] caused by: AggregateError [ECONNREFUSED]:
[api 2026-02-18 09:54:33.967] at internalConnectMultiple (node:net:1134:18)
[api 2026-02-18 09:54:33.967] at afterConnectMultiple (node:net:1715:7)
[api 2026-02-18 09:54:33.967] }
[09:54:35.271] �[33mWARN�[39m (2446975): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:35.889] �[33mWARN�[39m (1306330): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:36.281] �[33mWARN�[39m (2652371): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:37.245] �[33mWARN�[39m (2446971): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:37.403] �[33mWARN�[39m (2446936): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:40.027] �[33mWARN�[39m (2446931): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:40.307] �[33mWARN�[39m (2446959): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[09:54:40.386] �[33mWARN�[39m (2446930): �[36mtelemetry block poll failed�[39m
pollDelayMs: 10000
err: {
"type": "TypeError",
"message": "fetch failed: ",
"stack":
TypeError: fetch failed
at node:internal/deps/undici/undici:15845:13
at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
at async rpcCall (/home/klabo/code/nostrstack/apps/api/src/telemetry/bitcoind.ts:49:19)
at async Object.fetchTipHeight (/home/klabo/code/nostrstack/apps/api/src/telemetry/providers.ts:54:23)
at async Timeout._onTimeout (/home/klabo/code/nostrstack/apps/api/src/routes/telemetry-ws.ts:217:22)
caused by: AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1134:18)
at afterConnectMultiple (node:net:1715:7)
}
[social 2026-02-18 09:54:55.291] VITE_API_BASE_URL=http://localhost:3024 VITE_API_PROXY_TARGET=http://localhost:3024 VITE_NOSTRSTACK_HOST=localhost:3024 pnpm --filter social exec vite --host --port 4196 | tee -a /home/klabo/code/nostrstack/.logs/dev/social.log exited with code 0
--> Sending SIGTERM to other processes..
[api 2026-02-18 09:54:55.759] pnpm --filter api dev | tee -a /home/klabo/code/nostrstack/.logs/dev/api.log exited with code SIGTERM
 ELIFECYCLE  Command failed with exit code 1.).\n2. Open social app and navigate around onboarding + settings.\n3. In some sessions/HMR states, Settings renders but console records hook-order errors.\n\n## Impact\n- Pollutes console with high-severity runtime errors.\n- Makes UI QA noisy and masks other regressions.\n\n## Follow-up\n- Isolate exact component/hook causing order mismatch (likely in settings/onboarding path).\n- Add a regression test or deterministic repro script.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions