Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More โ†’
Socket
Sign inDemoInstall
Socket

rest-hooks

Package Overview
Dependencies
Maintainers
2
Versions
328
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rest-hooks

Asynchronous data framework for React

  • 7.0.17
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
957
decreased by-33.26%
Maintainers
2
Weekly downloads
ย 
Created
Source

๐Ÿ›Œ๐ŸŽฃ Rest hooks

CircleCI Coverage Status npm downloads bundle size npm version PRs Welcome

Define your async methods. Use them synchronously in React. Instantly mutate the data and automatically update all usages.

For REST, GraphQL, Websockets+SSE and more

Installation

It's now recommended for new projects to use @rest-hooks/react directly.

npm install --save @rest-hooks/react @rest-hooks/test @rest-hooks/hooks @rest-hooks/rest

Simple TypeScript definition

class Article extends Entity {
  readonly id: string = '';
  readonly title: string = '';
  readonly body: string = '';

  pk() {
    return this.id;
  }
}

Create collection of API Endpoints

const ArticleResource = createResource({
  path: '/articles/:id',
  schema: Article,
})

One line data binding

const article = useSuspense(ArticleResource.get, { id });
return (
  <>
    <h2>{article.title}</h2>
    <p>{article.body}</p>
  </>
);

Mutation

const ctrl = useController();
return (
  <ArticleForm
    onSubmit={data => ctrl.fetch(ArticleResource.update, { id }, data)}
  />
);

And subscriptions

const price = useLive(PriceResource.get, { symbol });
return price.value;

Programmatic queries

const sortedArticles = new Query(
  new schema.All(Article),
  (entries, { asc } = { asc: false }) => {
    const sorted = [...entries].sort((a, b) => a.title.localeCompare(b.title));
    if (asc) return sorted;
    return sorted.reverse();
  }
);

const articlesUnsorted = useCache(sortedArticles);
const articlesAscending = useCache(sortedArticles, { asc: true });
const articlesDescending = useCache(sortedArticles, { asc: false });

...all typed ...fast ...and consistent

For the small price of 8kb gziped. ย ย  ๐ŸGet started now | ๐ŸฅŠComparison

Features

Principals of Rest Hooks

TS Integrity

  • Strong inferred types
  • Global referential equality guarantees
  • Normalized store creates a single source of truth
  • Strong invariants robust against race conditions
  • Validation

Performance

  • Stale While Revalidate configurable cache
  • Only re-render

Composition over configuration

  • Declarative data definitions
  • Decoupled API definitions from usage
  • Co-located data dependencies
    • Centralized orchestration
  • Extensible orchestration through Managers (middleware)
  • Composable hooks
    • subject pattern
  • Suspense + concurrent mode async orchestration

Incremental Adoption

  • Simple case is simple
  • Scale as your app scales

Keywords

FAQs

Package last updated on 21 Mar 2023

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with โšก๏ธ by Socket Inc