{"id":18441236,"url":"https://github.com/jamesknelson/retil","last_synced_at":"2025-04-07T22:32:15.212Z","repository":{"id":66191879,"uuid":"228268843","full_name":"jamesknelson/retil","owner":"jamesknelson","description":"The React Utility Library","archived":false,"fork":false,"pushed_at":"2022-05-17T06:23:48.000Z","size":2894,"stargazers_count":46,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-23T01:35:50.110Z","etag":null,"topics":["concurrent","react","router","suspense"],"latest_commit_sha":null,"homepage":"https://retil-site.onrender.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamesknelson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-15T23:42:05.000Z","updated_at":"2024-02-23T17:20:16.000Z","dependencies_parsed_at":"2023-02-25T06:45:55.045Z","dependency_job_id":null,"html_url":"https://github.com/jamesknelson/retil","commit_stats":null,"previous_names":[],"tags_count":126,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesknelson%2Fretil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesknelson%2Fretil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesknelson%2Fretil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesknelson%2Fretil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamesknelson","download_url":"https://codeload.github.com/jamesknelson/retil/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247741307,"owners_count":20988370,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concurrent","react","router","suspense"],"created_at":"2024-11-06T06:35:50.828Z","updated_at":"2025-04-07T22:32:15.203Z","avatar_url":"https://github.com/jamesknelson.png","language":"TypeScript","readme":"retil\n=====\n\n**Superpowers for React Developers.**\n\nRetil takes care of your app's foundation -- including authentication, routing, validation, async operations, and external state management -- so that you can focus on the bits that matter. It works great with both CRA *and* Next.js. It's built for React concurrent mode. It supports spiffy animated route transitions.\n\nAnd you can start using it by importing a single hook.\n\nCurious piqued?\n\n[Try the `/examples` \u0026ndash; they're as easy as `yarn start`](./examples)\n\n\n## Introducing Retil\n\nRetil is a collection of React Utilities that are designed to work together and complement each other, with packages for:\n\n- [Validation and async communication](#validation-and-async-communication)\n- [Authentication](#authentication)\n- [Routing](#routing)\n- [External state management](#external-state-management)\n\n\n### Validation and async communication\n\nHelps you validate forms, display busy indicators, and keep track of any issues that need to be shown to the user.\n\n#### npm packages\n\n- [retil-operation](./packages/retil-operation)\n- [retil-issues](./packages/retil-issues)\n\n#### examples\n\n- *TODO*\n\n\n### Authentication\n\nEasily integrate Firebase Auth into your retil-based app.\n\nProvides a common interface for functions like `signOut()` and `signInWithPassword()`, allowing for easy use with other retil utilities.\n\n#### npm packages\n\n- retil-auth-firebase -- *coming soon*\n\n#### examples\n\n- *TODO*\n\n\n### Routing\n\nGives you a `useRouter()` hook which makes animated route transitions easy. Works with concurrent mode, SSR, Next.js, CRA, lazily loaded components, suspense-loaded data, or anything else you might think to throw at it.\n\nProvides helpers for `\u003cLink\u003e`s, redirects, 404 messages, and prefetching content for improved page load speeds. Integrates with any auth system for auth-dependent routing and redirects.\n\n#### npm packages\n\n- [retil-router](./packages/retil-router)\n- [nextil](./packages/nextil) -- *for using retil-router with Next.js*\n\n#### api docs\n\n- [components](/docs/router-api.md#components)\n- [hooks](/docs/router-api.md#hooks)\n- [router function helpers](/docs/router-api.md#router-function-helpers)\n- [functions](/docs/router-api.md#functions)\n- [types](/docs/router-api.md#types)\n\n\n#### examples\n\n- [minimal](./examples/router-minimal)\n- [not found boundaries](./examples/router-not-found-boundary)\n- [suspense and loading indicators](./examples/router-suspense-loading-indicators)\n\n\n### External state management\n\nHelps you create, combine, transform and subscribe to suspendable state sources. Used internally by Retil's auth, history and routing packages.\n\nUseful in situations where you need to work with one or more **external** data sources before they land in your React tree. For state originating from your UI components, you'll want to stick with React itself.\n\n#### npm packages\n\n- [retil-source](./packages/retil-source)\n\n#### api docs\n\n- *TODO*\n\n#### examples\n\n- *TODO*\n\n\n\n## The Dream\n\nI want *you* to be able to start *and launch* a web app with authentication, routing and payments **in a single weekend**. Retil is the foundation for that app. It's designed to get you started with the minimum effort possible -- both in terms of writing code, *and* learning APIs -- so that you can focus your energy on building something amazing.\n\nRetil is one half of the project, with [Frontend Armory](https://frontarm.com) being the other. Click the link and check it out!\n\n\n## License\n\nCopyright \u0026copy; 2020 - 2021 James K. Nelson.\n\nContents of the `/packages` directory are licensed under the MIT License – see individual license files in directories.\n\nDocumentation, examples and website contents are licensed under a [Creative Commons Attribution-NonCommercial 4.0 International License.](https://creativecommons.org/licenses/by-nc/4.0/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesknelson%2Fretil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamesknelson%2Fretil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesknelson%2Fretil/lists"}