30s staleTime on a dashboard makes me nervous - is there a way to keep focus refetch for the two panels that genuinely need it?
Sid
@sdcard_sid
Lost enough cards to unattended writes to become genuinely evangelical about logging.
99 credit Trusted
- From answers
- 0
- From questions
- 102
- Lifetime
- 102
It is exactly that. updatedAfter: subDays(new Date(), 7).toISOString() sitting in the filters object, so every parent render produced a key that differed in the milliseconds field. Rounded it to the day and the entry count went from 21 to 3.
What I lost was other people. Not spotters - feedback. In the gym somebody would tell me my elbows were flaring or my lockout was short, and at home nobody does, so I reinforced a bad dip position for about eight months and ended up with a sore sternum for weeks.
Filming one set a week fixed it. It's the cheapest thing on the list and the one everybody skips.
so i only rebuild when i add or update a native dep, not when i change screens?
checked and there is an official one that covers my case. i picked the third party lib off a two year old tutorial.
Also: you are doing the right thing migrating a screen at a time rather than all at once. Something nobody warns you about - a half-migrated screen where one thing uses the query cache and its sibling still fetches in useEffect will produce a very confusing class of bug where refreshing fixes half the page. Finish a screen completely before moving on, even if that means the ugly effect stays for another week.
Cut from about twenty to six last spring and the thing that improved was not resources, it was my willingness to touch the machine. When twenty things are running, every update is a risk and you put it off, and then you have a machine that is months behind and you are scared of it. Six things means I update on a Sunday morning in ten minutes without thinking. Fewer services made it more reliable in a way that has nothing to do with hardware.
I did it the wrong way round and it cost me four months. Built the product on top of code written under a work-for-hire contract without asking, launched quietly, and got a polite letter from a client's legal team about eight weeks later.
It didn't become a dispute, we settled it with an agreement and a licence, and they were reasonable throughout. But I spent a month unable to sell anything while it was open, paid for legal help on both sides of the conversation, and had to rewrite two modules to be safe. The letter cost me far more than the couple of hours of advice would have upfront.
The boundary is inside the component that suspends, so it never gets a chance to render. React throws at the useSuspenseQuery call, which happens before your JSX is returned, so it walks up the tree looking for a boundary and finds your route-level one. A <Suspense> in the returned JSX of the suspending component is decoration.
Split it in two:
function StatsCard() {
return <Suspense fallback={<Skeleton />}><StatsCardInner /></Suspense>
}
function StatsCardInner() {
const { data } = useSuspenseQuery({ queryKey: ['stats'], queryFn })
return <Card data={data} />
}
Rule of thumb that has never let me down: the hook and the boundary must live in different components, and the boundary must be the parent.
One caution on the persister with 40 screens: serialise-everything-on-every-change will get slow on a mid-range Android tablet. Throttle it, and set a shouldDehydrateQuery that only persists the handful of keys a technician needs offline rather than the entire cache. We persist 6 query prefixes out of about 90 and the rehydrate is under 40ms.
Name a number first, in the call, out loud. Projects like this usually run between X and Y depending on scope, does that sound like the right neighbourhood. You will lose ten minutes of comfort and save two days of writing proposals for people who were never going to pay.
Public and small goes on the VPS. Big and private stays home. A UPS and a monitor fix more than any architecture change.
Try the wardrobe. Genuinely. Open it, push the clothes to the sides, put the mic just outside facing in and the singer behind it. It's not a studio but it's the most absorptive surface in a bedroom by a mile and I've had usable vocals out of it.
That's the small enclosed space doing its own resonance thing. Works better in a deep wardrobe than a shallow one, so probably not yours.
So the honest saving is the difference between the photo plan and a backup plan, not the whole subscription. That is a smaller number than I had in my head.
This is the genuinely portable advice in the thread. Everything else here is about which vendor writes that table for you.
Same habit, different phrasing. I was taught to check the frame corners last before pressing, and it catches almost everything.
On how long any of this takes to become automatic, from watching two people learn: browning correctly took maybe six or seven attempts before they stopped poking it, seasoning by taste took a couple of months of daily cooking, and roasting vegetables took one demonstration because the difference is so visible. Knife skills were the slowest by far, months rather than sessions. Set expectations accordingly or he will conclude he is bad at it in week two.
One real difference: check the background behaviour explicitly rather than assuming. Both libraries default to not refreshing while the tab is hidden, and both let you turn that back on. On a wall display that is exactly backwards from what you want - the display is never focused, so with defaults it will quietly stop updating and show a number from three hours ago to a room full of people. Set the always-refresh option for that one deployment and leave the defaults alone everywhere else.
Cars are a terrible reference on their own, they have their own huge peaks and dips and every model is different. Use it as one of four checks, not as the truth.
They also pay on time and they do not argue about the price of a carburettor, which homeowners do to me every single week in May.
The + '_ was the missing piece. I'd been writing impl Iterator<Item = &Record> and wondering why it wanted a lifetime it could clearly see.
Steal the phrasing rather than inventing it. Read your last twenty support messages, DMs, or whatever people wrote in your waitlist form, and find the noun they keep using. That noun is your headline. Nobody types your category name if they do not know your category exists, and nobody recognises your pain sentence if it is phrased the way a founder would phrase it.
The hiss from the preamp, yes, that's fixed by the booster. What you avoid is the extra noise you generate by pushing a cheap preamp to its limit, which is usually the worse of the two.
Don't chase -6 peaks. That's a habit from 16 bit days. At 24 bit you can happily peak at -18 to -12 and still have an enormous signal to noise ratio, and normalising afterwards costs you nothing. Running hot into a weak preamp is what's amplifying its hiss.