Sign in

{PuruVijay}.svelte

@puruvj.dev
1.7K followers 419 following 484 posts

compressionist, performance freak. @sveltejs team. 9 years experience. Thrice Conference Speaker ex-@stackblitz. ❤️🎸 Hans Zimmer. CodeFu: github.com/puruvj

PostsRepliesMedia
{PuruVijay}.svelte @puruvj.dev · 20/08/2026
Ogygia 0.7.0 for sveltekit is out ogygia.puruvj.dev/docs/start/r...
ogygia.puruvj.dev
Releases · ogygia
Every release of ogygia, newest first.
031
{PuruVijay}.svelte @puruvj.dev · 08/08/2026
You're welcome
000
{PuruVijay}.svelte @puruvj.dev · 07/08/2026
Context bsky.app/profile/puru...
010
Reposted by {PuruVijay}.svelte
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
ogygia — SSR islands for SvelteKit. Plus lakes. No Kit patches. csr=false. Mark the interactive bits; the rest stays server HTML. Runtime ≈ 7.6 KB min+brotli (CE + optional SPA router). 🏝️ Client islands · 🛰️ Server islands · 🌊 Lakes · 🔌 Remotes & forms · 🧭 SPA router ogygia.puruvj.dev
1211
{PuruVijay}.svelte @puruvj.dev · 07/08/2026
Thanks!
010
Reposted by {PuruVijay}.svelte
Stanislav @khromov.se · 06/08/2026
🏝️ Island fever in the land of Svelte! @puruvjdev has made a brand new SvelteKit library that allows you to use islands. Check it out below!
0151
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
SSR islands for SvelteKit. Plus lakes. pnpm add ogygia ogygia.puruvj.dev github.com/PuruVJ/ogygia
ogygia.puruvj.dev
ogygia — SSR islands for SvelteKit
SSR islands for SvelteKit. No Kit client bootstrap — a ~4.5 KB runtime (custom element + router), and JS only for the components you mark.
060
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
Also: • Lazy chunk after click → host island + plain await import() • Dynamic import + hydrate = build error (SSR needs a static shell) • csr=false HMR; FOUC bag so SPA swaps don’t blank CSS
110
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
🧭 <OgygiaRouter /> SPA body swap + head merge. View Transitions on. $app/navigation still works. • data-ogygia-persist — chrome survives swaps • Kit-style link prefetch • Adopt one route at a time next to Kit pages
120
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
🔌 Data stays Kit • +page.server props → islands (devalue) • classic form actions — zero JS • remotes: query, command, query.live, query.batch, form() Real Kit wire codec — not a reimplementation.
130
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
🌊 Lakes hydrate: 'none' freezes a subtree inside an island. Markup stays; that subtree’s JS never ships. Remount: cache, empty, or SWR. An island inside a lake wakes up again.
120
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
🛰️ Server islands defer = fallback HTML, then a signed fetch for real markup. Component JS never ships. Same schedules: load (w/ preload), idle, visible, media. Cookie-aware — the hole sees a real request.
120
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
🏝️ Client islands Static hydrate / preset. JS when you say so: • load — on connect • idle — requestIdleCallback • visible — IntersectionObserver • media — e.g. mobile-only drawers Props via devalue. Nesting works.
130
{PuruVijay}.svelte @puruvj.dev · 06/08/2026
ogygia — SSR islands for SvelteKit. Plus lakes. No Kit patches. csr=false. Mark the interactive bits; the rest stays server HTML. Runtime ≈ 7.6 KB min+brotli (CE + optional SPA router). 🏝️ Client islands · 🛰️ Server islands · 🌊 Lakes · 🔌 Remotes & forms · 🧭 SPA router ogygia.puruvj.dev
1211
{PuruVijay}.svelte @puruvj.dev · 22/06/2026
neosanitize 🧼 Zero deps. Browser-faithful parse. 2.3× faster than sanitize-html. Drop-in replacement, too. same API, same output, zero behaviour change. npm i neosanitize neosanitize.puruvj.dev
neosanitize.puruvj.dev
neosanitize
Zero-dependency, browser-faithful HTML sanitizer. Deny-by-default, ~2.3× faster than sanitize-html, ~3 KB in the browser, zero mXSS holes in 20k fuzz.
0191
{PuruVijay}.svelte @puruvj.dev · 13/06/2026
...judges the output of each, and scores it. Once the scores come, claude code autonomously read them, interprets them, makes tweaks to the SKILL.md, reruns and so on. And voila, I have a tailor-made Council skill ready. And ngl, Composer 2.5+Council feels almost like opus, in terms of vision.
skill.md
Agent Skills Overview - Agent Skills
A standardized way to give AI agents new capabilities and expertise.
040
{PuruVijay}.svelte @puruvj.dev · 13/06/2026
..them all. Ofc, you can't test a skill. Or can you...? I told claude code to write a test of kind of workflows I usually do: perf audits, re-architecture, simplification, LCP test etc, it wrote actual bunch of tests. 78 in total. It runs them all, using cursor's CLI, then a judge Claude Opus...
130
{PuruVijay}.svelte @puruvj.dev · 13/06/2026
Read somewhere about Council feature in Claude code. Couldn't find it, so I made it myself! Sith claude, but for composer 2.5. How? Prompted Claude code to make a skill of council, with multiple subagents being actors, pursuing the idea in multiple different directions, with one judge to guide...
230
{PuruVijay}.svelte @puruvj.dev · 11/06/2026
And the new piece: neotraverse/safe. The default walk is recursive (fast, but overflows on deep input). /safe is iterative: it walks 200,000-deep trees that crash everything else. Lazy and copy-on-write too. Out now. Full story 👇 puruvj.dev/blog/neotrav...
010
{PuruVijay}.svelte @puruvj.dev · 11/06/2026
Object walkers are the classic home of prototype pollution, so I ran an adversarial audit (the kind where "looks safe" means keep digging). Found and fixed a JSON __proto__ injection AND a boxed-key bypass. Every finding has a regression test, gated in CI.
110
{PuruVijay}.svelte @puruvj.dev · 11/06/2026
Hardening plus a rewrite usually cost performance. This time they bought it. ~4.96x faster than traverse on average. Up to 10x on clone. ~5.5x less memory per op, 6x+ on pure traversal. One context object per node, lazy paths, one write per key.
110
{PuruVijay}.svelte @puruvj.dev · 11/06/2026
If you last saw neotraverse at 0.6, it was a class: new Traverse(obj).map(...). 1.0 makes the functional API the default: ~50 standalone, tree-shakeable functions. clone, merge, diff/patch, deepEqual, $ref resolution, async. The whole toolbelt is ~5.8KB, and get alone is a rounding error.
120
{PuruVijay}.svelte @puruvj.dev · 11/06/2026
neotraverse v1 is out. 🚀 5 million downloads a week. Zero dependencies. And the biggest release in its history. ~50 tree-shakeable helpers, ~5x faster than traverse, an adversarial security audit gated in CI, and a new core that walks 200,000-deep JSON without crashing. 🧵 neotraverse.puruvj.dev
190
{PuruVijay}.svelte @puruvj.dev · 10/06/2026
Re-designing neodrag v3 for an AI-first world, its almost done. And yep, its now DnDnSnR now, not just Drag, or DragnDrop. Highly integrated and composable. Ah and did I mention...CRDT friendly too?
010
Reposted by {PuruVijay}.svelte
baseballyama @baseballyama.bsky.social · 08/06/2026
You can try using rsvelte, a Rust-based Svelte ecosystem, here. baseballyama.github.io/rsvelte/play...
4264
{PuruVijay}.svelte @puruvj.dev · 18/05/2026
cc @e18e.dev
020
{PuruVijay}.svelte @puruvj.dev · 18/05/2026
shipped bundle-roast → e18e integration today. every package now gets badged against the community catalog. 🚩 flagged offenders, ✅ endorsed swaps. conflict-of-interest disclosure: yes, neotraverse is in the catalog. yes, i wrote it. yes, that's why i had to ship the chart. bundle-roast.puruvj.dev
111
{PuruVijay}.svelte @puruvj.dev · 18/05/2026
exhibit A: moment. the original FOSSILIZED stamp recipient. somehow still 290kB in your bundle in 2026. bundle-roast.puruvj.dev/moment
020
{PuruVijay}.svelte @puruvj.dev · 18/05/2026
bundle-roast.puruvj.dev is live. paste any npm package, get its real brotli size and a roast from a wire-service correspondent. try /moment (fossilized). try /react+react-dom|vue|svelte (three-way fight). free, no signup, no telemetry.
160
{PuruVijay}.svelte @puruvj.dev · 21/04/2026
Thanks!!! Let me know if you have any feedback
010
Reposted by {PuruVijay}.svelte
{PuruVijay}.svelte @puruvj.dev · 06/03/2026
🚀 Introducing aibind — AI SDK bindings for every JS framework ⚡ Reactive streaming 🌿 Branching chat history 🤖 Agents & tool calling 🔄 Model switching & racing 📝 Streaming markdown 💾 Durable streams SvelteKit · Next.js · Nuxt · SolidStart · TanStack · React Router
3113
{PuruVijay}.svelte @puruvj.dev · 09/03/2026
Sure do! And let me know what problems you had to endure
010
{PuruVijay}.svelte @puruvj.dev · 06/03/2026
Why I wrote aibind: www.puruvj.dev/blog/aibind
puruvj.dev
Introducing aibind | blog | puruvj.dev
I got tired of rewriting the same AI boilerplate. So I wrote aibind.
031
{PuruVijay}.svelte @puruvj.dev · 06/03/2026
Docs, guides, and framework examples: aibind.dev
aibind.dev
120
{PuruVijay}.svelte @puruvj.dev · 06/03/2026
You don't want your most expensive model answering "what's 2+2". aibind lets you define named models and route automatically: routeModel: (prompt) => { if (prompt.length < 200) return "fast" if (/explain|analyze/.test(prompt)) return "reason" return "smart" }
100
{PuruVijay}.svelte @puruvj.dev · 06/03/2026
Chat history is deceptively hard. Edit a past message? That's a branch. Regenerate? Another branch. aibind ships a full message tree — edit anywhere, branch anywhere, navigate back and forward. Like git, but for conversations.
100
{PuruVijay}.svelte @puruvj.dev · 06/03/2026
Streaming in your framework should feel native. In Svelte: stream.text is a reactive $state In Vue: stream.text is a ref In React: it's just a hook Same API everywhere. No adapters, no wrappers, no fighting the runtime.
110
{PuruVijay}.svelte @puruvj.dev · 06/03/2026
Why does this exist? Every time I built an AI feature, I was writing the same plumbing: - wire up the stream - parse chunks into state - handle errors mid-response - manage conversation history - figure out markdown rendering None of that is the actual product. aibind handles all of it.
100
{PuruVijay}.svelte @puruvj.dev · 06/03/2026
🚀 Introducing aibind — AI SDK bindings for every JS framework ⚡ Reactive streaming 🌿 Branching chat history 🤖 Agents & tool calling 🔄 Model switching & racing 📝 Streaming markdown 💾 Durable streams SvelteKit · Next.js · Nuxt · SolidStart · TanStack · React Router
3113
Reposted by {PuruVijay}.svelte
MadeWithSvelte @madewithsvelte.com · 26/02/2026
Did someone say party? 🥳 The Neoconfetti library by @puruvj.dev offers a Svelte action to add confetti explosions to your apps 🎊 - madewithsvelte.com/neoconfetti-...
071
Reposted by {PuruVijay}.svelte
{PuruVijay}.svelte @puruvj.dev · 17/12/2025
I'm looking for opportunities! Full-time/part-time remote roles. Actions speak hella louder than words, so allow me to show you all the work I have done in the last 5 years as a professional developer 🧵1/n
21810
{PuruVijay}.svelte @puruvj.dev · 19/12/2025
I need to apply
010
{PuruVijay}.svelte @puruvj.dev · 18/12/2025
Thank you so much Theo! Love the pun haha. Planning on doing EBC in May, if I can get the correct fitness levels(10km in 1 hour run)
010
{PuruVijay}.svelte @puruvj.dev · 18/12/2025
Applied! Thanks a lot for suggesting Jeppe
030
{PuruVijay}.svelte @puruvj.dev · 18/12/2025
Fulltime OSS is a dream! Happy to apply
120
{PuruVijay}.svelte @puruvj.dev · 17/12/2025
Submitted myself!
110
{PuruVijay}.svelte @puruvj.dev · 17/12/2025
Thank you Paolo!
010
{PuruVijay}.svelte @puruvj.dev · 17/12/2025
What a trek!
020
{PuruVijay}.svelte @puruvj.dev · 17/12/2025
My resume: puruvj.dev/resume.pdf
000
{PuruVijay}.svelte @puruvj.dev · 17/12/2025
If you find my work interesting, shoot me a DM on X or on Discord(puruvjdev) or shoot me an email @ devpuruvj@gmail.com. Would greatly appreciate any and all reposts and referrals! Thank you!😁
100