
Research
Namastex.ai npm Packages Hit with TeamPCP-Style CanisterWorm Malware
Malicious Namastex.ai npm packages appear to replicate TeamPCP-style Canister Worm tradecraft, including exfiltration and self-propagation.
react-query-fusion
Advanced tools
A universal data fetching & caching layer combining React Query + Axios + API metadata.
A universal data fetching & caching layer combining React Query + Axios + API metadata.
Data fetching is still boilerplate-heavy. This package aims to simplify and unify data fetching in React apps.
| Feature | react-query-fusion | React Query (TanStack) | SWR | Apollo Client | RTK Query |
|---|---|---|---|---|---|
| Setup Complexity | ✅ Zero config | ❌ Manual setup | ❌ Manual setup | ❌ Complex setup | ❌ Complex setup |
| Multi-Source Support | ✅ REST, GraphQL, tRPC | ❌ Manual implementation | ❌ Manual implementation | ❌ GraphQL only | ❌ REST only |
| Built-in UI Helpers | ✅ Loading, Error, Success skeletons | ❌ Manual implementation | ❌ Manual implementation | ❌ Manual implementation | ❌ Manual implementation |
| Advanced Skeletons | ✅ Customizable shimmer, cards | ❌ None | ❌ None | ❌ None | ❌ None |
| Mutation Support | ✅ Unified API | ✅ Manual setup | ✅ Manual setup | ✅ GraphQL only | ✅ REST only |
| Bundle Size | ✅ Lightweight | ✅ Lightweight | ✅ Lightweight | ❌ Heavy | ❌ Heavy |
| Learning Curve | ✅ Minimal | ❌ Steep | ❌ Moderate | ❌ Steep | ❌ Steep |
| TypeScript Support | ✅ First-class | ✅ First-class | ✅ Good | ✅ Good | ✅ Good |
| Caching Strategy | ✅ Intelligent | ✅ Intelligent | ✅ Good | ✅ Good | ✅ Good |
| Error Handling | ✅ Built-in UI | ❌ Manual | ❌ Manual | ❌ Manual | ❌ Manual |
🚀 Zero Configuration
FusionProvider sets up everything automatically🔄 Universal Data Sources
🎨 Built-in UI Components
⚡ Developer Experience
📦 Lightweight & Efficient
npm install react-query-fusion
import { FusionProvider, useFusionQuery } from 'react-query-fusion';
function App() {
return (
<FusionProvider>
<Todos />
</FusionProvider>
);
}
function Todos() {
const { data, isLoading, error } = useFusionQuery({
key: ['todos'],
source: 'rest',
url: 'https://jsonplaceholder.typicode.com/todos',
});
if (isLoading) return <div>Loading...</div>;
if (error) return <div>Error: {error.message}</div>;
return (
<ul>
{data?.map(todo => <li key={todo.id}>{todo.title}</li>)}
</ul>
);
}
import { useFusionQuery } from 'react-query-fusion';
const { data, isLoading, error, refetch } = useFusionQuery({
key: ['todos'],
source: 'rest',
url: '/api/todos',
method: 'GET',
});
import { useFusionMutation } from 'react-query-fusion';
const { mutate, isLoading, error, isSuccess } = useFusionMutation({
source: 'rest',
url: '/api/todos',
method: 'POST',
});
// Usage:
// mutate({ title: 'New Todo' })
import { useFusionQueryUI, FusionProvider } from 'react-query-fusion';
const CustomSkeleton = () => <div className="shimmer-skeleton" />;
const Todos = () => {
const { data, Loading, ErrorFallback } = useFusionQueryUI({
key: ['todos'],
source: 'rest',
url: '/api/todos',
skeletonComponent: <CustomSkeleton />,
});
if (!data) return <Loading />;
return <ul>{data.map(todo => <li key={todo.id}>{todo.title}</li>)}</ul>;
};
// Wrap your app
function App() {
return (
<FusionProvider>
<Todos />
</FusionProvider>
);
}
The main provider that sets up everything automatically:
queryClient: Optional custom QueryClientloadingComponent: Global loading componenterrorComponent: Global error componentsuccessComponent: Global success component (for mutations)key: React Query key (array or string)source: 'rest' | 'graphql' | 'trpc'url: Endpoint (for REST/GraphQL)method: HTTP method (for REST)query: GraphQL query (for GraphQL)trpcClient: tRPC client instance (for tRPC)trpcPath: tRPC path (for tRPC)variables: Variables for GraphQL/tRPCparams: Query params for RESTdata: POST body for RESTmeta: API metadata (optional)options: React Query options (optional)source: 'rest' | 'graphql' | 'trpc'url: Endpoint (for REST/GraphQL)method: HTTP method (for REST, default 'POST')mutation: GraphQL mutation (for GraphQL)trpcClient: tRPC client instance (for tRPC)trpcPath: tRPC path (for tRPC)variables: Variables for GraphQL/tRPCparams: Query params for RESTdata: POST body for RESTmeta: API metadata (optional)options: React Query mutation options (optional)useFusionQueryUI and useFusionMutationUI provide Loading, ErrorFallback, and (for mutations) SuccessFallback components, customizable via props or provider.MIT
FAQs
A universal data fetching & caching layer combining React Query + Axios + API metadata.
We found that react-query-fusion demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Malicious Namastex.ai npm packages appear to replicate TeamPCP-style Canister Worm tradecraft, including exfiltration and self-propagation.

Product
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.