Request Deduplication
Request Deduplication in Solvix prevents multiple identical requests from being sent to the server simultaneously.
Instead of executing duplicate requests, Solvix ensures that only one network call is made and all callers receive the same response.
Why Deduplication?
In real-world applications:
- Multiple components may request the same data
- Rapid user actions can trigger duplicate calls
- Duplicate requests waste bandwidth and resources
Deduplication improves performance and efficiency.
Basic usage
await client.get("/users", {
dedupeKey: "get-users",
});
How it works
- Request is initiated with a
dedupeKey - Solvix checks if a request with the same key is already in-flight
- If yes → attaches to existing request
- If no → executes new request
Example
client.get("/users", { dedupeKey: "users" });
client.get("/users", { dedupeKey: "users" });
client.get("/users", { dedupeKey: "users" });
Only one network request is executed.
All callers receive the same response.
Without deduplication
client.get("/users");
client.get("/users");
client.get("/users");
This results in multiple network calls.
Use cases
Prevent duplicate API calls
dedupeKey: "user-profile";
UI optimization
Useful in:
- React components
- Infinite scrolling
- Data fetching hooks
Deduplication scope
- Works only for in-flight requests
- Once request completes → new calls execute normally
Error behavior
If the request fails:
- All attached callers receive the same error
Best practices
- Use consistent keys
- Avoid overusing dedupe
- Use for idempotent requests (GET)
- Do not use for mutations unless safe
Summary
Request deduplication improves performance by eliminating redundant network calls.