in

Asynchronous dynamic data at scale for React


Asynchronous dynamic data at scale. Performance, data integrity, and typing for REST, proto, GraphQL, websockets and more.

Simple TypeScript definition

class ArticleResource extends Resource {
  readonly id: string = '';
  readonly title: string = '';
  readonly body: string = '';

  pk() {
    return this.id;
  }
  static urlRoot="/articles/";
}

One line data hookup

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

Mutation

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

And subscriptions

const price = useResource(PriceResource.detail(), { symbol });
useSubscription(PriceResource.detail(), { symbol });
return price.value;

…all typed …fast …and consistent

For the small price of 8kb gziped.    🏁Get started now

Features

Principals of Rest Hooks

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
  • Suspense + concurrent mode async orchestration

Incremental Adoption

  • Simple case is simple
  • Scale as your app scales


Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

GIPHY App Key not set. Please check settings

Writing an Engaging, SEO-Friendly Technical Content: Tips from Fellow Creators

Digital Signature Spoofing Flaws Uncovered in OpenOffice and LibreOffice