We were told complex is the new "normal"
Many of us remember learning HTML, CSS and jQuery from View Source in simpler times. As Single Page App frameworks became more popular, we gradually accepted a revolving door of build tools, transpilers, task runners, module systems and other rabbit holes of anti-productive bike-shedding as the way things had to be to build "modern" applications.
In an alarmingly short time, SPA usage escalated from "does this project justify it" to "which one to choose" to "you're a dinosaur if you don't embrace progress". Except, is it progress... or are the inmates running the asylum?
We were told server-rendered majestic monoliths are "dead"
The bill for managing needless layers of abstraction is paid for by developers. We were tricked into giving up tools designed for happiness in favor of shuttling JSON payloads and contorting our logic to prioritize securely synchronizing client state with the server. How much time and energy could we save if the client DOM was a live, dynamic view of our application state?
We were told SPAs are "faster"
Faster for who? The web is getting slower, especially for people with older hardware. And with the ratcheting complexity of the JS ecosystem, it's just assumed that you need multiple teams to build anything real. Meanwhile, there's simply no truth to the claim that SPAs are inherently faster than a server-rendered experience.
We've been deceived by accounts receivable
In a world where everything is complex, the infrastructure constantly shifts and bigger teams need to work longer, the owners increase their profits. We let Facebook and Google convince us that their problems are our problems. We didn't challenge the wisdom of training new developers to favor tools offered by tax-dodging corporations who want to control the future.
All out of bubblegum, so it's time to kick ass
Stimulus — the Velvet Underground of JS frameworks — was released quietly several years ago. As developers increasingly wonder if they should just
git reset --hard on last 5-10 years of front-end, Stimulus is winning hearts.
It offers a compelling path forward for jQuery developers while presenting a legitimate, powerful alternative to SPAs like React and Vue. Stimulus can be paired with Turbolinks and works with every back-end technology.
On the server side, Rails developers can use StimulusReflex to quickly build reactive applications. It uses CableReady to send updates to the client over-the-wire using the ActionCable websockets framework.
Stimulus Connect, where the #resistance gathers
This site actively tracks the momentum and expansion of the Stimulus universe. It provides the learning resources a developer needs to get up to speed. It offers a comprehensive, searchable index of Stimulus controllers you can use in your projects. It aggregates all of the news and updates about Stimulus and related technologies.
Login above with Github to customize the site, suggest new content and more to come. While we love Ruby on Rails, if you're not a Rails developer, you can filter out non-JS content and that's 100% fine.
It's great to have you with us, comrade. Welcome to the #resistance.
A Future for Rails: StimulusReflex
StimulusJS: Finding out the state of other controllers
A clever approach to shared state... although one that possibly falls down if you have multiple instances.
Autocomplete in Ruby on Rails using Stimulus
As an added bonus you can easily change the Stimulus controller so that it gets its API URL from a data attribute instead of having it hard coded in the controller itself.
Writing better Stimulus controllers
You can compose multiple Stimulus controllers together to mix-and-match functionality and create more complex interactions.