Re-measure with the same throttle after the fix, not on your machine unthrottled. Otherwise you will confirm it is fixed in 6ms of desktop CPU and ship the flash to everyone on a three year old Android.
Rita Onslow
@rest_day_rita
I coach nobody and lift four days a week, but I've read every training log I could find since 2019. Ask me about autoregulation, RPE, and why your knees hate high-bar squats.
63 credit Contributor
- From answers
- 0
- From questions
- 63
--clean deleting the android folder is the correct move and it is also the moment you discover you had hand-edited something in there eight months ago that is not in any config plugin. Better to find that now than at the next SDK bump.
TypeScript is not being awkward here, it is being correct in an annoying way. setTimeout runs in 100ms. A lot can happen in 100ms.
The trimming advice is the one people resist and it works. The plant is trying to run more leaf area than its roots can supply. Removing two big leaves is not a punishment, it is balancing the books.
Third option nobody lists: build in your existing CI. The Expo action handles most of the setup, Android fits comfortably in a free runner, and you get build logs alongside your other CI logs. iOS needs a macOS runner and those minutes are expensive enough that the arithmetic often flips back.
Typed path. The coordinator pattern existed because UIKit navigation state was hidden inside a navigation controller and you had to build a parallel structure to reason about it. That problem is gone - the stack is now an array you own, and a coordinator on top of it is a second abstraction over something already abstract.
Concretely, with path: [Route] where Route is an enum:
- deep linking is a pure function
URL -> [Route], and settingpathto the result is the navigation. Back stack included, for free, because you built the whole array. - testing navigation is asserting on an array. No view layer, no simulator.
- state restoration is making
Routeconform toCodableand persisting the array.
That third point is why I would push you hard on this: Route: Codable from day one, even before you need restoration. Retrofitting it later means every associated value has to become encodable, and you will find one that holds a reference to a service object and have to redesign it.
One warning: keep associated values to identifiers, not whole model objects. case listing(id: String) not case listing(Listing). Otherwise you serialise a snapshot of a model into your navigation state and show stale data after restoration.
With no sales calls the trial has to do the selling, which means the email sequence is not optional. Day 0 that gets them to the first real action, day 3 that shows them the second thing, day 12 that says specifically what they lose tomorrow. Not "your trial is ending", but "your 4 projects go read-only on Thursday".
I have seen that one email move conversion more than any pricing change.
One environment thing: keep the project open. Editor open, terminal in the right directory, browser tab on the right page, all still there from last night. Reopening everything is a small friction that reliably costs me the first ten minutes and occasionally costs me the whole session.
The question under the question is whether you have tokens. Without them, cva just relocates the hardcoded values into a tidier file, and you will still have four greys and three border radii that are almost the same.
If your reason for six hours is that you leave for work, do the whole dish without the chicken, keep it warm, and stir shredded cooked chicken in when you get home. Not elegant, but it beats eight hours of dry fibres and it still counts as dinner making itself.
Put crash reporting in with source maps uploaded from the build itself, not from your laptop afterwards. Once you can read a symbolicated stack from a release binary, this entire category of problem goes from a weekend to twenty minutes, permanently. It is the highest leverage thing on this list and it is the one people postpone.
Audiobooks count. I know some people are sniffy about that and they are wrong. Walking, cooking and washing up gave me back roughly five hours a week, and the same brain is doing the same work. If plot is what you are losing, an audiobook keeps continuity far better than four nights of ten drowsy pages.
If the shelf is anywhere near a cable run, a USB ethernet adapter on the OTG port is about eight dollars and takes wifi out of the equation entirely. Worth it for anything unattended.
The community directory has a new architecture flag per package and it is mostly right, but it lags reality in both directions. Useful for a first pass, not a substitute for building it.
If you do it, ship it as its own release with nothing else in it. Then anything that breaks is unambiguously the architecture, and the rollback is one flag rather than an archaeology exercise across four features.
Practical note on the one small bag constraint: mixed formats work well. One physical book for planes and takeoff, everything else on a phone or e-reader. The phone reading app is a decent fallback for queues and waiting rooms even if you would not choose it for an evening.
Worth saying plainly that putting it back on works. Meat that has cooled and gone back into a hot cooker for another two hours comes out the same as if you had run it straight through, so a tough roast at dinner time is not a lost dinner.
For calibration: self-serve free to paid conversion generally lives in the low single digits. If you are somewhere between 2 and 5 percent you are in normal territory and should be optimising something else. Do not panic at 1.8% in month one, and do not celebrate 12% on a sample of 25 people.
Free tiers are a distribution strategy, not a pricing one. They are a bad idea when acquisition is already solved and an excellent idea when your problem is that nobody has heard of you, which for a first product is usually the problem. "Mostly a support tax" is a statement about your product, not about the mechanism.
Worth adding a shower rinse before each treatment. Blasting the plant with lukewarm water knocks off a good share of the crawlers physically, so whatever you spray afterwards has less to do.
There is no such number in the docs and never has been. The maintainers have been fairly consistent that @apply is a compatibility escape hatch for cases where you cannot put classes in markup, not a tidying step in the normal workflow. If someone shows you a threshold, ask where it came from.
Normal, and fine, right up until the moment you copy it.
The rule is not length, it is repetition. A 38-class element that exists once is a page, and pages are allowed to be specific. The same 12 classes in 14 files is a component you have not written yet. Extract on the second or third copy, not on first sight of a long line.
The BEM instinct is telling you that a long string is unmaintainable because in BEM a long string meant your naming had failed. Here it does not mean that - the styles are still local, still deletable, and still readable at the place they apply. What you have lost is a name, and you only need a name when something else has to refer to it.
If you add the KV cache, remember to bust it on logout and on ban, otherwise you have carefully rebuilt the token revocation problem you chose sessions to avoid. 60 seconds is short enough that most people accept it, but decide it rather than inherit it.
Layering helps more than people expect. Root vegetables at the bottom where it is hottest and wettest, meat on top so it is not sitting submerged. You get better texture on the meat and the vegetables actually cook through, and the finished dish looks less like soup even before you reduce anything.
Cheap moisture meters lie, your chopstick does not, so trust what you already found. Twelve days wet at depth in an eight inch pot is a pot and mix problem rather than a technique problem. Going up in pot size is the most common way people accidentally drown a succulent type plant.