# Gadget Framework  Subscribe to our [RSS feed](https://gadget.dev/change-log/rss.xml) to get Gadget changelog updates as they are published. ## What is the Gadget framework?  The Gadget framework is a powerful backend framework that utilizes Fastify to power all Gadget applications. It offers a serverless Node.js environment for running your JavaScript code, accompanied by **Actions** and **HTTP routes** that are used to execute and organize your backend code. Learn more about the runtime environment, including how workers are managed and how requests are processed, in the [Runtime environment](https://docs.gadget.dev/guides/development-tools/runtime-environment) guide. ## How to use the Gadget framework  ## How to change your application's framework version  Existing applications can upgrade or downgrade their framework version in one click. New apps use the latest framework version by default but can be downgraded. Follow the steps below to change your Gadget framework version: 1. Head over to the **Settings** page within your application. 2. Click the **Upgrade** button in the framework version section. Head over to the **Settings** page within your application. Click the **Upgrade** button in the framework version section. 3. You can now drop down the menu and select the framework version you prefer to change your application to use. 4. Now hit the **Upgrade and run yarn** button in the bottom right-hand corner (will be **Downgrade and run yarn** if you are downgrading your framework version). ## Framework version changelog  ### v1.6.0  * [Configurable behaviour for fetching non-webhook fields and models on Shopify connections](https://docs.gadget.dev/guides/plugins/shopify/non-webhook-fields-and-models) ### v1.5.0  * Support for configuring filter and search indexes for data models * Support for `searchFields` parameter in `findMany` and `findFirst` queries to specify which fields to search and their relative weights * Support for Preact via the `@gadgetinc/preact` package * Support for Preact-only Shopify extensions * New Shopify webhook reconciliation trigger type: `shopify_webhook_reconciliation` ### v1.4.0  * Node.js upgraded from **v20.12** to **v22.10** * [Computed Views](https://docs.gadget.dev/guides/data-access/computed-views) now available * Vite upgraded to [Vite 6](https://vitejs.dev/blog/announcing-vite6) by default Includes breaking changes to the default action timeout and how date / time fields are handed to actions. See the [migration guide](https://docs.gadget.dev/guides/gadget-framework/v1-4-migration) for more information. ### v1.3.0  * [ Related model filtering now available ](https://docs.gadget.dev/api/example-app/development/sorting-and-filtering#filtering-models-by-a-related-model-s-properties) Related model filtering now available Includes breaking changes to existing filters on belongs to relationships and GraphQL queries for namespaced models. See the [migration guide](https://docs.gadget.dev/guides/gadget-framework/v1-3-migration) for more information. ### v1.2.0  * Vite upgraded to [Vite 5](https://vitejs.dev/blog/announcing-vite5) * Apps use a new, customizable `build` script in `package.json` for building frontend assets * The old `vite:build` script has been deprecated * Using the [`gadget` Vite plugin](https://docs.gadget.dev/reference/gadget-server#gadget-vite-plugin) is now required * The old `vite:build` script has been deprecated * Using the [`gadget` Vite plugin](https://docs.gadget.dev/reference/gadget-server#gadget-vite-plugin) is now required ### v1.1.0  * Node.js upgraded from **v20.9** to **v20.12** * Realtime query support in imperative API clients. [Read more](https://docs.gadget.dev/guides/frontend/realtime-queries#plain-api-client-live-queries) * Add models, fields, actions, and routes to your app from the command line using `ggt add`. [Read more](https://docs.gadget.dev/reference/ggt#ggt-add) * Namespace and nested folder support for models and actions. Read more: [models](https://docs.gadget.dev/guides/models/namespaces), [actions](https://docs.gadget.dev/guides/actions/namespacing-global-actions) * Default value for `connections.shopify.maxRetries` changed from 6 to 2 * API client bundle size reduced ### v1.0.0  * Added support for unlimited development environments * Git-based source control across your entire Gadget application's code and configurations * App file structure updated: * The backend now uses an `api` folder for models, actions, and routes * Model-related files are reorganized under `api/models` * Global actions are reorganized under `api/actions` * The `frontend` folder is renamed to `web` * Access control is now represented as its own folder (`accessControl`) containing permissions (`accessControl/permissions`) * App settings, permissions, and model schemas are now represented in metadata files that can be added to source control when using `ggt` * Added support for invoking actions in background queues * **Queues** dashboard page for viewing the status and progress of background actions and Shopify webhooks * The backend now uses an `api` folder for models, actions, and routes * Model-related files are reorganized under `api/models` * Global actions are reorganized under `api/actions` * The `frontend` folder is renamed to `web` * Access control is now represented as its own folder (`accessControl`) containing permissions (`accessControl/permissions`) ### v0.3.1  **Shopify connections** * The `shopifyShop` model now has a field `disabledWebhooks` to allow shop-level control over webhook registration * The `scheduledShopifySync` global action is added to give explicit control over when the Shopify daily sync is run For users upgrading older versions of their app to v0.3.1, it's important to note that the previous `globalShopifySync` still exists within your global actions, but it is safe to remove that because of its redundancy now that `scheduledShopifySync` can give you better control over the daily sync schedule of your app. ### v0.3  * Node.js upgraded from **v18.15** to **v20.9** * New WebCrypto APIs added for cryptography matching the browser APIs * V8 engine upgraded to version 11.3 for improved performance. [Read more](https://nodejs.org/en/blog/announcements/v18-release-announce) * fastify upgraded from v3 to v4 * Plugins have all been renamed from `fastify-something` to `@fastify/something` and versions have changed. Please verify any Fastify plugins are compatible with Fastify 4. * HTTP Route error handlers are now encapsulated. If any of your route plugins set error handlers, they will only apply to errors thrown by routes in that folder or a subfolder. [Read more](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#error-handling-composition-3261). * HTTP Route handlers now need to return the `reply` object if they will send a response later. [Read more](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#need-to-return-reply-to-signal-a-fork-of-the-promise-chain). * HTTP Route handlers for GET routes now expose a HEAD route automatically. [Read more](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#exposeheadroutes-true-by-default). * `reply.res` has been moved to `reply.raw`. [Read more](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#replyres-moved-to-replyraw). Node.js upgraded from **v18.15** to **v20.9** * New WebCrypto APIs added for cryptography matching the browser APIs * V8 engine upgraded to version 11.3 for improved performance. [Read more](https://nodejs.org/en/blog/announcements/v18-release-announce) fastify upgraded from v3 to v4 * Plugins have all been renamed from `fastify-something` to `@fastify/something` and versions have changed. Please verify any Fastify plugins are compatible with Fastify 4. * HTTP Route error handlers are now encapsulated. If any of your route plugins set error handlers, they will only apply to errors thrown by routes in that folder or a subfolder. [Read more](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#error-handling-composition-3261). * HTTP Route handlers now need to return the `reply` object if they will send a response later. [Read more](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#need-to-return-reply-to-signal-a-fork-of-the-promise-chain). * HTTP Route handlers for GET routes now expose a HEAD route automatically. [Read more](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#exposeheadroutes-true-by-default). * `reply.res` has been moved to `reply.raw`. [Read more](https://fastify.dev/docs/latest/Guides/Migration-Guide-V4/#replyres-moved-to-replyraw). ### v0.2  * Node.js upgraded from **v16.20** to **v18.15** * `fetch` global function is now available * V8 engine upgraded to version 10.1 for improved performance. [Read more](https://nodejs.org/en/blog/announcements/v18-release-announce). * Support added for response streaming from Gadget routes. [Read more](https://docs.gadget.dev/guides/http-routes/route-configuration#streaming-replies). * `fetch` global function is now available * V8 engine upgraded to version 10.1 for improved performance. [Read more](https://nodejs.org/en/blog/announcements/v18-release-announce).