releases // Aug 14, 2025
Release: Joystick RC3
Announcing the release of Joystick RC3.

About 4 1/2 years ago, I set out to make Joystick the “Honda Civic of JavaScript frameworks.”
With RC1 last year, we crossed an important milestone: Joystick was no longer an experiment—it was stable, production-ready, and something you could bet your app (and sanity) on.
Since then, I’ve been heads-down polishing the edges, adding some long-awaited features, and making sure Joystick feels even closer to that “it just works” ideal.
Today, I’m excited to announce the release of Joystick RC3 (yes, I had to skip RC2 due to an npm hiccup—thanks, Microsoft).
If you want to skip ahead, you can install the latest version of Joystick with npm i -g @joystick.js/cli@latest
(if you already have a Joystick app, just run joystick update
from the root).
Joystick, but with a tan and more muscles
This is a massive release.
I intended to release it far sooner, but instead of rushing out the next release, I wanted to spend time getting the details right. Now, after over a year of work, we have what I think is a really solid, stable set of tools.
Because there is so much in this release, I wanted to give a quick overview and then talk about what comes next.
What’s new
Here’s a quick rundown of new features and improvements that you’ll find in the RC3 release:
- Integrated tests – Run real tests against your app and database with
joystick start --tests
—no mocks, no fragile scaffolding. - Client-side cookies – Access and manage cookies in the browser via
instance.cookies
(powered byjs-cookie
). - HTML render method – Enables template literal syntax highlighting in your IDE for component markup.
- Node caches – Create server-side, in-memory caches for faster querying and data handling.
- Wrapper attributes – Assign arrays of custom attributes to component wrappers.
- Track external processes – Keep tabs on process IDs spawned in development and clean them up automatically.
- Head style tags – Add style tags directly via the
res.render()
head object. - Self-managed database binaries – Joystick will now download and run its own canonical binaries for MongoDB, PostgreSQL, and Redis when needed.
- Custom copy paths – Specify additional project paths to include during builds.
- Build environment support –
joystick build
now fully respects environment flags, with production builds automatically minified. - Dynamic components – Render components on-demand for SPA-style navigation without the overhead.
- Server-side caching for SSR – Cache translations,
index.html
, components, and email templates in memory for faster renders. - Improved session handling – Reduced unnecessary database usage for session creation & validation.
- Context-aware middleware – Avoid unnecessary middleware calls by splitting built-ins between UI and API routes.
- Smarter dependency mapping – Handle case changes in file paths without breaking rebuilds.
- Bug fixes across the board – From global state initialization, CSS & SVG re-rendering, and translation paths to upload validation, input checks, and Windows build compatibility.
Coming soon: Push
I’ve been teasing Push, the deployment service for Joystick for awhile now. With Push, deployments are dirt simple: just cd into your project locally and run joystick push -d [domain]
. Everything else is handled via the Push dashboard.
With this release, support for the joystick push
command has been added. I still have a few things I’d like to tune before I open the floor gates, but I’m anticipating a late-August/September release for this.
What’s next
Now my eyes are firmly on 1.0. Due to the NPM hiccup, I’m pretty eager to get off the release candidate track so I can start rolling out features, fixes, and improvements faster.
The good news: Joystick in its current state is worthy of stable production use (it’s powering all apps and websites that I currently work on). Most of the work I want to do on 1.0 involves implementing robust testing (at the framework level) and getting a few edge-case bugs closed out.
I’m overdue for a “what I learned” post for Joystick, so keep an eye out for that on the horizon, too.
Onward,
Ryan