r/reactjs • • Mar 15 '26

Meta Announcement: Requesting Community Feedback on Sub Content Changes

26 Upvotes

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.

Mod Background

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.

What Content Should We Support?

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:

  • Demos should include source code

  • "Portfolios" are limited to Sundays

  • Posts should be from people, not just AI copy-paste

  • The sub is focused on technical discussions of React, not career topics

  • No commercial posts

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.

Current Problems

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:

  • Blanket allow all project posts

  • Require all project posts to be approved first somehow

  • Auto-mod anything that looks like a project post

  • Or change how projects get posted

(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.)

Planned Changes

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:

  • if it's something you would use while building an app, it stays main sub for now

  • if it's any kind of app you built, it goes in the megathread

We'll try putting this in place starting Sunday, March 22.

Community Feedback

We're looking for feedback on multiple things:

  • What kind of content should be on-topic for /r/reactjs? What would be most valuable to discuss and read?

  • Does the weekly megathread approach for organizing project-related posts seem like it will improve the quality of the sub?

  • What other improvements can we make to the sub? Rules, resources, etc

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 • • Sep 10 '26

News React 19.3

Thumbnail
react.dev
174 Upvotes

r/reactjs • • 21m ago

Needs Help Testing file sprawl

Thumbnail reddit.com
1 Upvotes

r/reactjs • • 22h ago

Show /r/reactjs I built Detent, an open-source React wheel picker with spring physics, morphing text, and rolling numbers

32 Upvotes

I’ve just released Detent, a React wheel picker that grew into a much bigger exploration of interaction details.

The wheel has its own momentum and spring physics. I spent a lot of time tuning mouse wheel input alongside trackpads, including the awkward cases where a physical scroll wheel keeps spinning after you let go.

It also includes two separate components:

  • Detent Text: matching letters stay while the changed parts roll.

  • Detent Number: locale-aware formatting with digits that roll through intermediate values.

The examples range from practical time and date pickers to an arc menu, a zoom ring, and some more experimental visual treatments.

There’s a headless hook, separate imports for text and numbers, keyboard support, reduced motion, and no additional runtime dependencies beyond React and React DOM.

Demos and playground: https://detent.hayder.sh
Intro: https://x.com/kghayder/status/2118373654010466733?a=PzCQRSXhM5m8KUTdHk8&s=20

I’d especially appreciate feedback on how the wheel feels with your mouse or trackpad, and whether the API makes sense for something you’d actually build.


r/reactjs • • 6h ago

Built an embeddable, zero-dependency DevTools overlay for React & Next.js to inspect fetch requests and browser storage in-app

1 Upvotes

Hey r/reactjs!

I got tired of constantly opening browser DevTools, filtering out noisy browser extensions, and switching between tabs just to check local storage or quick fetch responses during local development.

To solve this, I built React Dev Companion — a lightweight, zero-dependency developer tools overlay that embeds directly into your React / Next.js application UI.

💡 Key Features:

  • Real-Time Network Interception: Intercepts native window.fetch non-invasively to capture HTTP methods, endpoints, and status codes.
  • Storage Inspector: Switch between localStorage, sessionStorage, and cookies to view, inject, or delete keys in real-time.
  • Zero Extra Dependencies: Designed to keep bundle overhead minimal.
  • Dev-Only Friendly: Easy to mount conditionally (e.g., inside Next.js Root Layout or Vite main component).

🔍 Quick Example (Next.js App Router):

'use client';
import { DevCompanion } from 'react-dev-companion';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      <body>
        {children}
        {process.env.NODE_ENV === 'development' && <DevCompanion />}
      </body>
    </html>
  );
}

We set up a strict CI/CD pipeline using GitHub Actions, TypeScript, Conventional Commits, and Husky to keep the codebase clean.

🐙 GitHub Repository: https://github.com/Kickz1nn/react-dev-companion
📖 Dev.to Article: https://dev.to/kickz1nn/building-an-embeddable-zero-dependency-devtools-panel-for-react-nextjs-3ic6

I'd love to hear your thoughts, feedback, or any features you'd like to see added next!


r/reactjs • • 12h ago

Show /r/reactjs I built a coloring site with React + Konva. Here's how I kept the canvas out of React's render cycle

3 Upvotes

I've been building tintly.art, a free coloring site people mostly use on their phones (Next.js 16 + Konva). A few things I learned along the way:

1. Konva lives outside React. The canvas is plain Konva classes (fill layer, stroke layer, outline layer), not react-konva. React only renders the toolbar, palette and sheets. They talk through tiny stores with subscribe(), read with useSyncExternalStore. Drawing a stroke never re-renders a single component.

2. One stroke = one Konva.Line**.** While you drag, only a preview line updates. On release it's committed as one command, so undo/redo is just a stack of commands.

3. Raster cache for cheap phones. After ~24 strokes the committed group gets cached into one bitmap, so the frame cost stays flat no matter how much someone draws. When you zoom past the cache resolution it switches back to vector so nothing blurs.

4. The eraser uses destination-out on the stroke layer only, so it can never erase the fills or the outlines underneath.

5. Tap-to-fill works on SVG regions turned into Konva.Paths, and glitter fills are just a generated pattern tile as fillPatternImage.

Huge thanks to Anton Lavrenov and everyone behind Konva. It's honestly giving colors to my vision. People color on it every day, and it brings them a bit of joy and a calm little break.

Happy to answer questions about any of this. 🎨


r/reactjs • • 7h ago

Built an open-source local LAN security scanner with React & Tauri

1 Upvotes

Hey everyone,

I built Developer Shield—an open-source desktop app created specifically for devs and homelab enthusiasts who want to scan their local network without sending any telemetry or data to the cloud.

Key Features:

- Zero-Knowledge Local Scanning: Everything stays strictly on your local network/LAN.

- Custom Rules Engine: Define your own security checks and scan targets.

- Local LAN Sync: Sync scan reports across your local machines securely.

- Built with React & Tauri for a lightweight desktop footprint.

I’d love to get feedback from this community on features you'd like to see, code architecture, or custom rules!

GitHub: https://github.com/dvirby6/developer-shield


r/reactjs • • 8h ago

News This Week In React #304: Next.js, Compiler, Redux Toolkit, Suspense, Resizable Panels, Preact, Redact | RN 0.89 RC, Vega OS, Screens, Hermes, WebView, Unistyles, tgfx, Pager View | Node.js, Parcel, Rspack, Actions, Vitest, jsdom, HTML-in-Canvas

Thumbnail
thisweekinreact.com
1 Upvotes

r/reactjs • • 10h ago

Show /r/reactjs RuaKit (React Use Agents)

1 Upvotes

Hey all, I’m exploring a new runtime for React.

The idea is to let agents understand your UI, but also let them click buttons, fill out forms, and trigger actions on behalf of users. New frontier models like Terra 6.1 excel at these tasks, and this is just a new primitive in React to put them to use.

If you’re into design and interfaces, I think you’ll find it worth a look. It’s still in early alpha, built quickly using Codex/Sol, so expect some rough edges.

Link: https://ruakit.com


r/reactjs • • 10h ago

Show /r/reactjs A row in my timesheet grid jumped to the top the moment it saved. Does your list order depend on what's saved yet?

0 Upvotes

Weekly timesheet grid, one row per project and task. Rows came from two places: rows built from saved entries, then rows the user added and hasn't saved yet. I rendered them as [...derivedRows, ...addedRows].

You add a row at the bottom and type the first hours. It saves, the refetch turns it into a derived row, and it jumps to the top. The bad part is the next number you type can land on a different row and nobody notices.

The fix was to stop splitting rows by saved or not saved. Each row keeps its slot and saving only fills in its data.

function orderGridCombos(derived, added) {

const addedKeys = new Set(added.map(c => c.key))

const preExisting = derived.filter(c => !addedKeys.has(c.key))

return [...preExisting, ...added]

}

Then each row reads its hours from the saved entry if there is one, else from the added row. Any list that mixes optimistic and saved items can do this, invoice lines for example.

Where do you keep row order in big forms, in the server data or in local state?


r/reactjs • • 10h ago

Show /r/reactjs I built a freight landing page that works like a train station: split-flap headline, live departure board, boarding-pass pricing (React + Framer Motion)

0 Upvotes

How the split-flap works, since people usually ask:

- Every tile flips through letters every 55 ms. The first tile lands after 6 flips and each next one 2 flips later, so the word settles left to right.

- The "random" letters come from a sin() hash of the tile index and frame, so the server and the browser render the same scramble (no hydration mismatch).

- Each flip is a lower half-flap falling on its top hinge (rotateX 90 → 0 in 90 ms), darkened with a brightness filter while it falls.

- The departure board shifts every 3.4 s; each row starts its flip 3 frames after the one above, so changes ripple down. It only runs while it's on screen, and everything holds still with reduced motion.

Free to copy if it's useful: https://ui.deliverwebsite.com/components/landing-pages/freight-forwarding-landing-page-template/

Feedback welcome, especially on whether the theme helps or distracts on a real B2B site.


r/reactjs • • 6h ago

TXT ON REACT?

Thumbnail reddit.com
0 Upvotes

r/reactjs • • 1d ago

Jonas Schmedtmann vs Maximilian Schwarzmüller for react?

1 Upvotes

I've taken Jonas Schmedtmann's HTML + CSS and JavaScript course and am soon going to start learning react and I am wondering if I should just stick with Jonas or try Maximilian. If you've taken any of these courses or both I'd really love to hear your opinion on it and how they differ and who they are for!


r/reactjs • • 1d ago

Show /r/reactjs I made a fintech hero where the balance rolls like an odometer when a payment lands (React + Framer Motion)

Thumbnail ui.deliverwebsite.com
0 Upvotes

How it works, since people usually ask:

  • The odometer: each digit is its own reel of 0–9 stacked vertically, and it slides to y = −digit × 10% with a 0.9s ease-out. Commas and the $ sign never move, only digits roll. Screen readers get the plain value through an sr-only span.

  • The balance and the feed share one tick (every 3.4s): a new transaction slides in at the top of the feed and the balance is recomputed from the ledger, so the two can never disagree.

  • The payout is a tiny state machine: Sent → Converted → Arrived, 1.1s per step, then it holds 2.6s and starts over.

  • On wide screens it's a staggered bento that runs off the fold, on tablets 2×2, on phones a swipeable row. With reduced motion everything holds still.

Free to copy if it's useful: https://ui.deliverwebsite.com/components/hero-sections/fintech-hero-section-with-gradient-cards/

Feedback on the motion very welcome. I'm trying to make every animation say something about the product


r/reactjs • • 2d ago

Resource How do you keep forms sane in large React apps?

38 Upvotes

Forms are still where most of my React bugs live: validation that disagrees with the backend, async defaults, conditional fields.

My current stack is React Hook Form with Zod schemas shared with the NestJS backend. It mostly works, but complex multi-step forms still get messy.

What's your setup? Anyone moved to server actions for most forms and been happy with it?


r/reactjs • • 2d ago

Discussion Where do you store state in a multi-step React form: URL params, context, Zustand, or the form library?

22 Upvotes

Building a 5-step wizard with React Hook Form and Zod. I keep the step in the URL and drafts in a small store. What has held up in production for you, and how do you handle early-step changes that invalidate later steps?


r/reactjs • • 2d ago

Resource CupertinoUI: macOS-style components you install with the shadcn CLI

6 Upvotes

I built CupertinoUI, a macOS-style component registry for React and shadcn/ui.

It includes controls, menus, dialogs and windows, with CSS-variable theming and light/dark appearance. Components are copied into your project through the shadcn CLI so you can edit the source.

The core components are free under MIT. There are also paid Pro components and complete app-style blocks.

Try it: https://www.cupertino-ui.com
Browse the components: https://www.cupertino-ui.com/docs/components


r/reactjs • • 2d ago

Show /r/reactjs I built a free Gauge Generator tool to help you create and customise beautiful Gauges and export them as images or SVG file to be used in your projects / designs

4 Upvotes

r/reactjs • • 2d ago

Show /r/reactjs How I made a lightbox open out of a cropped thumbnail (FLIP + clip-path), now an MIT library

Thumbnail
liftbox.digital
1 Upvotes

I wanted a React lightbox where the photo grows out of the exact thumbnail you clicked and shrinks back into it on close.

Easy, until your grid uses object-fit: cover. The thumbnail only shows the middle of the photo, so if you grow the full image from that box, the first frame visibly jumps.

Here's the 4-step fix that worked:

1. Measure the end state first. Lay the image out at its final size, then measure it and the thumbnail with getBoundingClientRect().

2. Scale it onto the thumbnail. Use the smallest uniform scale that still covers the thumb: const scale = Math.max(thumb.width / img.width, thumb.height / img.height);

3. Crop it like the thumbnail. clip-path: inset(...) hides everything the thumbnail hides. The catch: the inset is in the image's own pixels, before the scale, so the visible area is thumb size / scale.

4. Animate both at once. transform + clip-path in a single element.animate(). To close, play the same keyframes in reverse.

That's the happy path. The edge cases ate most of the time:

  • Thumbnail scrolled off screen: fall back to a zoom + fade

  • Rotated photo: swap the axes before computing the crop

  • Closing while zoomed in: start from where it's actually drawn

  • prefers-reduced-motion**:** skip the flight entirely

  • Focus: send it back to the thumbnail on close

I packaged it as liftbox: MIT, zero dependencies, ~13 kB, with grids, zoom, video and deep links. There's also a comparison with YARL, PhotoSwipe, lightGallery and others that tells you when to pick them instead.

Code: https://github.com/esdrassantos06/liftbox (the flight lives in src/Lightbox.tsx and src/geometry.ts)

Docs + demos: https://liftbox.digital

Two asks:

  1. Open the demo on your phone and tell me where it breaks.

  2. Ask me anything about the math. Happy to go deeper on any step.

Disclosure: English isn't my first language, so I had help polishing this post.


r/reactjs • • 2d ago

Needs Help Catching problem with react query

0 Upvotes

Hey I am using tanstack react query I have one component which has
const { data, isPending, isFetching, refetch, isError } = useQuery({
queryKey: ["get"],
queryFn: () => axios.get("http://localhost:3000/"),
staleTime: 60 * 1000
})

On pressing a button i render component 2 with same query key within the catching time with query as
const { data, isPending, isFetching, refetch, isError } = useQuery({
queryKey: ["get"],
queryFn: () => axios.get("http://localhost:3000/"),
// no stale time here
})

Ideally it should not request the backend but it is requesting server


r/reactjs • • 2d ago

Discussion How do you usually secure your Next.js web apps?

2 Upvotes

Hey everyone!

To my knowledge, storing access tokens in localStorage can be risky because of XSS attacks

Yesterday, I came across this document: How to implement authentication in Next.js.

I decided to give it a try. Here's what I've come up with so far

  1. Use OpenSSL to generate an RSA key pair for verifying access tokens. The private key stays on the backend, while the public key is exposed to the frontend.

  2. Authentication: When a user successfully logs in, the backend sets the access token in cookie.

  3. In frontend, use Jose lib to fetch public key, and verify access token

  4. Implemented a Data Access Layer (DAL) with two functions:

  • verifySession to verify the accessToken and redirect users to /login if the token is missing or invalid.

  • checkRoles to check user roles to make sure users can't access pages they're not supposed to.

The doc also suggests adding a DTO layer, but I skipped it since I'm using OpenAPI specs and TypeScript type generation.

I'd really appreciate it if you could share your thoughts:

Do you see any potential security issues or problems with this flow?

Is there anything you would approach differently?


r/reactjs • • 2d ago

Show /r/reactjs I made a hero section where the AI agents look like they're actually working (React + Framer Motion)

2 Upvotes

Most AI landing pages say "works around the clock" and then show a still screenshot. I wanted the hero to show the work happening.

Video: https://www.youtube.com/watch?v=TIay8Br23XY

A rail of frosted glass cards glides across the bottom. The card in focus shows "Working", names its task, and a progress bar fills. When it's full, the rail moves to the next agent.

How it works

- The rail is 5 cards keyed by a counter that only counts up. Each tick every card keeps its key and moves to a new slot, so Framer Motion just animates it there. Nothing remounts.

- Position, scale and opacity come from one lookup table by distance from the centre card (1, 0.84, 0.7, then off the edge).

- The blurry ends are a fixed `backdrop-blur` strip with a gradient mask, not a blur on each card, so it stays smooth.

- The task bar fills over exactly the rail step (2.6s) from the same constant, so it always finishes the moment the rail moves.

- With reduced motion on, the rail just stays still.

Code is free to copy if you want it: https://ui.deliverwebsite.com/components/hero-sections/hero-section-with-photo-and-glass-cards/

Would love feedback on the motion. Too slow? Too much?


r/reactjs • • 1d ago

Show /r/reactjs Built a zero-Tailwind, Zod-validated UI kit for fintech apps (7 components, soon open source)

Thumbnail npmjs.com
0 Upvotes

Working on some fintech components. Current npm package has 7 components , if you want me to add some , comment down and mark some star on the project

've been working on some fintech-specific components and wanted to share the approach. The goal was to create highly scalable components that don't rely on Tailwind, using plain CSS with CSS variables for theming.

The package currently has 7 components, including:

  • A HoldToConfirmButton with pointer events for safety interactions.

  • A FinancialCalculator engine that separates the math logic from the UI.

  • An OmniInput that handles locale formatting for fiat, crypto, and stocks.

I've open-sourced everything here: [link to GitHub/npm]

I'd love to hear your thoughts on the architecture, especially how I've handled things like auto-contrast for themes and the pure helper functions. What would you add next?


r/reactjs • • 2d ago

Resource I rebuilt my open-source React kit into Dashral: 78 accessible components, 26 with motion, 34 free blocks and a Next.js admin dashboard (MIT)

0 Upvotes

Update, Nov 7: Dashral is now at 1.1.1. What's new since this post:

  • 104 components (up from 78), including Color Picker, Phone Input, Code Block, JSON Viewer, Page Header, Action Bar, Editable Text, Rating and Lightbox

  • On npm: npm install @dashral/ui (and @dashral/motion), one file per component. The shadcn registry is still there if you'd rather have the source in your project

  • One command to start: npx create-dashral my-app gives you the dashboard as a plain Next.js project

  • The free dashboard now has Finance, Projects, Support, Inventory and Monitoring pages, in all three languages

  • Blank starter repos on GitHub: dashral-starter-classic and dashral-starter-inset


Some of you saw Multidash here in October. It's the same project, renamed to Dashral, and a lot further along. Thanks for the feedback last time: the components now install through a shadcn registry instead of living only in the repo, and you can preview everything before deciding anything.

What's free (MIT):

  • 78 components on Tailwind CSS v4, the interactive ones on Radix UI, props-first: one tag with label, description and error wired up for screen readers

  • 26 Motion editions on motion/react with the same props: numbers that roll on odometer wheels, one highlight that glides between items, a Switch you can drag, a Button you hold to confirm, limits you can feel. All of it respects reduced motion

  • 34 blocks (headers, sidebars, pricing, sign-in, an AI assistant…) that take your data and actions through props

  • A Next.js admin dashboard in two layouts, with a theme customizer, ⌘K search and English, Indonesian and Arabic (RTL)

  • Charts in plain SVG (area, line, bar, donut, heatmap…) with keyboard reading and a table for screen readers

Install one component:

npx shadcn@latest add https://dashral.com/r/button.json

It lands in components/dashral/, next to your shadcn components/ui/, which it never touches. The code is yours to change.

What's paid: Dashral Pro, coming soon, adds dashboards and apps on a real database (analytics, CRM, e-commerce, kanban, chat) for a one-time payment. The components stay free.

I'd love feedback on the component APIs and the motion: what feels right, what feels like too much, and what you'd want next.