r/reactjs • u/tannerlinsley • 15h ago
Show /r/reactjs Introducing TanStack Redact
r/reactjs • u/acemarke • Mar 15 '26
We've had multiple complaints lately about the rapid decline in post quality for this sub.
We're opening up this thread to discuss some potential planned changes to our posting rules, with a goal of making the sub more useful.
Hi! I'm acemarke. I've been the only fully active mod for /r/reactjs for a few years now. I'm also a long-standing admin of the Reactiflux Discord, the primary Redux maintainer, and general answerer of questions around React and its ecosystem.
You don't see most of the work I do, because most of it is nuking posts that are either obvious spam / low quality / off-topic.
I also do this in my spare time. I read this sub a lot anyways, so it's easy for me to just say "nope, goodbye", and remove posts. But also, I have a day job, something resembling a life, and definitely need sleep :) So there's only so much I can do in terms of skimming posts and trying to clean things up. Even more than that: as much as I have a well-deserved reputation for popping into threads when someone mentions Redux, I can only read so many threads myself due to time and potential interest.
/u/vcarl has also been a mod for the last couple years, but is less active.
The primary issue is: what posts and content qualifies as "on-topic" for /r/reactjs?.
We've generally tried to keep the sub focused on technical discussion of using React and its ecosystem. That includes discussions about React itself, libraries, tools, and more. And, since we build things with React, it naturally included people posting projects they'd built.
The various mods over the years have tried to put together guidelines on what qualifies as acceptable content, as seen in the sidebar. As seen in the current rules, our focus has been on behavior. We've tried to encourage civil and constructive discussion.
The actual rules on content currently are:
But the line is so blurry here. Clearly a discussion of a React API or ecosystem library is on topic, and historically project posts have been too. But where's the line here? Should a first todo list be on-topic? An Instagram clone? Another personal project? Is it okay to post just the project live URL itself, or does it need to have a repo posted too? What about projects that aren't OSS? Where's the line between "here's a thing I made" and blatant abuse of the sub as a tool for self-promotion? We've already limited "portfolio posts" to Sundays - is it only a portfolio if the word "portfolio" is in the submission title? Does a random personal project count as a portfolio? Where do we draw these lines? What's actually valuable for this sub?
Meanwhile, there's also been constant repetition of the same questions. This occurs in every long-running community, all the way back to the days of the early Internet. It's why FAQ pages were invented. The same topics keep coming up, new users ask questions that have been asked dozens of times before. Just try searching for how many times "Context vs Redux vs Zustand vs Mobx" have been debated in /r/reactjs :)
Finally, there's basic code help questions. We previously had a monthly "Code Questions / Beginner's Thread", and tried to redirect direct "how do I make this code work?" questions there. That thread stopped getting any usage, so we stopped making it.
Moderation is fundamentally a numbers problem. There's only so many human moderators available, and moderation requires judgment calls, but those judgment calls require time and attention - far more time and attention than we have.
We've seen a massive uptick in project-related posts. Not surprising, giving the rise of AI and vibe-coding. It's great that people are building things. But seeing an endless flood of "I got tired of X, so I built $PROJECT" or "I built yet another $Y" posts has made the sub much lower-signal and less useful.
So, we either:
(Worth noting that we actually just made the Reactiflux Discord approval-only to join to cut down on spam as well, and are having similar discussions on what changes we should consider to make it a more valuable community and resource.)
So far, here's what we've got in mind to improve the situation.
First, we've brought in /u/Krossfireo as an additional mod. They've been a longstanding mod in the Reactiflux Discord and have experience dealing with AutoMod-style tools.
Second: we plan to limit all app-style project posts to a weekly megathread. The intended guideline here is:
We'll try putting this in place starting Sunday, March 22.
We're looking for feedback on multiple things:
The flip side: We don't control what gets submitted! It's the community that submits posts and replies. If y'all want better content, write it and submit it! :) All we can do is try to weed out the spam and keep things on topic (and hopefully civilized).
The best thing the community can do is flag posts and comments with the "Report" tool. We do already have AutoMod set up to auto-remove any post or comment that has been flagged too many times. Y'all can help here :) Also, flagged items are visibly marked for us in the UI, so they stand out and give an indication that they should be looked at.
FWIW we're happy to discuss how we try to mod, what criteria we should have as a sub, and what our judgment is for particular posts.
It's a wild and crazy time to be a programmer. The programming world has always changed rapidly, and right now that pace of change is pretty dramatic :) Hopefully we can continue to find ways to keep /r/reactjs a useful community and resource!
r/reactjs • u/tannerlinsley • 15h ago
r/reactjs • u/OkMuffin6611 • 1h ago
How I can make a shuffle system witn leitner boxes on React?
r/reactjs • u/bittu_jain • 4h ago
Hey everyone,
I built an interactive 3D tactical command center using React and CesiumJS to track real-time global telemetry feeds.
Key React implementation details:
• Canvas & WebGL Integration: Synced Cesium's render loop with React state without triggering unnecessary re-renders during high-frequency telemetry updates.
• Custom Hooks: Encapsulated live ADS-B flight feeds, orbital satellite calculations (SGP4), and threat feeds into dedicated streaming hooks.
• Performance: Avoided standard React DOM nodes for map markers; batched updates directly into Cesium primitive collections to maintain a smooth 60 FPS.
• Dynamic Telemetry: Global fiber optic lines, data centers, and live GNSS interference zones rendered dynamically.
Looking for feedback on React state management patterns when handling high-frequency WebGL data streams!
(Live demo link added in the comments below)
r/reactjs • u/Martinsos • 16h ago
r/reactjs • u/Civil_Decision2818 • 14h ago
I was building a web app and wanted Excel files to live within it and be fully modifiable / saveable, but couldn't find anything open source that fully fit the bill. I ended up building the repo below.
Basically full Excel functionality in our React app including:
https://github.com/pixelsmasher13/gridpath. Please let me know if you end up trying it out.
r/reactjs • u/Brottin • 15h ago
Skeleton screens always felt like a guess to me: grey bars in roughly the right shape, then the real content pops in somewhere slightly different.
So I built Arrivo. While loading is true, an effect plays exactly where your content will land. When it turns false, the real elements are revealed in place.
Demo : https://tuancuongpham.github.io/arrivo/
Code: https://github.com/tuancuongpham/arrivo
npm i u/brottin/arrivo
import { Reveal } from '@brottin/arrivo';
import { halftone } from '@brottin/arrivo/effects';
<Reveal effect={halftone} loading={isLoading}>
<ArticleCard post={post} />
</Reveal>
How it works:
visibility, so nothing shifts when it lands.idle() and reveal(p). One shared requestAnimationFrame loop drives every instance, off-screen ones pause, and reduced motion turns every reveal into a 150 ms fade.The 13 effects: split-flap, redacted, quadtree mosaic, CMYK halftone, CRT tune-in, ink (with 8 threshold maps), particle swarm, darkroom, Tetris, fuse (with a Lunar New Year mode), equalizer, thermal and snowfall.
It's 0.1.0, so feedback is very welcome, especially on where you'd actually use something like this and where it would be too much.
r/reactjs • u/PimoluUI • 17h ago
Hey everyone! 👋
I've been working on Pimolu UI, an open-source React component library focused on clean design, customization, and smooth interactions.
I wanted to share my first motion showcase, featuring some of the components, their interactions, and examples of interfaces you can build with them.
My goal is to make building modern, consistent UIs easier while keeping components flexible and developer-friendly.
This is still a work in progress, and I'd genuinely love to hear your thoughts!
🌐 Website: https://pimolu.com
Any feedback is appreciated! 🚀
r/reactjs • u/JanaSundar • 1d ago
Just added 3 new components to Ovio, bringing the collection to 20 animated React components. Each available in 4 styles: Minimal, Craft, Retro, and Toy.
Built on the shadcn registry model, Ovio is for developers who want their websites to feel a little less ordinary, with motion and interactions that go beyond the usual UI.
The motion layer for developer websites.
Explore Ovio → https://ovioui.vercel.app
r/reactjs • u/FigAmbitious9101 • 1d ago
I recently created a complete tutorial where I build a Redux Toolkit-inspired state management library from scratch using React and JavaScript.
The goal is to understand how Redux-style state management works internally instead of only using the package.
In the tutorial, I implement:
createStore functionuseSyncExternalStoreuseSelector and custom store hookscreateSlicecombineReducersshallowEqualYouTube tutorial:
https://www.youtube.com/watch?v=LucUJ-5COjg
I would appreciate feedback from the community, especially on the library design, API structure, and any improvements that could make this project more reliable or easier to use.
Please note: this is an educational project designed to understand Redux and state management concepts internally. It is not intended to replace the official Redux Toolkit.
I read a few books on JavaScript and coding in general
This was in late 2025 and a few months later I started writing react js,
Ai has gotten so good at writing code, it is way better than I am.
I have pretty okay fundamentals of coding that I have been able to spin up some interesting projects with Ai.
But if you ask me what some parts of the code does, I have very little idea about it.
How can I catch up with so many years old coding experience and survive in this field if Ai learns 20x faster.
r/reactjs • u/ToshiryuShadow • 2d ago
r/reactjs • u/Material-Gold7483 • 2d ago
r/reactjs • u/Toonnaa • 2d ago
Hey everyone,
I kept writing the same code for every form in my projects: react-hook-form setup, a try/catch around the server action, mapping server errors back onto the fields, a loading state, stopping double submits, a toast, refreshing the data, resetting the form... and doing it again for every add/edit/delete dialog.
So I pulled all of that into a small package called **submitly**.
It’s headless, so it doesn’t render anything. You keep your own components (shadcn, Radix, Base UI, plain inputs, whatever you use).
What it does:
* `useCrudForm`: react-hook-form + schema validation + your action in one hook
* Works with any Standard Schema library: Zod 3/4, Valibot, ArkType
* Server errors get mapped to the right fields automatically (nested ones like [`items.0.name`](http://items.0.name) too)
* Ignores double submits while a request is in flight
* Locks the dialog while saving, so the user can’t close it halfway through a request
* `useCrudAction` for delete/toggle buttons, with the same behavior
* One provider where you plug in your own toast, router and refresh logic
* Next.js helpers: `runAction` for server actions (validates again on the server, revalidates on success, turns thrown errors into a clean result), and it handles `redirect()` from server actions properly
* Also works in plain React + Vite (there’s an example with React Router + TanStack Query)
* Around 3 kB gzipped, typed end to end, tested on React 18 and 19
Quick example:
const { form, onSubmit, isSubmitting } = useCrudForm({
schema,
defaultValues: { name: "" },
action: createProduct,
onSuccess: () => closeDialog(),
});
It’s still early (0.x), so I’d really like feedback: what’s missing, what’s confusing, or what you’d do differently.
Docs: https://submitly-docs.vercel.app
GitHub: https://github.com/toony10/submitly
If you find it useful, a star on GitHub would mean a lot. Thanks for reading 🙏
r/reactjs • u/ListenMedium9538 • 2d ago
Hello. Does anyone know how to host a web application built with React—both the frontend and the backend?
r/reactjs • u/Toonnaa • 2d ago
Hey everyone,
I kept writing the same code for every form in my projects: react-hook-form setup, a try/catch around the server action, mapping server errors back onto the fields, a loading state, stopping double submits, a toast, refreshing the data, resetting the form... and doing it again for every add/edit/delete dialog.
So I pulled all of that into a small package called submitly.
It’s headless, so it doesn’t render anything. You keep your own components (shadcn, Radix, Base UI, plain inputs, whatever you use).
What it does:
useCrudForm: react-hook-form + schema validation + your action in one hookitems.0.name too)useCrudAction for delete/toggle buttons, with the same behaviorrunAction for server actions (validates again on the server, revalidates on success, turns thrown errors into a clean result), and it handles redirect() from server actions properlyQuick example:
const { form, onSubmit, isSubmitting } = useCrudForm({
schema,
defaultValues: { name: "" },
action: createProduct,
onSuccess: () => closeDialog(),
});
It’s still early (0.x), so I’d really like feedback: what’s missing, what’s confusing, or what you’d do differently.
Docs: https://submitly-docs.vercel.app/
GitHub: https://github.com/toony10/submitly
If you find it useful, a star on GitHub would mean a lot. Thanks for reading 🙏
r/reactjs • u/sebastienlorber • 3d ago
r/reactjs • u/Glad-Vehicle-8244 • 3d ago
I built Honest Mailbox (my project, link at the bottom), a couples app with a draw-and-guess game, Four in a Row and card decks. All game logic is pure functions on the client, and security rules decide who can touch a game. Drawings are stored as compact strings on a 0–1000 grid, split into chunks so no single write gets big.
Open questions:
r/reactjs • u/Mob_Pilled • 3d ago
Hello again everyone. I have been trying to using the react binding for the Leaflet API. I followed the documentation but I keep running into this error:
Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
This is my Map component. It is the child component of my main App component.
import { MapContainer, TileLayer, useMap, Marker, Popup } from 'react-leaflet'
function MyComponent() {
const map = useMap();
console.log('map center:', map.getCenter())
return null;
}
const Map = () => {
return ( <MapContainer center={[50.5, 30.5]} zoom={13}>
<MyComponent />
</MapContainer>);
}
export default Map;
I am not sure whether it has something to do with muddled dependencies because I am pretty sure I installed leaflet and leaflet react in the terminal
"dependencies": {
"@testing-library/dom": "^10.4.2",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.3",
"@testing-library/user-event": "^13.5.0",
"leaflet": "^1.9.4",
"react": "^19.3.1",
"react-dom": "^19.3.1",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
}
Thank you so much for taking the time to read this.
r/reactjs • u/hp1232203 • 4d ago
I needed Word-style pages in a TipTap editor. The official Pages extension is a paid add-on, and the community ones I tried injected global CSS that broke my tables. So I wrote my own and open-sourced it.
Demo: https://text-editor-react-neon.vercel.app/
Repo (MIT): https://github.com/HuyPhan1232203/Text-editor-react
npm: npm install tiptap-a4-pagination
How it works
getHTML() / getJSON() stay clean.rowspan, and the header row repeats at the top of the next page.The full editor (React 19 + TipTap 3) also has
?room=name)Known limitations
I'd love feedback on the API, and on documents that break the layout. Paste a long Google Doc or a big table into the demo to try it.
r/reactjs • u/grzehub • 4d ago
I've been building describe-me, a Vitest plugin plus a viewer that turns component tests into docs. It records the DOM after every render and interaction of a test and shows the frames as a browsable catalog: each describe is a group, each it a story, each step a frame. No story files, so the docs cannot drift from the component: if they would, the test fails.
Short demo (23 s): https://github.com/grzehub/describe-me#readme
What's new in 0.11:
Live: a link to a test mounts the component for real, in your project's own Vite, exactly as the test's arrange phase set it up. You click and type in it, and vi.fn() props show their calls.
Foundations: it reads the design system your tests load (CSS custom properties, Tailwind 4, shadcn/ui, Material UI, or a theme module) and shows the tokens, light and dark, with WCAG contrast of color pairs.
Works in browser mode and in jsdom, with Testing Library and user-event. React 18 and 19, Vitest 4 and 5. It's early and React-only for now; the Limitations page lists every known limit.
Try it in StackBlitz: https://stackblitz.com/github/grzehub/describe-me/tree/main/examples/stackblitz
Example viewers:
shadcn/ui: https://grzehub.github.io/describe-me/examples/shadcn/,
Material UI: https://grzehub.github.io/describe-me/examples/mui/
Docs: https://grzehub.github.io/describe-me/
The question I'd most like answers to: does "tests as the source of stories" fit how your team writes component tests, or do you keep states in tests that you'd never want in docs?
r/reactjs • u/smcroissant • 4d ago
r/reactjs • u/KakashiHatake0085 • 4d ago
I know next.js isr behaviour and how it basically does the caching etc but I just realised that next.js isr is cache control with proprietary swr api that refreshes the data.
Now, I am confused because I would like to know if the same thing can be manually done with react router with self managed cache control https header with rtk query. Rtk query has a window of 1 minutes after which it fires the revalidation or something like that, haven't gone into that details but must be possible in one way or another.
r/reactjs • u/pladynski • 5d ago
Anyone? Any thoughts?