Interested in experimenting with Octane, wish that docs emphasized more the SSR aspect of it, because I'm looking for a Ruby/Phoenix/Php alternative in TypeScript land, and one with React-like apis would be cool.
The model is a bit different from React (no deps, hooks can be under ifs) — do coding agents recognize it or they get confused when they see that code?
Sort of ironic considering that there are a LOT of vibe tells in the copy throughout this page. It's a neat looking project, it's a shame that every other sentence has Claude's fingerprints all over it.
Just took a glance so I may be completely wrong, fell free to ignore, but if I understand correctly, tsrx is just syntactic sugar for normal tsx code and does not enable anything new?
If this is the case: I think introducing tsrx as part of Octane muddies the water a bit and makes me more hesitant to try (even if it is optional).
The idea to make tsx files more readable may be interesting but in that case it should go into its own separate project, and maybe just put a lang toggle in Octane docs and a page about tsrx compat, that way if people are intrigued by the new syntax they can just look it up but the docs stay focused.
This looks like an interesting project but reading these AI slop web pages is so exhausting. At least turn your brain on long enough to explain what your project does
Would look more appealing without the AI flavour. If you're vibe coding, do yourself a favor and write website copy yourself - it's the only evidence of human input or oversight your project will have.
> A current-state getter. useState and useReducer return [state, update, getState], so a delayed callback can read the latest value instead of a stale capture.
There are currently a few workarounds in React for this, and using other state management libs also give you non-reactive access to current state, but this is a big help in certain situations.
For example, a callback / event that you pass to all your child elements, that needs to access the current state when run, therefore normally needs to be recreated with the new state captured (in useCallback) whenever state changes, which then causes all child components to re-render. Non-reactive access to current state in callbacks avoids this entirely.
There are some hacks that fix this by wrapping the updated callback in a ref and updating it with an event (for example, https://usehooks-ts.com/react-hook/use-event-callback useEventCallback as implemented various places) and returning a stable reference to a function that calls that saved one, though I always wonder if there are downsides to this.
The copy reads like it is react but improved. Which begs some questions: what strings are attached and why wouldn't the authors of react adopt this? What reasons would developers have to not switch from react to octane?
I mean I created Octane coming from being one of the authors of React from years ago. Octane makes breaking changes compared to React to improve on things that aren’t that important in 2026. For example the synthetic event system - which takes up 13kb of React’s payload and adds overhead over just using the correct DOM events.
Looks interesting. But does anyone really like the useState useContext etc. React model? Might as well make a better one if you are going to be compiling no?
23 comments
[ 0.14 ms ] story [ 52.8 ms ] threadSort of ironic considering that there are a LOT of vibe tells in the copy throughout this page. It's a neat looking project, it's a shame that every other sentence has Claude's fingerprints all over it.
Also, is there any read on the downsides / shortcomings / caveats of Octane vs. vanilla React?
[1] https://github.com/octanejs/octane
If this is the case: I think introducing tsrx as part of Octane muddies the water a bit and makes me more hesitant to try (even if it is optional).
The idea to make tsx files more readable may be interesting but in that case it should go into its own separate project, and maybe just put a lang toggle in Octane docs and a page about tsrx compat, that way if people are intrigued by the new syntax they can just look it up but the docs stay focused.
> A current-state getter. useState and useReducer return [state, update, getState], so a delayed callback can read the latest value instead of a stale capture.
There are currently a few workarounds in React for this, and using other state management libs also give you non-reactive access to current state, but this is a big help in certain situations.
For example, a callback / event that you pass to all your child elements, that needs to access the current state when run, therefore normally needs to be recreated with the new state captured (in useCallback) whenever state changes, which then causes all child components to re-render. Non-reactive access to current state in callbacks avoids this entirely.
There are some hacks that fix this by wrapping the updated callback in a ref and updating it with an event (for example, https://usehooks-ts.com/react-hook/use-event-callback useEventCallback as implemented various places) and returning a stable reference to a function that calls that saved one, though I always wonder if there are downsides to this.
- i ll take that over the AI, GPT, LLM, Agent stuff on HN anyday now