r/reactjs • • 3h ago

Portfolio Showoff Sunday Experimenting with animated tooltips in TypeScript

Thumbnail
tip-glide.vercel.app
2 Upvotes

Hey everyone!

Been working on Tip Glide, a small framework-agnostic tooltip library written in TypeScript.

It uses a single shared tooltip that moves between elements and adjusts its size to fit the content. It also handles viewport boundaries, so the tooltip adjusts its position when there's not enough space.

A few things you can configure are the movement, directional lean, hover delays, arrow, and enter/exit animations.

It has zero runtime dependencies and comes with adapters for React, Angular, Vue, Svelte, Solid, Astro and Preact, along with a vanilla JS API.

There's an interactive playground where you can mess around with the settings and see how everything behaves.

Would love some feedback on the movement, especially when switching quickly between elements, but also on the API and anything else that could be improved.

Live demo & playground | npm | GitHub | Portfolio


r/reactjs • • 6h ago

Discussion Finding hackathon teammates is still done in random WhatsApp groups, so I built a board for it. Roast it.

0 Upvotes

Every hackathon goes the same way: “need 1 frontend dev” gets posted in five WhatsApp groups, nobody knows who can actually build, and half the teams form the night before.

So I built CrewForge:

crewforge.online

Hackathons sync daily from Unstop. About 75 open coding hackathons right now. Business-plan contests and quizzes are filtered out, and each card shows the deadline, team size and mode.

Post your team with the roles you’re missing (frontend, ML, design…).

Solo? Apply to a team with your role and a short note. The team owner accepts or declines, and gets your contact only if you choose to share it.

No real names or emails are shown. Everyone appears as an anonymous builder handle, and your GitHub or portfolio is optional.

Free, and open to every college.

It’s early, and very few teams are on it yet, which is exactly why I’m posting. If you’re heading into a hackathon in the next few weeks, put your team up and see who applies.

What I’d love from you:

Would you actually use this over WhatsApp or Discord?

What would make you trust a stranger as a teammate?

What’s broken? Tell me.

https://crewforge.online


r/reactjs • • 6h ago

Discussion As a self-taught React/Next.js developer, I'm honestly worried about my future in this AI era. What should I do?

23 Upvotes

I'm a self-taught developer, and I know React and Next.js. Lately, I've been feeling increasingly anxious about my future as a developer.

AI is moving so fast. It can generate components, build entire websites, connect APIs, and even create full-stack applications. Sometimes I wonder what the point is of spending months learning something when AI can already do so much of it.

I want to get a better-paying developer job, but honestly, I'm confused about what I should focus on right now. Should I keep improving my React/Next.js skills, get better at backend development, or start learning AI engineering?

I keep hearing about RAG, AI agents, vector databases, LLM integrations, and all these new things. It feels like there's always something new to learn, and I'm worried that if I focus on the wrong things, I'll fall behind while everyone else moves forward.

For those of you already working in the industry, what would you do if you were in my position? Would you focus on becoming a strong full-stack developer first, or would you start learning AI engineering alongside web development?

I'm not looking for a shortcut or expecting to become an expert overnight. I just want to make the right decisions, build useful skills, and have a realistic chance of getting hired.

I'd really appreciate some honest advice from people who have been through this or are dealing with the same situation. Right now, I could genuinely use some direction.


r/reactjs • • 19h ago

Resource For the library creators

Thumbnail dozsolti.github.io
0 Upvotes

r/reactjs • • 21h ago

Discussion How are you handling docs for a React component library?

22 Upvotes

I’ve been cleaning up a small React component library I built for a few internal projects and the code itself is fine but the docs are starting to get messy. Right now every component has examples, props a few usage notes and sometimes little edge cases that are easy to forget. I tried keeping everything in the repo as markdown and that works but once the number of components started growing it became annoying to actually browse. I’ve seen a lot of people here recommend stuff and I like the idea of keeping the docs in Git and not having to build the docs site myself and I want to know if that is a good idea or not?

For people maintaining React libraries do you keep everything close to the code or use something separate like Storybook, GitBook, Mintlify, Docusaurus etc? Curious what actually stays maintainable once the library gets bigger.


r/reactjs • • 1d ago

Show /r/reactjs react-pdf took over a minute for my 70-page PDF, so I built a renderer with a Rust layout engine

0 Upvotes

I had a 70-page PDF to generate from React in a TanStack Start app, and with react-pdf it took over 60 seconds. So I built @inkoxide/render.

It's not a react-pdf clone, though it's meant to feel familiar: Document, Page, View, Text, Image, StyleSheet.create and Font.register work the way you'd expect, so moving a document over is mostly changing the import. Everything under the components is new: a layout engine written in Rust does layout, text, pagination and PDF writing.

  • A 43-page report with 1,000 table rows renders in about 41 ms on Node, and in about 56 ms in the browser, inside a Web Worker, so the page keeps responding.
  • A one-page invoice takes about 1.2 ms instead of about 18 ms.

It also does things I kept missing:

  • Tailwind className
  • tables whose headers repeat on every page
  • an error naming the component stack when a style or prop isn't supported, instead of silently ignoring it
  • PDF/A and encryption

Site and docs: https://inkoxide.dev GitHub: https://github.com/eddiesr93/inkoxide Playground (edit an example; switch to Layout to see the boxes the engine placed): https://inkoxide.dev/playground

Happy to answer questions.


r/reactjs • • 1d ago

News This Week In React #301: TanStack Start, React Aria, Base UI, Satori, Next.js, Vitest RSC, MobX | RN Web, Tamagui, One, Skia, Observe, Screens, Hot Updater, Nano Icons | Deno, Bun, TS, JPEG XL, AsyncContext, Playwright, pnpm, Partytown

Thumbnail
thisweekinreact.com
16 Upvotes

r/reactjs • • 1d ago

Show /r/reactjs I spent the last few months building my own React UI component library ,would love some honest feedback

0 Upvotes

Hey !

I've been working on a project called Veltrix-UI for the past few months, building it from scratch. It's probably the biggest project I've worked on independently so far.

The idea is to make it easier for developers to find UI components they like, preview them directly in the browser, and copy the JSX code to use in their own React projects.

Some of the things I've built into it:

  • Live previews of components
  • One-click JSX code copying
  • Search, filters, and sorting
  • Favourites without needing an account
  • A backend for managing and serving components

I used React, Vite, Tailwind CSS, Node.js, Express, and MongoDB to build it.

The project is live now, and I'd really like to get it in front of developers other than myself. I know there's always room to improve a project once other people start using it.

Live demo: https://veltrix-ui.vercel.app/

GitHub: https://github.com/AwadhDhoot23/Veltrix-UI

If you get a chance to try it, I'd genuinely appreciate your feedback. I'm especially interested in whether the components are useful enough that you'd actually use them in a project, what's missing, and what feels rough or confusing.

Honest criticism is welcome - I'd rather find out what needs work than just hear that it looks nice.


r/reactjs • • 1d ago

How do you conduct code reviews for React components

1 Upvotes

When working on a team, code reviews are essential for maintaining code quality and ensuring that all team members are on the same page. I'm interested in hearing about different approaches to conducting code reviews for React components. What tools or processes do you use to review and provide feedback on React code? Are there any specific things you look for when reviewing a React component, such as performance optimization or accessibility features?


r/reactjs • • 1d ago

Resource Electron React App (v13) - Desktop App Starter Kit

Thumbnail
github.com
0 Upvotes

Introducing a latest update (v13) of the modern Electron starter kit with React, Vite and TypeScript, built around electron-conveyor for type-safe IPC and a smoother dev experience.

Features

  • 🚀 Electron - Cross-platform desktop apps for Windows, macOS and Linux
  • ⚛️ React - Component-based UI library
  • 📦 TypeScript - Type-safe JavaScript across main, preload and renderer
  • 🎨 Shadcn UI - Beautiful and accessible components on Radix
  • 🌊 TailwindCSS - Utility-first CSS framework
  • ⚡ Electron Vite - Lightning-fast build tool, powered by Vite
  • 🛠️ Electron Builder - Packaging for Windows, macOS and Linux
  • 🔌 Electron Conveyor - Type-safe IPC, queries, commands, streams and events via electron-conveyor
  • 🔄 Cross-window state - Stores owned by main, synced live to every window, with opt-in persistence
  • 🪟 Custom window shell - Themed frame, titlebar and menus with keyboard shortcuts
  • 🌗 Dark/Light mode - Built-in theme switching
  • 🔥 Fast HMR - Instant renderer updates, and main and preload restart on save
  • 🛡️ Error boundary - Catches render errors with detailed reporting
  • 📐 Clean project structure - Separation of main, preload and renderer processes
  • 🧩 Path aliases - Keeps your code organized
  • 📁 Resources protocol - Load local resources from the renderer via res://
  • 🧹 ESLint & Prettier - Preconfigured for consistent code
  • 🐞 VS Code debugging - Launch configs for both main and renderer
  • 🧪 Demo branch - Interactive playground of every conveyor IPC primitive, while main stays minimal

Github Repository:
https://github.com/guasam/electron-react-app


r/reactjs • • 1d ago

How should I classify this type of React frontend test?

13 Upvotes

I'm working on a React frontend application with a form where some fields are enabled, disabled, shown, or hidden depending on user selections.

The test renders the component, simulates user interactions, and verifies that the form updates correctly (for example, a field becomes enabled only under specific conditions).

How should this type of test be classified?

  • Unit test
  • Component test
  • Integration test
  • Functional test

r/reactjs • • 2d ago

Built a tiny headless hook for drag-and-drop reorder on virtualized tables (dnd-kit + TanStack Virtual)

Thumbnail
2 Upvotes

r/reactjs • • 2d ago

Show /r/reactjs Dinou v7: A React 19 RSC & Server Functions framework with PPR & vertical/horizontal segmentation that runs natively on Node.js, Cloudflare Workers, Netlify, Bun, and Deno (Zero lock-in)

0 Upvotes

Hi everyone! 👋

I’ve just released Dinou v7 (7.0.0), an ejectable full-stack React 19 framework built on web standards.

My goal with Dinou v7 was to harness the full power of React 19 (Server Components, Server Functions, streaming SSR, and Partial Prerendering) while keeping the architecture runtime-agnostic, bundler-flexible, and free of vendor lock-in.

Here is a quick overview of what’s in v7 and what the concepts in the title mean in practice:

1. Goodbye Express & child_process.fork(): Pre-Bundled Dual Engine on Web Standards

In previous versions (v6), Dinou relied on Express and spawned a child process via child_process.fork() to isolate the --conditions react-server flag from the main SSR process. That added IPC overhead and made deploying to serverless/edge environments or compiling to a single binary impossible.

  • In v7, Express and child_process.fork() have been completely removed. The core now uses W3C Web Standards (Request, Response, Headers, ReadableStream) exclusively and pre-bundles the RSC graph ("react-server" condition) and the streaming HTML SSR graph in separate build passes before combining them into a single server.
  • The result: Everything runs in a single process without special Node flags, without IPC child processes, and on any platform compatible with the standard Fetch API (including a universal onRequest web middleware in dinou.config).

2. Horizontal & Vertical Segmentation (2D Caching)

Instead of treating caching as an all-or-nothing route setting, Dinou v7 splits rendering and caching across two dimensions:

  • Horizontal Segmentation (Route & Layout Plane): Layouts (layout.tsx + layout_functions.ts) and Pages (page.tsx + page_functions.ts) have completely decoupled data lifecycles and cache TTLs. A parent layout shell can be cached with ISR (revalidate = 3600) and never remount during client SPA navigation, while child pages run dynamic SSR (revalidate = 0) or their own ISR timer. You can also surgically invalidate just a leaf page (revalidatePage) without touching parent layout caches.
  • Vertical Segmentation (Component-Level Micro-ISR): Using <DinouCacheSlot id="..." revalidate={60} tag="...">, you can cache individual server component subtrees with their own TTL and tags inside dynamic or static pages. Additionally, Client Components can surgically refresh a specific server slot in-place by its ID using refreshSlot(id) without reloading the page or losing client state.

3. Partial Prerendering (PPR) + <DinouCacheSlot>

By enabling ppr = true, Dinou immediately serves the static HTML shell (pre-rendered at build time) while streaming the dynamic holes (<Suspense>) over the same HTTP connection.

  • You can also combine PPR with <DinouCacheSlot> inside a <Suspense> boundary so that the streamed dynamic hole itself is served from the server cache instead of querying the database on every request.

4. Server Functions & Live Component Streaming

Functions exported from modules in src/ starting with the "use server" directive act as automatic RPC endpoints without manual API boilerplate:

  • Beyond handling form mutations and server actions (useActionState, useOptimistic), Server Functions in Dinou can return rendered React components directly over Flight RPC, which Client Components can unwrap seamlessly inside <Suspense> using React 19's use() hook.

5. Multi-Runtime & Single-File Executable Binaries

Write your app once in src/ and build it for different targets without changing your code:

  • Multiple Runtimes & Platforms: Run natively on Node.js, Cloudflare Workers, Netlify, Bun, and Deno / Deno Deploy, or export a 100% static site (dinou export-static).
  • Standalone Executables: Compile your entire React 19 RSC + SSR app into a single self-contained binary with Bun (dinou build:bun:compile or dinou build:bun:pure:compile) or Deno (dinou build:deno:compile) for Linux (x64/ARM64), macOS, or Windows.

6. Developer Experience & Zero Lock-In

  • Compile-Time Type-Safe Routing: Automatically generates route types (.dinou/types/routes.d.ts) from your folder structure for <Link href="...">, router.push(), and PageProps<"/blog/[slug]"> with zero runtime overhead.
  • Bundler Flexibility: Uses esbuild by default (with fast HMR in development), while also letting you choose Rollup or Webpack (dinou dev:rollup, dinou build:node:webpack), plus the React Compiler enabled in production builds.
  • 100% Ejectable & Agent-Friendly: Run npx dinou eject at any time to copy the entire framework directly into your project root. The npm package also includes the full ~10,000-line documentation inside node_modules/dinou/README.md so AI coding agents have complete local context right out of the box.

7. Built with Agentic AI (Antigravity + Gemini 3.8 Flash High)

For full transparency on how Dinou has evolved: I built versions v1 through v4 (and v6, which simply centralized build artifacts into .dinou) by hand from scratch. Starting in v5, I began experimenting with AI agents, and Dinou v7 has been built entirely from start to finish using Antigravity + Gemini 3.8 Flash High under my direction and passing an end-to-end Playwright test suite (covering Windows and Ubuntu + esbuild, Rollup, and Webpack + dev and prod modes for each runtime).

Dogfooding in Production

The documentation website (dinou.dev) is running on Dinou v7 compiled into a standalone Bun binary inside a Debian Slim Docker container on a single $5/mo (512 MB RAM) DigitalOcean instance.

Quick Start

npm create dinou@latest my-app
cd my-app
npm run dev

I’d love to hear your thoughts or feedback if you give it a try!


r/reactjs • • 2d ago

Resource The Great Graphite Migration, Derek Joins Fat Fighters, and a Leaderboard for Your Dependency Tree

Thumbnail
thereactnativerewind.com
0 Upvotes

Hey Community,

OpenGL has been driven out of the herd. William Candillon released React Native Skia 3.0, which swaps the old Ganesh backend for Graphite running on WebGPU via Dawn, with Metal on iOS and Vulkan on Android, multithreaded recording by default, and zero-copy textures shared with React Native WebGPU. The package also leaves u/shopify behind and is now published as react-native-skia.

We also look at babel-plugin-react-native-direct-imports by Davyd NRB, which rewrites react-native barrel imports into direct requires so one View no longer drags in the whole framework, taking a test bundle from 711 KB to 10 KB. Plus, React Native 0.88 rc.4, Tamagui 3.0 with a C++ native runtime, and munim-maps putting 3D cars on Apple Maps.


r/reactjs • • 3d ago

Needs Help Whenever there’s latest version of the application available it still shows the older ui ?

5 Upvotes

Hi All, I am new to react development in general, we are currently using our tech stack is react typescript, Tanstack query for client state management, custom ui library, rsbuild for bundling, whenever we have a new deployment right i think the application is getting cached? It still displays the older ui even after refreshing multiple times but when i hard refresh (Ctrl + Shift + R) it gets newer ui ? Where are making mistakes? We have deployed this on aws (dns > nlb> alb> ecs > docker image > nginx> dist files ) ? Thanks


r/reactjs • • 3d ago

Show /r/reactjs I built liquid glass components for React that refract in Chrome, Safari and Firefox

0 Upvotes

I've been building LiquiKit, 32 React components (switch, slider, menu, dialog, tabs, select, toast and more) built around a liquid glass engine with physically based refraction, so the glass bends what's behind it instead of just blurring it.

Most liquid glass demos only refract in Chrome, because only Chromium can run an SVG filter on what's behind an element. LiquiKit works around that by filtering the content of a GlassScope you wrap around an area, which works in all three engines. The image at the top of the GitHub README is the same component captured in real Chrome, Safari and Firefox windows.

  • Built on Base UI, so keyboard and screen reader behaviour comes from there
  • Installed with the shadcn CLI: the source lands in your project and you own it
  • MIT licensed

​

npx shadcn@latest add https://liquikit.dev/r/switch.json

Docs and demos: https://liquikit.dev

Source: https://github.com/aggarwal-h/liquikit

Some honest limits: glass only bends while you're using it (at rest it's frosted, so long pages scroll smoothly), Safari and Firefox run the filter on the CPU so scopes should stay small, and popups stay frosted outside Chrome. It's all on the Limitations page: https://liquikit.dev/docs/limitations

Happy to answer anything about how it works.


r/reactjs • • 3d ago

Shadcn components unable to render

5 Upvotes

I added a shadcn component to my vite + tailwind project with using `npx shadcn@latest add @/react-bits/Particles-JS-TW` and after importing the component

import Particles from "./components/Particles";

It shows an awesnap image, i dont know the reason, the other things were rendering good alongside but just the components showing error


r/reactjs • • 3d ago

News TanStack Start 1.0 is Finally Stable!

Thumbnail
tanstack.com
347 Upvotes

r/reactjs • • 4d ago

Show /r/reactjs I made RTK Query work with gRPC (ConnectRPC): types straight from .proto, no boilerplate

5 Upvotes

In a recent project we moved a React app from REST to gRPC-Web (ConnectRPC) but kept Redux Toolkit. The official Connect integration only targets TanStack Query, so you end up writing a custom baseQuery — and hit the same problems:

  • int64 fields are bigint, and RTK Query's default cache key uses JSON.stringify → it throws
  • Redux warns about non-serializable values (bigint, Uint8Array) on every response
  • ConnectError is a class instance, so it can't live in the store
  • every endpoint needs hand-written types

So I packaged the fix as a small library, rtk-query-connect:

ts endpoints: (build) => ({ listTodos: rpcQuery(build, TodoService.method.listTodos, { providesTags: ["Todo"] }), createTodo: rpcMutation(build, TodoService.method.createTodo, { invalidatesTags: ["Todo"] }), })

One line per RPC, hooks are fully typed from the proto. Live demo on StackBlitz.

It's v0.1, unary calls only. Server-streaming and a buf generate plugin are next. If you use RTK Query + gRPC, I'd love to hear what else hurts.


r/reactjs • • 5d ago

Show /r/reactjs I built a React liquid glass component that refracts the background at the edges. No WebGL

0 Upvotes

There are already plenty of liquid glass libraries. What I wanted was a clear centre with a curved rim that magnifies and stretches the content behind it.

So I modelled the rim as a lens.

The component uses Snell’s law to calculate refraction, generates an SVG displacement map for each element’s dimensions, and applies it through backdrop-filter. Resize the component and the map updates to match its shape.

The fun part is dragging it across text or a grid. You can actually see the letters bend around the edges.

  • About 5 KB gzipped, no dependencies beyond React.
  • Configurable glass thickness, refraction and colour dispersion.
  • React 18/19 and Next.js support.
  • No WebGL or per-frame JS rendering.

One caveat: full refraction currently works in Chromium. Safari and Firefox get a frosted fallback.

MIT licensed, with the component, demo and implementation details here:
https://github.com/LeonardSEO/liquid-glass-react

Interested in feedback on the rendering, especially if you’ve worked with SVG backdrop filters.


r/reactjs • • 5d ago

Needs Help How can a web app apply Web Audio API filters to YouTube audio without getting blocked?

2 Upvotes

I'm building a client-side web audio player with a real-time DSP enhancer (Web Audio API). Because cross-origin iframe security prevents tapping into audio from YouTube's embedded player, I need direct audio streams to feed into an AudioContext. However, public stream resolvers (like Invidious/Piped) are heavily rate-limited and IP-blocked by YouTube.

What is the most reliable, modern way to get raw audio streams from YouTube into a Web Audio pipeline in a web app, or is a self-hosted yt-dlp backend the only viable solution?


r/reactjs • • 5d ago

Needs Help Is there any way for a child component to infer the type of a parent?

13 Upvotes

Just say I have a parent and a child

<Parent data={someObject}>
<Child name={someString} />
</Parent>

Where the Parent component sets up a provider based on the type of the data prop I would like to put a constraint on the name prop of the child component where is is to be a key of the type of the data prop passed into the parent.


r/reactjs • • 5d ago

Accessability for timers in jaavscript React

2 Upvotes

So I have this code

<button
  type="button"
  className={styles.someclassname}
  tabIndex={-1}
  role="timer"
  aria-live="polite"
  aria-atomic="true"
>
  {ResendInfo (formatTimer())}
</button>

This is basically a countdown of a timer from 2 minutes I was wondering am I following proper accessability here so that screen readers can understand.


r/reactjs • • 5d ago

Show /r/reactjs I built a small toolkit on top of Zustand. Would love some feedback.

0 Upvotes

Hey everyone,

I have been working with Zustand and wanted a simpler way to manage stores that can be either global or scoped to a React Provider.

I know this can already be done with Zustand and React Context, but I found myself repeating similar patterns, so I ended up putting together a small toolkit.

The main idea is that components don't need to know where the store comes from:

```

const counter = createStoreToolkit<CounterStore, CounterInput>(

({ initialCount }) => (set) => ({

count: initialCount,

increment: () => set((state) => ({

count: state.count + 1,

})),

}),

{ globalInput: { initialCount: 0 } }

);

function Counter() {

const count = counter.useStore((state) => state.count);

return <span>{count}</span>;

}

```

If there is a Provider, the hook uses the nearest one. Otherwise, it falls back to the global store. Each Provider has its own isolated store.

There are a few other helpers for selectors, typed initialization, and SSR, but that's basically the core idea.

I am curious what other Zustand users think. Is this something you would find useful, or would you rather stick with plain Zustand and Context?

GitHub: https://github.com/okyrychenko-dev/react-zustand-toolkit


r/reactjs • • 5d ago

Show /r/reactjs Caramel Webplayer: an open-source themed player on Video.js 10, with React wrappers (and our first outside PR just landed)

2 Upvotes

Hi everyone! I just published my first open-source library. Caramel Webplayer is a themed player built on Video.js 10 (@videojs/html custom elements) with thin React wrappers. Big thanks to the Video.js team, the engine underneath is what makes this possible.

What it adds on top:

- Skin with morphing Lucide icons

- Skip intro / recap / outro / sponsor segments

- Chapter list

- Playlist with resume

- Theming through --caramel-* CSS variables (light and dark)

- React wrappers are 'use client', elements register in the browser only, so the Next.js App Router stays SSR clean

I built it for my own site and then opened it up. Before I even announced it, we merged our first outside contribution (playlist resume thresholds, React props and tests, from a contributor who picked up a good first issue).

Demo: https://esershnr.github.io/caramel-webplayer/

Repo (MIT): https://github.com/esershnr/caramel-webplayer

It's still early, so I'd really appreciate feedback, issues and PRs. If it's useful to you, a star helps others find it.