Contact
Icon for product Declare

Declare

An application framework enabling app developers to manage data on front-end and back-end with less code, automatically managing asynchronous tasks like data fetching.

OSS framework
react
typescript
full stack
View on Github

Features

Icon for data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MyIgaGVpZ2h0PSI1NiIgdmlld0JveD0iMCAwIDYzIDU2Ij4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSIjQzQ3NkM1IiBzdHJva2Utd2lkdGg9IjEuNiIgZD0iTTYxLjAxIDIwLjAyNWEyLjkxNiAyLjkxNiAwIDAgMSAwIDQuMzc5TDQwLjA0IDQyLjcyNWMtMS44MzIgMS42MDItNC43MjcuMzA2LTQuNzI3LTIuMTlWMjkuOTRjLTE4LjQ3Ny4yNjktMjYuNDQyIDQuOTEtMjEuMDQgMjIuMzg4LjYgMS45NC0xLjcxOCAzLjQ0My0zLjM0NSAyLjI0NkM1LjcxNiA1MC43MzcgMSA0My40IDEgMzUuOTk1YzAtMTguMzUgMTUuMTc1LTIyLjIzIDM0LjMxMy0yMi40NTF2LTkuNjVjMC0yLjQ5IDIuODkyLTMuNzkyIDQuNzI4LTIuMTg5bDIwLjk3IDE4LjMyeiIvPgo8L3N2Zz4K
Simplified state management
Icon for data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MiIgaGVpZ2h0PSI2NSIgdmlld0JveD0iMCAwIDgyIDY1Ij4KICAgIDxwYXRoIGZpbGw9IiNGNDg0NjAiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTY2LjMxNCA0Ni45MzdjMCAuNzEyLjU3MyAxLjI4OSAxLjI4MSAxLjI4OXMxLjI4MS0uNTc3IDEuMjgxLTEuMjg5YzAtLjcxMS0uNTczLTEuMjg4LTEuMjgtMS4yODgtLjcwOSAwLTEuMjgyLjU3Ny0xLjI4MiAxLjI4OHptNS4xNzEtMTUuNjZhNS41ODcgNS41ODcgMCAwIDAtMy45ODEtMS42NTdjLTMuMTAzIDAtNS42MyAyLjU0LTUuNjMgNS42NTkgMCAuNjI2LjUxMyAxLjE0IDEuMTM1IDEuMTQuNjIzIDAgMS4xMzUtLjUxNCAxLjEzNS0xLjE0IDAtMS44NjggMS41MS0zLjM4NiAzLjM2OS0zLjM4Ni44OTcgMCAxLjczOS4zNSAyLjM4Ljk5My42MzEuNjM1Ljk4OCAxLjQ5MS45ODggMi4zOTNhMy4zMyAzLjMzIDAgMCAxLS43NSAyLjEyNSAzLjMzNSAzLjMzNSAwIDAgMS0xLjg3NyAxLjE2OSAyLjM5IDIuMzkgMCAwIDAtMS44NjcgMi4zNDZ2MS44NWMwIC42MjYuNTEyIDEuMTQxIDEuMTM1IDEuMTQxLjYyMiAwIDEuMTM1LS41MTUgMS4xMzUtMS4xNDF2LTEuODVjMC0uMDU1LjAzNi0uMTEuMS0uMTJhNS42NjQgNS42NjQgMCAwIDAgMy4xNC0xLjk2IDUuNzIgNS43MiAwIDAgMCAxLjI1NC0zLjU2IDUuNjY0IDUuNjY0IDAgMCAwLTEuNjY2LTQuMDAzek0zLjQ4OCA0My41MTNjLjMwMi0uNjI1LjgyNC0uOCAxLjQ3NC0uNzU0LjMyLjAxOC42NSAwIDEuMDUyIDB2LTEuMzUzYzAtLjcwOC4zNTctMS4wOTUuOTk4LTEuMDk1LjY5NSAwIDEuMDUyLjM3NyAxLjA1MiAxLjA5NXYxLjMwN2MuNTc3LjA0NiAxLjExNy4wNDYgMS42MzkuMTM4LjU5NS4xMDEuOTQzLjU4OS44ODggMS4wNzYtLjA3NC41OTgtLjQ4NS45NjctMS4xMjYuOTk0LS4yMjkuMDEtLjQ2NyAwLS42OTYgMGgtLjcwNWMwIC41MTUuMDEuOTk0IDAgMS40NzItLjAwOS40MTQtLjE1NS43ODMtLjU2Ny45Mi0uMzc1LjEyLS45ODkuMTU3LTEuMjQ1LS4yM2ExLjQxNCAxLjQxNCAwIDAgMS0uMjM4LS42MjVjLS4wMzYtLjQ3OS0uMDE4LS45NjYtLjAyNy0xLjQ1NCAwLS4wMS0uMDE5LS4wMjgtLjA2NC0uMDgzLS4yOTMgMC0uNjMyLS4wMTgtLjk3IDAtLjY1LjA0Ni0xLjE3Mi0uMTI5LTEuNDc0LS43NTQuMDA5LS4yMjEuMDA5LS40MzMuMDA5LS42NTR6TTMuNjQ0IDBjLjc2LjI4NS45NDIuNjkuOTMzIDEuNDcyVjIuNTRjLjUwNCAwIC45NjEtLjAxIDEuNDI4IDAgLjQ1OC4wMDkuODE1LjI0OC45NTIuNjcxLjEyOC4zNzguMTU2LjgyLS4yMDEgMS4xMTRhMS4yMyAxLjIzIDAgMCAxLS42NS4yNjdjLS40OTUuMDM2LS45ODkuMDA5LTEuNTIuMDA5IDAgLjQ5Ny4wMTkuOTQ4LS4wMDkgMS4zOS0uMDQ2Ljc4MS0uNTEyIDEuMjA1LTEuMDg5IDEuMTU5LS42MzItLjA0Ni0xLjAzNC0uNDQyLTEuMDUzLTEuMTUtLjAwOS0uNDUxIDAtLjkwMiAwLTEuNEgxLjA1M0MuMzc2IDQuNi4wMiA0LjI5OC4wMDEgMy43MThjLS4wMTktLjc1NC4zMy0xLjE1IDEuMDI1LTEuMTc3LjIyOS0uMDEuNDY3IDAgLjY5NSAwaC43MDVWMS41YzAtLjkzOS4xNDctMS4xNjkuOTM0LTEuNDlDMy40NSAwIDMuNTUyIDAgMy42NDQgMHptNjIuMTg1IDYxLjgwN2guOTZjLjQ4Ni4wMS43MTUuMjIuNzI0LjY5LjAwOS40Ny0uMjM4Ljc4Mi0uNjc4LjgxLS4zMS4wMTgtLjYyMiAwLTEuMDA2IDB2Ljg4M2MtLjAxLjUxNi0uMjY2LjgxLS43MzMuODEtLjQ5NCAwLS43Ni0uMjc2LS43NjktLjgxOXYtLjg3NGgtLjgyM2MtLjU3NyAwLS44Ni0uMjY3LS44NTItLjc4Mi4wMS0uNTUyLjIwMi0uNzI3LjgyNC0uNzI3aC44NnYtLjk3NmMuMDEtLjQ2OS4yNzUtLjc2My43MTUtLjguMzU3LS4wMjguNzQuMzQuNzc4Ljc1NC4wMTguMTc1IDAgLjM0IDAgLjUxNnYuNTE1em0yLjIwNS01NC44NDFjMCAuMzc3LjAxLjY5IDAgLjk5My0uMDE4LjQzMy0uMzIuNy0uNzUuN3MtLjcxNC0uMjY3LS43NDItLjcwOWMtLjAwOS0uMTU2IDAtLjMxMyAwLS40N3YtLjUxNGMtLjMyIDAtLjYxMy4wMDktLjkwNiAwLS41MDMtLjAxLS43NzgtLjI4Ni0uNzc4LS43NjQgMC0uNTUyLjE5My0uNzM2Ljc2LS43MzZoLjkxNWMwLS4zNS0uMDA5LS42NjMgMC0uOTc2LjAxOS0uNDIzLjM4NS0uODI4LjcyMy0uODEuNDEyLjAxOS43NS4zNzguNzcuODIuMDA4LjI5NCAwIC41OTggMCAuOTY2aC45N2MuNDU3LjAwOS42OTUuMjMuNzEzLjY1My4wMTkuNDc5LS4yMi44LS42NS44NDctLjE3My4wMTgtLjMzOCAwLS41MTIgMGgtLjUxM3pNNTYuMTcyIDI0LjkyN0gzNC44NjRhMS42ODQgMS42ODQgMCAwIDEtMS42ODQtMS42OTNjMC0uOTM5Ljc1LTEuNjkzIDEuNjg0LTEuNjkzaDIxLjMxN2MuOTM0IDAgMS42ODQuNzU0IDEuNjg0IDEuNjkzYTEuNjk4IDEuNjk4IDAgMCAxLTEuNjkzIDEuNjkzem0tMTEuMzU5IDkuNjE2aC05Ljk0OWExLjY4NCAxLjY4NCAwIDAgMS0xLjY4NC0xLjY5M2MwLS45MzkuNzUtMS42OTMgMS42ODQtMS42OTNoOS45NWMuOTMzIDAgMS42ODQuNzU0IDEuNjg0IDEuNjkzIDAgLjkzOC0uNzUxIDEuNjkzLTEuNjg1IDEuNjkzek04MS4zOSA0My4wOUExNC42MjIgMTQuNjIyIDAgMCAwIDc2LjUgMjcuNDg1di05LjgyN2MwLTIuOTE3LTIuMzYyLTUuMjkxLTUuMjYzLTUuMjkxSDMxLjI4NWMtMi45MDEgMC01LjI2MyAyLjM3NC01LjI2MyA1LjI5VjM4Ljk3YzAgMi45MTcgMi4zNjIgNS4yOSA1LjI2MyA1LjI5SDU0LjAzYzEuNTc1IDQuMDEzIDQuODk3IDcuMjggOS4zMjcgOC42MTMgMy4xMy45MzkgNi4zMjUuNzczIDkuMTcxLS4yODUuMDI4LjE4NC4wODMuMzY4LjE3NC41NDNsNS4wMDcgOS4zMjFhMS41NzggMS41NzggMCAwIDAgMi4xNDIuNjQ0IDEuNTk1IDEuNTk1IDAgMCAwIC42NC0yLjE1M2wtNC45OTctOS4zM2ExLjc5NCAxLjc5NCAwIDAgMC0uMjY1LS4zNjggMTQuNDc1IDE0LjQ3NSAwIDAgMCA2LjE2LTguMTUzem0tMjcuNzYxLTguMzU1YTE0LjY1NiAxNC42NTYgMCAwIDAtLjQ4NSA2LjEzN0gzMS4yODVhMS45MDQgMS45MDQgMCAwIDEtMS44OTQtMS45MDRWMTcuNjU4YzAtMS4wNS44NTEtMS45MDUgMS44OTQtMS45MDVoMzkuOTYyYzEuMDQ0IDAgMS44OTUuODU2IDEuODk1IDEuOTA1djcuODNjLS40NzYtLjIwMi0uOTctLjM3Ny0xLjQ3NC0uNTMzLTcuNjctMi4zLTE1Ljc0MyAyLjA4LTE4LjA0IDkuNzgxem0xOS4yNTcgMTQuMjA3YTExLjI1IDExLjI1IDAgMCAxLTguNjIyLjg4NCAxMS4zNzcgMTEuMzc3IDAgMCAxLTMuOTcyLTIuMTI2IDExLjQzMyAxMS40MzMgMCAwIDEtMi43NTUtMy4zNzdjLS4wMS0uMDE4LS4wMTgtLjA0Ni0uMDM3LS4wNjRhMTEuMTQ3IDExLjE0NyAwIDAgMS0xLjE1My0zLjM4NyAxMS4zNjMgMTEuMzYzIDAgMCAxIC4zMTEtNS4yMTcgMTEuNDc3IDExLjQ3NyAwIDAgMSAyLjExNS0zLjk5MyAxMS4zOTggMTEuMzk4IDAgMCAxIDMuMzU5LTIuNzcgMTEuMjUgMTEuMjUgMCAwIDEgOC42MjItLjg4MyAxMS4xOTQgMTEuMTk0IDAgMCAxIDUuNzM5IDMuOTg0Yy4zNjYuNDc4LjY4Ni45ODQuOTggMS41MThhMTEuMzk2IDExLjM5NiAwIDAgMSAxLjI5IDQuMTY4Yy4xNjQgMS41MS4wMjcgMy4wMjgtLjQxMiA0LjVhMTEuNDc3IDExLjQ3NyAwIDAgMS0yLjExNSAzLjk5NCAxMS4yNDYgMTEuMjQ2IDAgMCAxLTMuMzUgMi43N3ptLTIyLjMyNCA1Ljc3SDIyLjA5NmExLjY4NCAxLjY4NCAwIDAgMS0xLjY4NC0xLjY5M2MwLS45MzkuNzUtMS42OTQgMS42ODQtMS42OTRINTAuNTZjLjkzNCAwIDEuNjg1Ljc1NSAxLjY4NSAxLjY5NCAwIC45MzgtLjc1IDEuNjkzLTEuNjg1IDEuNjkzem0yLjY0NiA5LjY4aC00MS4yN1YxMC4zMTVjMC00LjY5MyAzLjc5OC04LjUxMSA4LjQ2Ni04LjUxMWg0MS4yN3Y3LjgzSDU3LjkzVjUuNTU4SDIwLjQwM2MtMi42MDkgMC00LjcyMyAyLjEzNS00LjcyMyA0Ljc0OHY1MC4zMjNoMzcuNTI3YzIuNjA4IDAgNC43MjMtMi4xMzUgNC43MjMtNC43NDh2LTEuNDQ0aDMuNzQzdjEuNDQ0YzAgNC42OTMtMy43OTggOC41MTItOC40NjYgOC41MTJ6Ii8+Cjwvc3ZnPgo=
First class support for TypeScript
Icon for data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NiIgdmlld0JveD0iMCAwIDY0IDY2Ij4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSIjNkZEMDhEIiBzdHJva2Utd2lkdGg9IjEuNiIgZD0iTTYyLjIwOCA0MC42OWwtNS41NjItMy4xNzRhMjQuNTY2IDI0LjU2NiAwIDAgMCAwLTkuMDU4bDUuNTYyLTMuMTc0Yy42NC0uMzYxLjkyNy0xLjExLjcxOC0xLjgwN2EzMi4wNSAzMi4wNSAwIDAgMC03LjE0Mi0xMi4yMDYgMS41ODUgMS41ODUgMCAwIDAtMS45MzMtLjI5N2wtNS41NjIgMy4xNzRhMjQuNzEzIDI0LjcxMyAwIDAgMC03Ljk0LTQuNTI4VjMuMjg0YTEuNTUgMS41NSAwIDAgMC0xLjIyNy0xLjUxIDMzLjIxIDMzLjIxIDAgMCAwLTE0LjI1OCAwIDEuNTUgMS41NSAwIDAgMC0xLjIyOCAxLjUxdjYuMzQ4YTI1LjQ5NyAyNS40OTcgMCAwIDAtNy45MzkgNC41M2wtNS41NS0zLjE3NWExLjU2NSAxLjU2NSAwIDAgMC0xLjkzMi4yOTdBMzEuODU2IDMxLjg1NiAwIDAgMCAxLjA3MyAyMy40OWExLjUzNiAxLjUzNiAwIDAgMCAuNzE4IDEuODA3bDUuNTYyIDMuMTc0YTI0LjU2NyAyNC41NjcgMCAwIDAgMCA5LjA1OGwtNS41NjIgMy4xNzRhMS41NTEgMS41NTEgMCAwIDAtLjcxOCAxLjgwNyAzMi4wNDkgMzIuMDQ5IDAgMCAwIDcuMTQyIDEyLjIwNiAxLjU4NSAxLjU4NSAwIDAgMCAxLjkzMy4yOTdsNS41NjItMy4xNzRhMjQuNzE1IDI0LjcxNSAwIDAgMCA3Ljk0IDQuNTI5djYuMzQ4YzAgLjcyMy41MDggMS4zNTUgMS4yMjcgMS41MWEzMy4yMDcgMzMuMjA3IDAgMCAwIDE0LjI1OCAwIDEuNTUgMS41NSAwIDAgMCAxLjIyOC0xLjUxdi02LjM0OGEyNS40OTUgMjUuNDk1IDAgMCAwIDcuOTM5LTQuNTNsNS41NjIgMy4xNzVjLjY0LjM2MSAxLjQzNy4yNDUgMS45MzMtLjI5N2EzMS44NTYgMzEuODU2IDAgMCAwIDcuMTQyLTEyLjIwNmMuMTk2LS43MS0uMDkxLTEuNDU4LS43My0xLjgyek0zMS41IDQzQzI1LjcxMiA0MyAyMSAzOC4yODggMjEgMzIuNVMyNS43MTIgMjIgMzEuNSAyMiA0MiAyNi43MTIgNDIgMzIuNSAzNy4yODggNDMgMzEuNSA0M3oiLz4KPC9zdmc+Cg==
Absolutely minmal boilerplate
Icon for data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NyIgaGVpZ2h0PSI2MSIgdmlld0JveD0iMCAwIDY3IDYxIj4KICAgIDxnIGZpbGw9IiNGNDhENkIiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgPHBhdGggZD0iTTYzLjg2IDh2Mi4yMzZhMi4wNzMgMi4wNzMgMCAwIDEgMS4wNDYgMS43OTR2NDAuNjM1YzAgMS4xNS0uOTM3IDIuMDg0LTIuMDk0IDIuMDg0SDQuMTg4YTIuMDg5IDIuMDg5IDAgMCAxLTIuMDk0LTIuMDg0VjEyLjAzYy4wMDEtLjc0MS40LTEuNDI1IDEuMDQ3LTEuNzk0VjhBNC4xNzUgNC4xNzUgMCAwIDAgMCAxMi4wM3Y0MC42MzVjLjAwMyAyLjMgMS44NzYgNC4xNjUgNC4xODggNC4xNjdoMjAuNDE0djIuMDg0aC01LjIzNWMtLjU3OCAwLTEuMDQ3LjQ2Ny0xLjA0NyAxLjA0MiAwIC41NzYuNDY5IDEuMDQyIDEuMDQ3IDEuMDQyaDI4LjI2NmMuNTc4IDAgMS4wNDctLjQ2NiAxLjA0Ny0xLjA0MiAwLS41NzUtLjQ2OS0xLjA0Mi0xLjA0Ny0xLjA0MmgtNS4yMzV2LTIuMDg0aDIwLjQxNGMyLjMxMi0uMDAyIDQuMTg1LTEuODY3IDQuMTg4LTQuMTY3VjEyLjAzQTQuMTc1IDQuMTc1IDAgMCAwIDYzLjg2IDh6TTQwLjMwNCA1OC45MTZoLTEzLjYxdi0yLjA4NGgxMy42MXYyLjA4NHoiLz4KICAgICAgICA8cGF0aCBkPSJNNjAuOTQ0IDUyYy41ODMgMCAxLjA1Ni0uNDc1IDEuMDU2LTEuMDYxVjMuMTg0QTMuMTYgMy4xNiAwIDAgMCA1OC44NzMgMEg4LjEyN0EzLjE2IDMuMTYgMCAwIDAgNSAzLjE4NHY0Ny43NTVDNSA1MS41MjUgNS40NzMgNTIgNi4wNTYgNTJoNTQuODg4ek03LjExMSAzLjE4NGExLjA0IDEuMDQgMCAwIDEgMS4wMTYtMS4wNjJoNTAuNzQ2YTEuMDQgMS4wNCAwIDAgMSAxLjAxNiAxLjA2MlY4LjQ5SDcuMTExVjMuMTg0em0wIDcuNDI4SDU5Ljg5djM5LjI2Nkg3LjExVjEwLjYxMnoiLz4KICAgICAgICA8cGF0aCBkPSJNNTYgNGgtMmExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMnpNNTAgNGgtMmExIDEgMCAwIDAgMCAyaDJhMSAxIDAgMCAwIDAtMnpNMzAgMzZoLTRjLTEuMTA1IDAtMiAuOTM4LTIgMi4wOTV2Ni44MWMwIDEuMTU3Ljg5NSAyLjA5NSAyIDIuMDk1aDRjMS4xMDUgMCAyLS45MzggMi0yLjA5NXYtNi44MUMzMiAzNi45MzggMzEuMTA1IDM2IDMwIDM2em0wIDguOTA1aC00di02LjgxaDR2Ni44MXpNNDEgMzFoLTRjLTEuMTA1IDAtMiAuOTI0LTIgMi4wNjV2MTEuODdjMCAxLjE0Ljg5NSAyLjA2NSAyIDIuMDY1aDRjMS4xMDUgMCAyLS45MjQgMi0yLjA2NXYtMTEuODdjMC0xLjE0LS44OTUtMi4wNjUtMi0yLjA2NXptMCAxMy45MzVoLTR2LTExLjg3aDR2MTEuODd6TTUxIDI2aC00Yy0xLjEwNSAwLTIgLjk2LTIgMi4xNDZ2MTcuNzA4YzAgMS4xODUuODk1IDIuMTQ2IDIgMi4xNDZoNGMxLjEwNSAwIDItLjk2IDItMi4xNDZWMjguMTQ2QzUzIDI2Ljk2MSA1Mi4xMDUgMjYgNTEgMjZ6bTAgMTkuODU0aC00VjI4LjE0Nmg0djE3LjcwOHpNMjAgMzloLTRjLTEuMTA1IDAtMiAuOTU1LTIgMi4xMzN2My43MzRjMCAxLjE3OC44OTUgMi4xMzMgMiAyLjEzM2g0YzEuMTA1IDAgMi0uOTU1IDItMi4xMzN2LTMuNzM0QzIyIDM5Ljk1NSAyMS4xMDUgMzkgMjAgMzl6bTAgNS44NjdoLTR2LTMuNzM0aDR2My43MzR6TTM1LjM4IDIyYS41MS41MSAwIDAgMCAuNDI0LS4yMzguNjA1LjYwNSAwIDAgMCAuMDY3LS41MTJsLS40NTctMS40MjdhLjU5LjU5IDAgMCAxIC4xOTgtLjY1bDEuMTYtLjg1NmEuNTg4LjU4OCAwIDAgMCAuMjA1LS42My41MjYuNTI2IDAgMCAwLS40OTYtLjM5OGgtMS41MWEuNTI0LjUyNCAwIDAgMS0uNDktLjM3OGwtLjQ5MS0xLjUzM0EuNTI0LjUyNCAwIDAgMCAzMy41IDE1YS41MjQuNTI0IDAgMCAwLS40OS4zNzhsLS40OTEgMS41MzNhLjUyNC41MjQgMCAwIDEtLjQ5LjM3OGgtMS41MWEuNTI2LjUyNiAwIDAgMC0uNDk2LjM5Ny41ODguNTg4IDAgMCAwIC4yMDQuNjMxbDEuMTYuODU1YS41OS41OSAwIDAgMSAuMi42NWwtLjQ1OCAxLjQyOGEuNjA1LjYwNSAwIDAgMCAuMDY3LjUxMi41MS41MSAwIDAgMCAuNDI0LjIzOC40ODYuNDg2IDAgMCAwIC4yOS0uMWwxLjI5OS0uOTU2YS40ODUuNDg1IDAgMCAxIC41ODIgMGwxLjI5OS45NTZjLjA4NS4wNjUuMTg2LjEuMjkuMXpNNDUuMjQzIDE4LjYwNmwuNDYzLjMyOGEuNjEuNjEgMCAwIDEgLjIxMi42ODVsLS4yLjU5OGEuNjI2LjYyNiAwIDAgMCAuMDY3LjUzNGMuMS4xNTYuMjY1LjI0OS40NC4yNDlhLjUwNC41MDQgMCAwIDAgLjI5NC0uMDk4bC42ODYtLjQ4NmEuNTA0LjUwNCAwIDAgMSAuNTkgMGwuNjg2LjQ4NmMuMDg3LjA2My4xODkuMDk3LjI5NC4wOTguMTc1IDAgLjM0LS4wOTMuNDQtLjI1YS42MjYuNjI2IDAgMCAwIC4wNjYtLjUzM2wtLjE5OS0uNTk4YS42MS42MSAwIDAgMSAuMjEyLS42ODVsLjQ2My0uMzI4YS42MDguNjA4IDAgMCAwIC4yMi0uNjU0LjU0NS41NDUgMCAwIDAtLjUxNS0uNDE2aC0uNjk1YS41NDIuNTQyIDAgMCAxLS41MDYtLjM4NmwtLjI1NS0uNzY1QS41NDIuNTQyIDAgMCAwIDQ3LjUgMTZhLjU0Mi41NDIgMCAwIDAtLjUwNi4zODVsLS4yNTUuNzY1YS41NDIuNTQyIDAgMCAxLS41MDYuMzg2aC0uNjk1YS41NDUuNTQ1IDAgMCAwLS41MTYuNDE2LjYwOC42MDggMCAwIDAgLjIyMS42NTR6TTE2LjI0MyAxOC42MDZsLjQ2My4zMjhhLjYxLjYxIDAgMCAxIC4yMTIuNjg1bC0uMi41OThhLjYyNi42MjYgMCAwIDAgLjA2Ny41MzRjLjEuMTU2LjI2NS4yNDkuNDQuMjQ5YS41MDQuNTA0IDAgMCAwIC4yOTQtLjA5OGwuNjg2LS40ODZhLjUwNC41MDQgMCAwIDEgLjU5IDBsLjY4Ni40ODZjLjA4Ny4wNjMuMTg5LjA5Ny4yOTQuMDk4LjE3NSAwIC4zNC0uMDkzLjQ0LS4yNWEuNjI2LjYyNiAwIDAgMCAuMDY2LS41MzNsLS4xOTktLjU5OGEuNjEuNjEgMCAwIDEgLjIxMi0uNjg1bC40NjMtLjMyOGEuNjA4LjYwOCAwIDAgMCAuMjItLjY1NC41NDUuNTQ1IDAgMCAwLS41MTUtLjQxNmgtLjY5NWEuNTQyLjU0MiAwIDAgMS0uNTA2LS4zODZsLS4yNTUtLjc2NUEuNTQyLjU0MiAwIDAgMCAxOC41IDE2YS41NDIuNTQyIDAgMCAwLS41MDYuMzg1bC0uMjU1Ljc2NWEuNTQyLjU0MiAwIDAgMS0uNTA2LjM4NmgtLjY5NWEuNTQ1LjU0NSAwIDAgMC0uNTE2LjQxNi42MDguNjA4IDAgMCAwIC4yMjEuNjU0eiIvPgogICAgPC9nPgo8L3N2Zz4K
Fast selective rerendering
Icon for data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NCIgaGVpZ2h0PSI2NiIgdmlld0JveD0iMCAwIDQ0IDY2Ij4KICAgIDxwYXRoIGZpbGw9IiM2RkQwOEQiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTS40NDIgOC4wOTNsOS45NTctNi43MTZhMSAxIDAgMCAxIDEuMzkuMjdsMTAuMDY2IDE0LjkyMmExIDEgMCAwIDEtLjI3IDEuMzlsLTkuOTU4IDYuNzE1YTEgMSAwIDAgMS0xLjM5LS4yN0wuMTcxIDkuNDgzYTEgMSAwIDAgMSAuMjctMS4zODl6TTIuMzkgOS4xOTJsOC45NDggMTMuMjY0IDguMjk4LTUuNTk2LTguOTQ4LTEzLjI2NUwyLjM5IDkuMTkyek0zMS45ODkgNjVhMSAxIDAgMCAxLTIuMDAyIDB2LThhMSAxIDAgMCAxIDEtMUg0M0ExIDEgMCAwIDEgNDQgNTd2OGExIDEgMCAwIDEtMi4wMDIgMHYtN2gtMTAuMDF2N3ptMTAuMDEtNTFWMUExIDEgMCAwIDEgNDQgMXYxNGExIDEgMCAwIDEtMSAxSDMwLjk4N2ExIDEgMCAwIDEtMS4wMDEtMVYxYTEgMSAwIDAgMSAyLjAwMiAwdjEzaDEwLjAxem0tNy4wMTcgMzIuNTc2QTIyLjEgMjIuMSAwIDAgMCAyMS41ODUgMjYuOTJhMSAxIDAgMSAxIC43ODktMS44MzggMjQuMSAyNC4xIDAgMCAxIDE0LjYxMSAyMS41MTNsMy4zMDQtMy4zMDFhMS4wMDIgMS4wMDIgMCAwIDEgMS40MTYgMS40MTRsLTUuMDA1IDVjLS4zOS4zOS0xLjAyNC4zOS0xLjQxNSAwbC01LjAwNS01YTEgMSAwIDEgMSAxLjQxNi0xLjQxNGwzLjI4NiAzLjI4M3oiLz4KPC9zdmc+Cg==
Handles async actions out of the box

Context

We've built the Prodo Declare framework for two main reasons.

First, we wanted to define a framework that would allow both humans and AI-powered tools to reason easily about the code. One learning from our AI experiments was indeed that Neural Networks struggle to deal with stateful, object-oriented code, whereas they performed better on declarative, functional code. So we wanted to make it easier for developers to built apps in simpler, more declarative ways.

Second, we became ourselves frusturated with existing state managment solutions such as Redux and MobX because they only handle front-end state, whereas we would have loved a full-stack solution when building our own applications. We wanted to use the Flux architecture pattern but didn't want to spend an endless amount of time configuring libraries. We also heavily rely on TypeScript to catch bugs and prevent runtime errors, but most existing libraries did not have native support.

Limits

We believe Prodo Declare checks most of our boxes and is a really nice state management solution to use in your next app. However, there were some challenges we encountered along the way when trying to make it a popular open source tools. Most importantly, our users sometimes struggled with the fact that Declare felt more "magical" than other frameworks, and they had to unlearn what they had previously learned from Redux. For instance, users would sometimes expect to manually control how data is mapped from the application state to the React components (using Redux-style mapStateToProps functions), when this step is in fact automated with Declare.

Potential

The Prodo Declare framework is already mature enough for small applications and it could grow in multiple ways, but we believe the roadmap should first be driven by a first large customer, so that it can be tested at scale and gain the necessary credibility for wider adoption. We're currently in the process of finding this first customer.

Leveraged Technologies