Adam Goldstein
Solid Start Internal Fetch
And because Solid Start follows not only web standards but is built on
h3
which has a fair number of libraries out there providing compatible route handlers with pre-written functionality (for one example I've used myself, ipx
), I think it's reasonable to expect that some users will bring in existing route handling logic from external sources not built for running through "use server", and allowing isomorphic support seems worth it for that case, for my two cents7 replies
Solid Start Internal Fetch
At the same time, one of my favorite parts of the ethos behind solid start is the idea of isomorphic code, the value of writing code once to produce identical behavior on cilent and server, and avoid skew from duplicated logic. Excluding internal fetch would seem to go directly against that
7 replies
Solid Start Internal Fetch
I do get that, and I'm personally a huge fan of server functions, unfortunately I'm stuck at the moment using Auth.js and they seem to pass everything through route handlers. Since internal fetch is something Nitro specifically allows, I'm assuming that behavior is being suppressed somewhere, I'm happy to patch the official library to get that working in an unofficial/unsanctioned manner, I just figured I'd reach out to see if anyone had beat me to it figuring out where I'd need to poke around
7 replies
How to avoid temporary undefined values in template literals in solid-meta?
* If you want the title to render in order with the stream and you're rendering SSR, that is, which will ensure best SEO/OG support and such (though may not be strictly necessary these days). Otherwise wrapping them in a Suspense boundary should make cause load in later out of order, but skip the undefined values
3 replies
Default SEO vs Route SEO
I experienced what I think was a similar issue but kicked the can down the road, iirc it seemed like
<Title>
would override correctly but the other meta tags wouldn't (my memory could be failing me though). I thought about a solution like wrapping the Router in a context provider, and having a custom Meta wrapper component with a "default" boolean or "priority" integer prop which configures which meta component overrides which, then some whacky state setting in that context when the wrapper mounts (with onCleanup to reset it) so only the non-default/highest priority wrapped Meta children get rendered.
If you end up implenting some solution, I'd definitely appreciate it if you shared it, I'll do the same if I get around to that first14 replies
Cycles in dependency graph
Oh of course, duh 🤦. For some reason I was thinking of the signals calling themselves, of course it would be the computeds. The memo-like approach makes a lot of sense though, glad to see that seems to be working!
14 replies
Cycles in dependency graph
@Andreas Roth You may be long past this now, but this seems doable (at least at first glance) by taking advantage of batched updates, either with the
batch
utility or relying on automatic batching. As long as all the updates are running inside a single batch, I think something like the following might work:
Just a thought, not sure 🤷14 replies
Auth in layout?
This is Solid Start right? I ended up going with a
<ProtectRoute>
component which has an SSR-blocking resource for auth, and conditionally renders a <Navigate>
component once auth is resolved as unauthenticated. Seems to work great with layouts10 replies
State sharing between Islands
My understanding is it should work fine as the roots handle disposal. If you create the signal statically, there shouldn't be a problem, you can have memory leaks if you create them dynamically though without wrapping them in a
createRoot
. Please someone correct me if I'm wrong though!3 replies
createResource with a nested source signal doesn't retrigger
You might want to try adding some logging, a few log statements for the resource source array accessor, the fetcher, and an effect on the startTime signal might make it clearer what is updating when. Apologies if you've already tried that, I just had a similar error and that helped me solve my own silly mistake 😃
7 replies