Skip to content

Releases: beerush-id/airstack

v1.2.6

15 Jun 13:26

Choose a tag to compare

🚀 Features

  • (ssr) Add support for optional app shell wrapping during SSR rendering
  • (ssr) Add support for optional app shell component in SSR rendering
  • (ssr) Add support for optional Shell component during SSR rendering
  • (irpc) Add file upload/download and enhance adapter drivers

💼 Other

  • (irpc) Split IRPCAdapter into base and extended classes

🚜 Refactor

  • (irpc) Rename and restructure adapter and driver for CRUD operations
  • (irpc) Standardize id parameter types and enhance type safety

📚 Documentation

  • (getting-started) Add air-material-css skill installation instructions

⚙️ Miscellaneous Tasks

  • (release) Bump version to 1.2.4 across all packages
  • (release) Bump version to 1.2.5 across packages and demos
  • (version) Bump version to 1.2.6 across all packages and demos

v1.2.3

12 Jun 01:05

Choose a tag to compare

🚀 Features

  • (ssr) Add serverless option and optimize asset resolution

🎨 Styling

  • (docs) Update heading tags and css specificity in news and posts pages

⚙️ Miscellaneous Tasks

  • (release) Bump version to 1.2.3 across all packages

v1.2.2

11 Jun 08:11

Choose a tag to compare

🚀 Features

  • (irpc) Add IRPCBlob support for remote blob handling
  • (file) Add abort support and blob decoding for file operations

🐛 Bug Fixes

  • (irpc) Update IRPCReader initialization and state management for scheduled executions

🚜 Refactor

  • (reactive) Simplify derived ref observer creation

📚 Documentation

  • (material-css) Add comprehensive documentation for AIR Material 3 CSS library
  • (material-css) Remove components documentation pages

⚙️ Miscellaneous Tasks

  • (release) Bump version to 1.2.1 across all packages
  • (release) Bump version to 1.2.2 across all packages

v1.2.1

10 Jun 10:30

Choose a tag to compare

🚀 Features

  • (docs) Update AIR Form documentation and v1.2 release notes

🐛 Bug Fixes

  • (irpc) Update IRPCReader initialization and state management for scheduled executions

🚜 Refactor

  • (reactive) Simplify derived ref observer creation

📚 Documentation

  • (posts) Update forms tutorial with reactive state example
  • (skills) Introduce air-form-react agent skill and update form engine documentation
  • Add SolidJS skills and update installation commands

⚙️ Miscellaneous Tasks

  • (release) Bump version to 1.2.1 across all packages

v1.2.0

07 Jun 15:45

Choose a tag to compare

🐛 Bug Fixes

  • (react) Resolve HOC context loss during snippet re-rendering
  • *(vite-ssr) Fix dev server running different core instances
  • (build) Remove caret symbol from package version references in prepublish scripts
  • Move to peer dependencies and using static version

⚙️ Miscellaneous Tasks

  • Bump version to 1.1.2 across all packages
  • (release) Bump version to 1.2.0 across all packages

v1.1.1

04 Jun 19:06

Choose a tag to compare

🚜 Refactor

  • (vite-ssr) Modularize middleware and configure SSR externalization. This change also fix the hydration mismatch issue caused by disconnected instance on the modules.

📚 Documentation

  • Add AIR Form homepage section and bump template dependencies to 1.1.0

⚙️ Miscellaneous Tasks

  • (workspace) Bump version to 1.1.1
  • (scripts) Defer vite-ssr publishing to the end of the sequence

v1.1.0

04 Jun 01:25

Choose a tag to compare

🚀 Features

  • (cookie) Enforce writable context validation for server-side cookie mutations
  • (irpc) Introduce buffered configuration and simplify declare signatures
  • (http) Introduce standalone dispatch mode for full HTTP lifecycle support

🐛 Bug Fixes

  • (solid) Resolve children render prop detection in setup components

🚜 Refactor

  • (form) Simplify form state initialization and remove reactive sync
  • (vite-ssr) Dynamically load core context utilities via ssrLoadModule
  • (vite-ssr) Remove cookie context middleware from IRPC HTTP router

📚 Documentation

  • (news) Remove SSR and ISR documentation links from release notes
  • (ssr) Introduce universal SSR and ISR documentation
  • (index) Update landing page code examples and SSR content
  • (posts) Add framework and RPC comparison articles to documentation
  • (posts) Add smart form component tutorial and interactive demo
  • (skills) Update cookie state management and SSR examples
  • (form) Introduce comprehensive AIR Form documentation

⚙️ Miscellaneous Tasks

  • (docs) Refine glob patterns for AI markdown files
  • (workspace) Standardize build scripts and apply comprehensive formatting
  • (format) Apply standard code formatting across http and core packages
  • (workspace) Bump version to 1.1.0 and apply formatting

v1.0.0

29 May 21:52

Choose a tag to compare

AIR Stack v1.0.0 — Reactive Full-Stack Framework, from DB to UI

Anchor (state) + IRPC (network) + Router (navigation), backed by a single reactive graph. No separate state manager, API client, caching layer, or form library.

Highlights

Remote Functions (IRPC)

Typed function stubs that separate signature, implementation, and transport. Call them like local functions — HTTP, WebSocket, or BroadcastChannel, the call site stays identical.

  • Standard & streaming — one-shot calls and progressive streaming (AI generation, long-running ops)
  • Transport agnosticism — HTTP, WebSocket, BroadcastChannel; swap at runtime without changing code
  • Automatic batching — concurrent calls merged into a single request
  • Request coalescing — identical concurrent calls share one in-flight request
  • Caching + invalidationmaxAge caches, irpc.invalidate() clears stale entries
  • Retry with backoff — configurable linear or exponential retry
  • Reactive bindings.with(), .when(), .later(), .once() for component-level data fetching
  • File uploads — pass IRPCFile as arguments, transport handles the rest
  • Runtime validation — Zod schemas for input/output enforcement
  • CRUD moduleirpc.crud() generates get/create/update/delete with adapter wiring
  • Hooks — cross-cutting concerns (auth, logging) via irpc.hook()
  • Microservice routing — each package routes to its own server
  • Publishable stubs — declaration files safe to ship as npm packages

Workflow Orchestration

Promise-like chaining for multi-step async logic with built-in routing, validation, recovery, and observability.

  • plan() + .then() / .catch() / .finally() — familiar async composition
  • .switch() — key-based or matcher-function branching with isolated branches
  • Schema validation — Zod/Valibot at pipeline input, output, and step boundaries
  • Reactive bindings.once(), .with(), .when(), .later() mirror IRPC patterns
  • Step trackingreader.current.name shows which step is running
  • Manual stepping.step(), .run(), .skip(), .reset() for wizard-style flows
  • Persistencesnapshot() / hydrate() for resuming after crashes
  • WorkflowStore — global observability and telemetry subscription

Routing (Router)

URL path, guards, and data loaders in a single typed chain. View attaches separately — route logic and UI stay decoupled.

  • Type-safe route tree — TypeScript infers params across the entire tree
  • Pre-render guards — run before mount, no flash of unauthorized content
  • Reactive providers — re-run when reactive dependencies change, no manual tracking
  • Fine-grained routing — only components observing changed state re-render
  • Parameter mutations/users/1/users/2 updates state in place, no unmount
  • Modal routesmodal() renders as overlay, keeps current page mounted
  • Preloading — providers fetch on <Link> hover
  • Render modesdeferred (block until resolved) and immediate (stream in)

State Management (Anchor Core)

Transparent reactive Proxies — read and write properties normally, the system tracks dependencies and triggers updates.

  • Direct mutationstate.count++ triggers updates, no setters or copies
  • Deep reactivity — nested objects auto-wrapped, configurable depth
  • Computed getters — standard JS get on mutable objects, auto-tracks dependencies
  • Read-only stateimmutable() blocks writes, writable() for controlled access
  • derived() — combine multiple state sources, no dependency arrays
  • ordered() — reactive sorted view with O(log N) binary insertion
  • effect() — auto-tracks dependencies, cleanup on re-run/unmount
  • form() — Zod schema validation with reactive error map per field
  • $bind() / $use() — two-way binding and error linking
  • Class supportmutable(new MyClass()) works out of the box

User Interface

Autonomous components following HTML's mental model — each component carries its own state, determines its own behavior, syncs with parent through state contracts ($bind).

  • setup() — component function runs once, stable closure survives re-renders
  • render() / template() / snippet() — reactive view boundaries (React)
  • Bindable props — two-way prop binding, child writes propagate to parent
  • IRPC integration.once(), .with(), .when(), .later() directly in components
  • Optimistic UI — update state before server confirms, rollback on failure
  • React & SolidJS — same API, typically differs by a single line

Universal SSR

Same component renders on every runtime — Bun, Node.js, Cloudflare Workers, Deno.

  • Request isolation — each render gets its own reactive scope, no state leaks
  • Cookie propagation — mutations during SSR captured as Set-Cookie headers
  • Abort signals — SSR renders respect AbortController with configurable timeout
  • Vite pluginairSSR() runs SSR + IRPC + WebSocket on one dev server
  • ISR — cached HTML on hit, SSR on miss, stale-while-revalidate with background re-renders

Testing

168 test files · 2,774 tests · 100% coverage (statements, branches, functions, lines)

Get Started

# React
npx degit beerush-id/airstack/templates/air-react my-app
cd my-app && bun install && bun dev

# SolidJS
npx degit beerush-id/airstack/templates/air-solid my-app
cd my-app && bun install && bun dev

Documentation · Getting Started

License

MIT

v1.0.0-beta.25

27 May 18:23

Choose a tag to compare

v1.0.0-beta.25 Pre-release
Pre-release

🚀 Features

  • (irpc) Add pipeTo method to RemoteState and implement subscription cleanup
  • (workflow) Add initial state seeding and reader state piping
  • (workflow) Introduce stepper and runner for stateful multi-step execution

🐛 Bug Fixes

  • (irpc) Clear internal pipes on state teardown and improve test typing

💼 Other

  • (vite-ssr) Update vite and ws to use workspace catalog

🚜 Refactor

  • (docs) Remove numeric prefixes from content files and add library authoring guide
  • (templates) Migrate to vite-ssr plugin and simplify server entry points
  • (starter) Remove WebSocket transport from air-react and air-solid templates
  • (workflow) Replace WorkflowReader with WorkflowStepper and integrate schema parsing
  • (workflow) Remove internal execution logic and expand schema validation tests
  • (workflow) Remove AsyncReader and WorkflowReader utilities
  • (workflow) Use options objects for stepper and runner initialization
  • (irpc) Replace init with seed for call initialization
  • (air-stack) Update IRPC primitives and modernize React skill documentation
  • (irpc) Remove init from call configuration and type definitions
  • (irpc) Introduce domain-specific error classes and structured payloads
  • (error) Replace generic errors with custom error factories
  • (templates) Adopt seed property for IRPC state initialization

📚 Documentation

  • (irpc) Introduce structured error hierarchy and update documentation
  • (readme) Enhance architectural overview and update code examples
  • (readme) Add bold formatting to framework name in AI quote
  • Remove AI knowledge base files and clean up config
  • (ssr) Add Incremental Static Regeneration (ISR) patterns and examples

🎨 Styling

  • (irpc) Apply code formatting and fix line wrapping

⚙️ Miscellaneous Tasks

  • Pin template dependencies and document IRPC streaming patterns
  • (templates) Lock anchorlib and irpclib dependencies to explicit versions
  • (workspace) Remove obsolete apps, demos, and legacy packages
  • (workspace) Bump version to 1.0.0-beta.25 and apply formatting
  • (templates) Bump dependencies to beta.25 and reset template versions

v1.0.0-beta.24

24 May 19:19

Choose a tag to compare

v1.0.0-beta.24 Pre-release
Pre-release

🚀 Features

  • (react) Allow getter functions for binding sources
  • (stub) Add manual execution capability with later method
  • (workflow) Add resumable workflow readers with debounce support
  • (air-stack-react) Introduce new skill for AIR Stack and React development
  • (router) Implement route state caching and hydration
  • (router) Introduce parallel data provider resolution
  • (router) Introduce renderAsync for lazy loading route renderers
  • (react) Introduce SSR renderer utility and async route rendering
  • (solid) Introduce SSR utility and async route rendering
  • (irpc) Introduce router isolation method and refine error codes
  • (core) Introduce createContext API and rename IRPC context store
  • (router) Add AbortController support to route activation
  • (irpc) Introduce preHook to router and implement abort signal propagation
  • (react) Introduce edge worker utilities and refactor SSR renderer
  • (solid) Introduce SSR worker utilities and modularize renderer
  • (irpc) Introduce credential signing and RemoteState piping
  • (vite-ssr) Introduce airSSR plugin for unified SSR and IRPC routing

🐛 Bug Fixes

  • (irpc) Add proper cleanup for debounced dispatch in reader module
  • (core) Allow asynchronous callbacks in withIsolation

🚜 Refactor

  • (router) Introduce class-based error handling and update activation flow
  • (router) Export error classes and strongly type exception renderer
  • (router) Transition resolving state to a Set and adjust error handling
  • (anchor) Gracefully handle non-reactive objects in snapshot and stringify
  • (core) Optimize passive mode tracking and untrack serialization
  • (router) Replace withIsolation with internal withContext utility
  • (ssr) Centralize worker types and enhance API documentation
  • (transport) Restructure payloads to single calls and introduce credentials
  • (react) Simplify createSSR by importing renderToString directly
  • (react) Remove custom renderer from createSSR tests
  • (solid) Simplify SSR renderer by directly importing renderToString
  • (vite-ssr) Replace dynamic core imports with static imports
  • (templates) Overhaul SSR configuration and introduce demo application

📚 Documentation

  • (readme) Overhaul architecture documentation and update resource links
  • (remote-function) Add detailed documentation for IRPCStub reactive APIs
  • (react) Expand guides for SSR, optimistic UI, and state primitives
  • (react) Update context API, overhaul SSR setup, and expand router features
  • Expand API documentation and introduce optimistic UI guide

🧪 Testing

  • (react) Add comprehensive test suite for createSSR

⚙️ Miscellaneous Tasks

  • (workspace) Bump packages to 1.0.0-beta.24 and format json configurations
  • (publish) Add vite-ssr package to release script