Skip to content

Releases: TrigenSoftware/nano_kit

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 21:10
22b0508

Features

  • agera,intl,kida,nanoviews,query,router,svelte-kit: rename ValueOrAccessor to Signalish (#210) (c42723a)
  • agera,kida,nanoviews: bottom-up deferred effect scopes (#189) (dd3169f)
  • agera,nanoviews: add show_ with pausable effect scopes (#225) (4c2490d)
  • agera: add selector to wake only the keys whose answer changed (#200) (ac6b35f)
  • agera: derive mounted state from the graph instead of counting subscribers (#191) (9c43fce)
  • agera: keep the source cold when observing through a derivation (#199) (ecc0434)
  • kida,store: move tasks from @nano_kit/store to kida (#220) (2e5c07c)
  • nanoviews: add as_ to hand a row through a transform (#207) (2891ec4)
  • nanoviews: add match_ for a cascade of conditions (#219) (1065b20)
  • nanoviews: add props$ to read any prop in accessor form (#212) (3cd1d77)
  • nanoviews: expose swap_, the block if_ and switch_ are built on (#203) (9fc639f)
  • nanoviews: hand the tracking key to the row (#217) (34948cd)
  • nanoviews: let an effect attribute name the element it sits on (#206) (215f157)
  • nanoviews: rename $$children, $$slot and $$slots to a trailing $ (#209) (47f794b), references #188
  • nanoviews: rename effect attributes from $$name to name$ (#188) (468a293)
  • nanoviews: rename the truthy and falsy narrowing types (#211) (577c49d)

Bug Fixes

  • agera,kida,nanoviews,query: run user reducers and event handlers untracked (#193) (03c78db)
  • kida: keep a resolved factory unstarted until the first read (#221) (bc13a53)
  • kida: keep a child write in the caller's context (#198) (0816533)
  • kida: type toAccessor by what it actually returns (#208) (024e812)
  • nanoviews: apply multi-word and custom style properties (#195) (3270183)
  • nanoviews: fire every on* prop, not just the bubbling ones (#204) (42e613b)
  • nanoviews: show the for_ placeholder when there is no array at all (#205) (6e6568b)

Performance Improvements

  • agera,kida,store: replace morph with the signal constructor protocol (#197) (23b3370)
  • agera,nanoviews: cut allocations and graph work on the binding paths (#196) (3d1c93b)
  • benchmark-nanoviews: take the row key and drop record (#218) (66e9ee3)
  • nanoviews: clear a row range with replaceChildren (#216) (5942baf)
  • nanoviews: create the effect attribute registry on first use (#213) (4113217)
  • nanoviews: wake only the rows whose value changed (#202) (c71cc9c)

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 14:22
3d2aec6

✨ Highlights

Self-closing tags in rich text (@nano_kit/intl)

rich (and mapTags) now understand self-closing tags like <br/> and <br /> — handy for line breaks and other void elements in translations. Handlers for such tags are called with empty chunks. Unknown self-closing tags are still stripped as markup.

const [$t] = messages('pages', {
  sticker: rich({
    br: () => '\n'
  })
})

// 'First line<br/>second line' → ['First line', '\n', 'second line']

Rich tag handlers receive an unique index (@nano_kit/intl)

Every tag handler now gets an unique index as the second argument — use it as a key for framework nodes:

const [$t] = messages('pages', {
  sticker: rich({
    title: (chunks, i) => <strong key={i}>{chunks}</strong>,
    br: (_, i) => <br key={i} />
  })
})

No more key warnings and Children.toArray(t.sticker) workarounds in React.

Bonus: mapTags is now reentrant — nested calls from tag handlers no longer clobber the outer call's parsing state.

Features

  • intl: pass unique index to rich tag handlers to use as framework key (#187) (5b4008b)
  • intl: support self-closing tags in rich-text formatter (#185) (fa4fcb8)

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 10:50
3a99b40

Nano Kit 1.0 🎉

After a year of alphas and betas, Nano Kit is stable. It is a lightweight, modular state management ecosystem: a signals-based store, data fetching, routing, i18n, and SSR — separate packages, take only what you need. Works with React, Preact, and Svelte, with ready-made integrations for Next.js and SvelteKit.

Why Nano Kit

  • Fast. Reactivity is powered by Agera, our fork of alien-signals — one of the fastest reactivity algorithms around. In benchmarks it runs within ~3% of alien-signals itself — ~3.4M subscription updates per second, roughly 1.4× faster than svelte/store and rxjs, 4.5× faster than nanostores, and an order of magnitude ahead of mobx, valtio, and jotai.
  • Small. The whole store is ~5 kB min+brotli, a single signal — ~1.6 kB. A real React app with Nano Kit + DI bundles smaller than the same app with TanStack Query or Reatom, and our SSR stack ships 237 kB of frontend JS where TanStack Start ships 375 kB — see bundle size comparisons.
  • Dependency injection out of the box. Swap services for tests, SSR, or different platforms without context plumbing — it costs about 1 kB.
  • SSR without a meta-framework. Streaming-friendly renderer, hydration, cookies and locale injection — a full SSR app fits in one small hono server.
  • TypeScript-first. Strictly typed stores and typed route params, TypeScript 7 ready.

Where to start

  • 📚 Documentation — guides for every package
  • 🎓 Tutorial — build your first app step by step
  • 🌤️ Examples — the same weather and Rick and Morty apps implemented across React, Preact, Svelte, Next.js, SvelteKit, and TanStack stacks, so you can compare like for like

Credits

Kida is inspired by Nano Stores, Agera builds on alien-signals — thanks to both communities.

agera: v1.0.0-beta.7

agera: v1.0.0-beta.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Jul 08:23
e44e814

Performance Improvements

  • speed up effect runs by splitting warmup and rerun paths (#178) (f550458)

@nano_kit/router: v1.0.0-alpha.17

Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Jul 09:36
58d9f40

Bug Fixes

  • preserve statusCode of loadable notFound pages (#166) (40da5a6)

@nano_kit/ssr: v1.0.0-alpha.7

Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Jul 11:51
f030558

Features

@nano_kit/svelte: v1.0.0-alpha.5

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jul 11:54
9b01296

Bug Fixes

@nano_kit/svelte-ssr: v1.0.0-alpha.5

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jul 11:54
9b01296

Bug Fixes

@nano_kit/svelte-router: v1.0.0-alpha.6

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jul 11:54
9b01296

Bug Fixes

@nano_kit/svelte-kit: v1.0.0-alpha.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jul 11:54
9b01296

Bug Fixes