# Klai Studio Docs

## master

- [Introduction](https://docs.klai.studio/readme.md)
- [Features](https://docs.klai.studio/features-summary.md)
- [Welcome to Klai Studio!](https://docs.klai.studio/getting-started/welcome-to-fm-betterforms.md)
- [Overview](https://docs.klai.studio/getting-started/system-overview.md): Klai Studio was purpose built to allow FileMaker developers access to a full powerful web technology stack.
- [Your First App](https://docs.klai.studio/getting-started/ide-quick-tour.md)
- [1. Setting Up Your Foundation](https://docs.klai.studio/getting-started/ide-quick-tour/setup.md)
- [1.1 Configure FileMaker Server](https://docs.klai.studio/getting-started/ide-quick-tour/setup/configure-fm-server.md)
- [1.2 Install BetterForms Helper File](https://docs.klai.studio/getting-started/ide-quick-tour/setup/install-bf-helper-file.md)
- [1.3 Add Your Server to BetterForms (IDE)](https://docs.klai.studio/getting-started/ide-quick-tour/setup/add-server-to-bf.md)
- [2. Building Your First Application](https://docs.klai.studio/getting-started/ide-quick-tour/first-app.md)
- [2.1 Create an App (Site) in the IDE](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/create-app.md)
- [2.2 Create Your First Page (Intro to Page Builder)](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/create-page.md)
- [2.3 Understanding & Managing Environments (IDE)](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/environments.md)
- [2.4 Adding Elements to Your Page](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/adding-elements.md)
- [2.5 Understanding Validation](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/understanding-validation.md)
- [2.6 Adding Actions to Your Page](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/adding-actions-to-your-page.md)
- [2.7 Creating Your First List View](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/creating-your-first-list-view.md)
- [2.8 Understanding Page Data Flow](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/page-data-flow.md)
- [2.9 Creating Your First Hook](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/creating-your-first-hook.md)
- [2.10 Working with Data Tables](https://docs.klai.studio/getting-started/ide-quick-tour/first-app/working-with-data-tables.md)
- [3. Understanding Core BetterForms Concepts](https://docs.klai.studio/getting-started/ide-quick-tour/3.-understanding-core-betterforms-concepts.md)
- [3.1 Introduction to Hooks (and where to find them in the IDE)](https://docs.klai.studio/getting-started/ide-quick-tour/3.-understanding-core-betterforms-concepts/3.1-introduction-to-hooks-and-where-to-find-them-in-the-ide.md)
- [3.2 Running Your First Hook (Practical Example)](https://docs.klai.studio/getting-started/ide-quick-tour/3.-understanding-core-betterforms-concepts/3.2-running-your-first-hook-practical-example.md)
- [3.3 Introduction to Actions & Action Scripts (IDE Context)](https://docs.klai.studio/getting-started/ide-quick-tour/3.-understanding-core-betterforms-concepts/3.3-introduction-to-actions-and-action-scripts-ide-context.md)
- [3.4 Understanding the Data Model (and Page Data Model UI)](https://docs.klai.studio/getting-started/ide-quick-tour/3.-understanding-core-betterforms-concepts/3.4-understanding-the-data-model-and-page-data-model-ui.md)
- [4. Common Customizations & Expanding Your App](https://docs.klai.studio/getting-started/ide-quick-tour/4.-common-customizations-and-expanding-your-app.md)
- [4.1 Adding & Configuring Buttons (Page Builder)](https://docs.klai.studio/getting-started/ide-quick-tour/4.-common-customizations-and-expanding-your-app/4.1-adding-and-configuring-buttons-page-builder.md)
- [4.2 Implementing Page Navigation (Actions & Site Navigation UI)](https://docs.klai.studio/getting-started/ide-quick-tour/4.-common-customizations-and-expanding-your-app/4.2-implementing-page-navigation-actions-and-site-navigation-ui.md)
- [4.3 Displaying Data in Tables (Page Builder & Element Config)](https://docs.klai.studio/getting-started/ide-quick-tour/4.-common-customizations-and-expanding-your-app/4.3-displaying-data-in-tables-page-builder-and-element-config.md)
- [4.4 Basic App Styling (Site Styling UI)](https://docs.klai.studio/getting-started/ide-quick-tour/4.-common-customizations-and-expanding-your-app/4.4-basic-app-styling-site-styling-ui.md)
- [5. Mastering the BetterForms Environment & Advancing Your Skills](https://docs.klai.studio/getting-started/ide-quick-tour/environment.md)
- [5.1 Understanding & Managing Environments (In-Depth)](https://docs.klai.studio/getting-started/ide-quick-tour/environment/managing-environments-deep-dive.md)
- [5.2 Deep Dive: Page Configuration & Settings](https://docs.klai.studio/getting-started/ide-quick-tour/environment/pages-deep-dive.md)
- [Navigating the Page Builder Interface](https://docs.klai.studio/getting-started/ide-quick-tour/environment/pages-deep-dive/page-builder-ui.md)
- [Working with Page-Level Action Scripts](https://docs.klai.studio/getting-started/ide-quick-tour/environment/pages-deep-dive/page-action-scripts.md)
- [Configuring the Page Data Model](https://docs.klai.studio/getting-started/ide-quick-tour/environment/pages-deep-dive/page-data-model-config.md)
- [Page Integration Settings Explained](https://docs.klai.studio/getting-started/ide-quick-tour/environment/pages-deep-dive/page-integration-settings.md)
- [Managing Page Info & Other Settings](https://docs.klai.studio/getting-started/ide-quick-tour/environment/pages-deep-dive/page-info-misc.md)
- [5.3 Working with Global Scripts](https://docs.klai.studio/getting-started/ide-quick-tour/environment/global-scripts.md)
- [5.4 Managing App (Site) Settings & Navigation](https://docs.klai.studio/getting-started/ide-quick-tour/environment/app-settings-navigation.md)
- [5.5 Exploring Further: What to Learn Next](https://docs.klai.studio/getting-started/ide-quick-tour/environment/next-steps.md): You've got the basics down! Now it's time to start building out your app
- [Support & Resources](https://docs.klai.studio/getting-started/support-and-resources.md)
- [Getting Help](https://docs.klai.studio/getting-started/support-and-resources/support.md)
- [Learning JSON](https://docs.klai.studio/getting-started/support-and-resources/learning-json.md)
- [Site Settings](https://docs.klai.studio/reference/site-settings.md)
- [Navigation](https://docs.klai.studio/reference/site-settings/navigationoverview.md)
- [App Model](https://docs.klai.studio/reference/site-settings/app-model.md): The App Model functions similar to a page's data model, except that it is accessible to every page in your site. You can also reference data in the App Model from elements that are not bound to a page
- [DOM Header Insertions](https://docs.klai.studio/reference/site-settings/dom-header-insertions.md): This are is used to add third part code into your app.
- [Global Named Actions](https://docs.klai.studio/reference/site-settings/site-wide-named-actions.md)
- [Site Structure](https://docs.klai.studio/reference/site-settings/site-structure.md): Klai Studio app's do have some small opinionated design elements. Understanding the undunderlying structure will help you to design better apps.
- [Slots / Code Injection](https://docs.klai.studio/reference/site-settings/slots-code-injection.md): Reference for BetterForms slot names and where each slot renders in the app UI.
- [Page Settings](https://docs.klai.studio/reference/form-settings.md)
- [Data Model](https://docs.klai.studio/reference/form-settings/data-model.md)
- [Card / Window Modals](https://docs.klai.studio/reference/form-settings/card-modals.md): Card modals display other pages as their content.
- [Validation](https://docs.klai.studio/reference/form-settings/validationoverview.md)
- [Custom Validators](https://docs.klai.studio/reference/form-settings/validationoverview/clientside.md)
- [SEO Meta Tags](https://docs.klai.studio/reference/form-settings/seo-meta-tags.md)
- [Misc Page Settings](https://docs.klai.studio/reference/form-settings/misc-page-settings.md)
- [Page Elements](https://docs.klai.studio/reference/components-overview.md)
- [App Layout Overview](https://docs.klai.studio/reference/components-overview/copy-of-site-structure.md): Quick pointer to the canonical BetterForms app layout overview.
- [BetterForms Elements](https://docs.klai.studio/reference/components-overview/betterforms-elements.md)
- [Checkbox](https://docs.klai.studio/reference/components-overview/betterforms-elements/checkbox.md)
- [Checklist](https://docs.klai.studio/reference/components-overview/betterforms-elements/checklist.md)
- [Cleave.js Input Masking](https://docs.klai.studio/reference/components-overview/betterforms-elements/cleave.md)
- [DateTime Picker](https://docs.klai.studio/reference/components-overview/betterforms-elements/datetimepicker.md)
- [Google Address Autocomplete](https://docs.klai.studio/reference/components-overview/betterforms-elements/googleaddress.md)
- [Image Display Element](https://docs.klai.studio/reference/components-overview/betterforms-elements/image.md)
- [Input](https://docs.klai.studio/reference/components-overview/betterforms-elements/input.md)
- [Masked Input](https://docs.klai.studio/reference/components-overview/betterforms-elements/masked.md)
- [Range Slider (noUiSlider)](https://docs.klai.studio/reference/components-overview/betterforms-elements/nouislider.md)
- [Radios](https://docs.klai.studio/reference/components-overview/betterforms-elements/radios.md)
- [Select](https://docs.klai.studio/reference/components-overview/betterforms-elements/select.md)
- [Advanced Select (selectEx)](https://docs.klai.studio/reference/components-overview/betterforms-elements/selectex.md)
- [TextArea](https://docs.klai.studio/reference/components-overview/betterforms-elements/textarea.md)
- [Common](https://docs.klai.studio/reference/components-overview/common.md)
- [Input](https://docs.klai.studio/reference/components-overview/common/input.md)
- [Button](https://docs.klai.studio/reference/components-overview/common/button.md)
- [Data Table](https://docs.klai.studio/reference/components-overview/common/tables2.md)
- [HTML](https://docs.klai.studio/reference/components-overview/common/html.md)
- [Grouping Elements](https://docs.klai.studio/reference/components-overview/grouping-elements.md)
- [Tabs](https://docs.klai.studio/reference/components-overview/grouping-elements/tabs_form.md): Organize complex forms using a standard tab element
- [Panel](https://docs.klai.studio/reference/components-overview/grouping-elements/panel.md)
- [accordion](https://docs.klai.studio/reference/components-overview/grouping-elements/accordion.md)
- [accordion2](https://docs.klai.studio/reference/components-overview/grouping-elements/accordion-1.md)
- [listrows](https://docs.klai.studio/reference/components-overview/grouping-elements/listrows.md)
- [Uploading Files](https://docs.klai.studio/reference/components-overview/uploading-files.md)
- [dropzone](https://docs.klai.studio/reference/components-overview/uploading-files/dropzone.md)
- [dropzone to S3](https://docs.klai.studio/reference/components-overview/uploading-files/dropzone-to-s3.md): How to use the dropzone element to upload files directly to an AWS S3 bucket.
- [uploadCare](https://docs.klai.studio/reference/components-overview/uploading-files/uploadcare.md)
- [Uppy File Upload Widget Integration with AWS S3](https://docs.klai.studio/reference/components-overview/uploading-files/uppy-file-upload-widget-integration-with-aws-s3.md)
- [Misc Elements](https://docs.klai.studio/reference/components-overview/misc-elements.md)
- [Plain Text / Code Editor](https://docs.klai.studio/reference/components-overview/misc-elements/aceeditor.md)
- [signature](https://docs.klai.studio/reference/components-overview/misc-elements/signature.md)
- [fullCalendar](https://docs.klai.studio/reference/components-overview/misc-elements/fullcalendar.md): Implementation of www.fullcalendar.io calendaring component. Component based on https://github.com/CroudTech/vue-fullcalendar
- [rangeSlider](https://docs.klai.studio/reference/components-overview/misc-elements/rangeslider.md)
- [Payment Gateways](https://docs.klai.studio/reference/components-overview/payment-gateways.md)
- [Authorize.net](https://docs.klai.studio/reference/components-overview/payment-gateways/authorize.md)
- [PayPal](https://docs.klai.studio/reference/components-overview/payment-gateways/paypal.md)
- [Stripe](https://docs.klai.studio/reference/components-overview/payment-gateways/stripe.md)
- [Adding Custom Page Elements](https://docs.klai.studio/reference/components-overview/3rd-party-elements.md)
- [Actions Processor](https://docs.klai.studio/reference/actions-processor.md)
- [Named Actions (Action Scripts)](https://docs.klai.studio/reference/actions-processor/actions_named.md)
- [Actions](https://docs.klai.studio/reference/actions-processor/actions_overview.md)
- [runUtilityHook](https://docs.klai.studio/reference/actions-processor/actions_overview/runutilityhook.md)
- [path](https://docs.klai.studio/reference/actions-processor/actions_overview/path.md)
- [debounce](https://docs.klai.studio/reference/actions-processor/actions_overview/debounce.md): Ver +bf-0.01.4
- [throttle](https://docs.klai.studio/reference/actions-processor/actions_overview/throttle.md): Ver +bf-0.01.4
- [showAlert](https://docs.klai.studio/reference/actions-processor/actions_overview/showalert.md)
- [showModal / hideModal](https://docs.klai.studio/reference/actions-processor/actions_overview/showmodal.md): Displays a full screen modal dialogue with customizable buttons
- [function](https://docs.klai.studio/reference/actions-processor/actions_overview/function-1.md)
- [clipboard](https://docs.klai.studio/reference/actions-processor/actions_overview/clipboard.md)
- [cookie](https://docs.klai.studio/reference/actions-processor/actions_overview/cookie.md)
- [setFocus](https://docs.klai.studio/reference/actions-processor/actions_overview/setfocus.md)
- [scrollTo](https://docs.klai.studio/reference/actions-processor/actions_overview/scrollto.md)
- [wait](https://docs.klai.studio/reference/actions-processor/actions_overview/wait.md): pause the actions queue for an amount of time specified
- [emit](https://docs.klai.studio/reference/actions-processor/actions_overview/emit.md)
- [validate](https://docs.klai.studio/reference/actions-processor/actions_overview/validate.md)
- [channelJoinAnon](https://docs.klai.studio/reference/actions-processor/actions_overview/channeljoinanonymous.md): Adds user to anonymous channel
- [channelLeaveAnon](https://docs.klai.studio/reference/actions-processor/actions_overview/channelleaveanon.md): Removes user from anonymous channel
- [messageSend](https://docs.klai.studio/reference/actions-processor/actions_overview/messagesend.md)
- [messageSendAnonChannel](https://docs.klai.studio/reference/actions-processor/actions_overview/messagesendanonchannel.md)
- [consoleError](https://docs.klai.studio/reference/actions-processor/actions_overview/consoleerror.md)
- [showStripeCheckout](https://docs.klai.studio/reference/actions-processor/actions_overview/showstripecheckout.md)
- [showCardModal / hideCardModal](https://docs.klai.studio/reference/actions-processor/actions_overview/showcardmodal.md): Opens or closes a BetterForms card modal that renders another page.
- [runOnCompleteHook](https://docs.klai.studio/reference/actions-processor/actions_overview/runoncompletehook.md): Runs the form completion hook and waits for it to finish before continuing the action queue.
- [mapInfoWindow](https://docs.klai.studio/reference/actions-processor/actions_overview/mapinfowindow.md): Emits a map info-window event to components listening for map interactions.
- [authLoginOauth / oauthLoginHook](https://docs.klai.studio/reference/actions-processor/actions_overview/authloginoauth.md): Finalizes an OAuth login after the provider redirects back into BetterForms.
- [pwaCustomInstall](https://docs.klai.studio/reference/actions-processor/actions_overview/pwacustominstall.md): Captures the browser install prompt so your app can trigger installation later with custom UI.
- [pwaPromptInstall](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapromptinstall.md): Triggers the stored PWA install prompt and runs callbacks for accept or dismiss outcomes.
- [pwaPromptPushPermission](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapromptpushpermission.md): Requests push-notification permission and registers the browser subscription with BetterForms.
- [pwaPushNotificationSend](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapushnotificationsend.md): Sends a push notification through BetterForms to registered browser subscriptions.
- [llmToolCall](https://docs.klai.studio/reference/actions-processor/actions_overview/llmtoolcall.md): Dispatches LLM-requested frontend tools by mapping them to BetterForms named actions.
- [llmToolCallResponse](https://docs.klai.studio/reference/actions-processor/actions_overview/llmtoolcallresponse.md): Sends the result of a frontend tool workflow back to the BetterForms LLM tool-response service.
- [llmQueryStop](https://docs.klai.studio/reference/actions-processor/actions_overview/llmquerystop.md): Requests that an active BetterForms LLM query stream stop gracefully.
- [assistantStop](https://docs.klai.studio/reference/actions-processor/actions_overview/assistantstop.md): Requests that an active BetterForms assistants stream stop gracefully.
- [Authentication Actions](https://docs.klai.studio/reference/actions-processor/authentication-actions.md)
- [Script Hooks](https://docs.klai.studio/reference/hooksoverview.md)
- [Globals Variables](https://docs.klai.studio/reference/hooksoverview/filemaker-globals.md)
- [$$BF\_Model](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_model.md)
- [$$BF\_App](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_app.md)
- [$$BF\_State](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_state.md): The state object holds various data related to the browser environment.
- [Keeping Keys Private](https://docs.klai.studio/reference/hooksoverview/payloadobject.md)
- [Reducing Payload Size](https://docs.klai.studio/reference/hooksoverview/env_vars.md)
- [API Callback Endpoint](https://docs.klai.studio/reference/hooksoverview/callback.md)
- [Common Hooks](https://docs.klai.studio/reference/hooksoverview/commonoverview.md)
- [Scoped Hooks](https://docs.klai.studio/reference/hooksoverview/hooks.md): Scoped hooks are specific to the page on which they are initiated and contain relevant data about the page context
- [Lifecycle Hooks](https://docs.klai.studio/reference/hooksoverview/lifecycle-hooks.md)
- [Authentication](https://docs.klai.studio/reference/authentication.md): High-level overview of BetterForms authentication strategies and building blocks.
- [Basic Authentication](https://docs.klai.studio/reference/authentication/basic-auth.md): Email/password authentication using the internal Users table in the helper file.
- [User Registration & Verification](https://docs.klai.studio/reference/authentication/basic-auth/user-registration.md): Step-by-step for user sign-up and email verification using Basic Authentication.
- [Password Management](https://docs.klai.studio/reference/authentication/basic-auth/password-management.md): Password reset flows for end users in Basic Authentication.
- [Managing User Accounts](https://docs.klai.studio/reference/authentication/managing-users.md)
- [Custom Login Pages](https://docs.klai.studio/reference/authentication/custom-login-pages.md)
- [Query & Cookie Based Auth](https://docs.klai.studio/reference/authentication/query-cookie-auth.md): Using smart links (query tokens) and cookie-based sessions for streamlined authentication.
- [OAuth](https://docs.klai.studio/reference/authentication/oauth.md): OAuth sign-in with Google, Auth0, and Okta.
- [JWT Expiration](https://docs.klai.studio/reference/authentication/jwt-expiration.md): Configure per-tenant JWT authentication token expiry and domain audience.
- [Security Best Practices](https://docs.klai.studio/reference/authentication/security-best-practices.md): Recommended practices for securing authentication flows in BetterForms.
- [Klai Utility Functions](https://docs.klai.studio/reference/bf-utility-function-ver-0.9.20+.md): BetterForm has a collection of helper Java Script functions that are used within JavaScript to allow  easy access to common complex code.
- [Dynamic Library Loading](https://docs.klai.studio/reference/bf-utility-function-ver-0.9.20+/bf-dynamic-library-loading.md): Dynamic library loading functionality for BetterForms - Load external JavaScript libraries, ESM modules, and CSS files from CDN dynamically within function actions.
- [APIs & Services](https://docs.klai.studio/reference/apis-and-services.md)
- [Messaging](https://docs.klai.studio/reference/apis-and-services/messaging.md): Messaging is intended to be used for real-time features, such as notifications, chat or auto updates. Messaging also allows data to be pushed from FileMaker into your BetterForms apps.
- [Adding users to channels](https://docs.klai.studio/reference/apis-and-services/messaging/adding-users-to-channels.md): You can add users to channels either by calling a FileMaker script in the Helper File, or by calling a REST API endpoint of your BetterForms domain.
- [Removing users from channels](https://docs.klai.studio/reference/apis-and-services/messaging/removing-users-from-channels.md): Similar to adding users, you can remove users either by a REST API call, or via a FileMaker script in your helper file.
- [Sending messages](https://docs.klai.studio/reference/apis-and-services/messaging/sending-messages.md): Once your users are subscribed to a channel or two, you can send messages to them!
- [Get connected users](https://docs.klai.studio/reference/apis-and-services/messaging/get-all-users-connected.md)
- [Get active channels](https://docs.klai.studio/reference/apis-and-services/messaging/get-active-channels.md)
- [Core APIs](https://docs.klai.studio/reference/apis-and-services/core-apis.md)
- [Klai Server Proxy](https://docs.klai.studio/reference/apis-and-services/core-apis/server-proxy.md)
- [BetterForms Error Pages API](https://docs.klai.studio/reference/apis-and-services/core-apis/error-pages-api.md)
- [Klai Streaming Proxy](https://docs.klai.studio/reference/apis-and-services/streaming-proxy.md)
- [Klai Streaming API (Chat)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-api-chat.md)
- [Klai Streaming API (Assistants)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-assistants-api.md)
- [Klai Streaming API (LLM Query)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-api-llm-query.md)
- [Guides & Integrations](https://docs.klai.studio/reference/apis-and-services/integrations.md)
- [Klai Studio MCP (Beta)](https://docs.klai.studio/reference/apis-and-services/integrations/klai-studio-mcp.md)
- [Creating Components with Third-Party Libraries](https://docs.klai.studio/reference/apis-and-services/integrations/creating-components-with-third-party-libraries.md)
- [Web Awesome Components in BetterForms](https://docs.klai.studio/reference/apis-and-services/integrations/web-awesome-components.md): Use Web Awesome components inside BetterForms with self-contained bfcomponents that lazy-load the library and styles.
- [ApexCharts - Getting started](https://docs.klai.studio/reference/apis-and-services/integrations/apexcharts-getting-started.md)
- [Creating a PWA](https://docs.klai.studio/reference/apis-and-services/integrations/creating-a-pwa.md)
- [Setting up Auth0](https://docs.klai.studio/reference/apis-and-services/integrations/setting-up-auth0.md)
- [Create an S3 Bucket on AWS](https://docs.klai.studio/reference/apis-and-services/integrations/create-an-s3-bucket-on-aws.md)
- [Development & Best Practices](https://docs.klai.studio/reference/best-practices.md)
- [Developer Mode](https://docs.klai.studio/reference/best-practices/developer-mode.md)
- [JavaScript Libraries](https://docs.klai.studio/reference/best-practices/javascript-libraries.md)
- [Practices for File Downloads](https://docs.klai.studio/reference/best-practices/practices-for-file-downloads.md)
- [Rollbacks and Version Control](https://docs.klai.studio/reference/best-practices/rollbacks-and-version-control.md)
- [Customizing & Styling](https://docs.klai.studio/reference/styling.md): There are many ways to customize a BetterForms site to suit the needs of your application!
- [SEO & Social Sharing](https://docs.klai.studio/reference/styling/seo-and-social-sharing.md)
- [Custom Components](https://docs.klai.studio/reference/styling/custom-components.md): Components are chunks of reusable code. They allow you to define code in a single place and reuse it throughout your app. Components can be references through HTML or with Klai JSON schema
- [Components Editor](https://docs.klai.studio/reference/styling/custom-components/components-editor.md)
- [Component Best Practices](https://docs.klai.studio/reference/styling/custom-components/component-best-practices.md): Good components need to be designed well. Taking the time to think of future use cases significantly enhances the components usability.
- [Support & Maintenance](https://docs.klai.studio/reference/support-and-maintenance.md)
- [Connection Trouble Shooting Guide](https://docs.klai.studio/reference/support-and-maintenance/connection-trouble-shooting-guide.md)
- [Updating the Helper File](https://docs.klai.studio/reference/support-and-maintenance/updating-the-helper-file.md)
- [Klai Error Codes](https://docs.klai.studio/reference/support-and-maintenance/bf-error-codes.md): Klai Studio can throw various errors due to code or configuration. Errors can appear in the Helper File, Developer Tools ( when enabled) or the browser console.
- [Security](https://docs.klai.studio/reference/security.md)
- [Custom Domains](https://docs.klai.studio/reference/security/custom-domains.md)
- [Security White Paper](https://docs.klai.studio/reference/security/white-paper.md)
- [Firewalls](https://docs.klai.studio/reference/security/security.md)
- [Technology Stack](https://docs.klai.studio/reference/security/technology-stack.md): Software and tools we use to run Klai Studio!
- [Compatibility](https://docs.klai.studio/reference/security/compatibility.md): As of version 0.9.43 BetterForms is compatible with the following versions or newer. Older version may be supported but may have some limiting features as of Oct 22nd, 2020:
- [Enterprise](https://docs.klai.studio/reference/enterprise.md)
- [Klai Enterprise Documentation](https://docs.klai.studio/reference/enterprise/bf-enterprise-documentation.md)
- [Cookbook Backlog](https://docs.klai.studio/cookbook-backlog/read-me.md): Planned recipe topics with links to the best current reference pages.
- [AI Assistant - Tips & Tricks](https://docs.klai.studio/cookbook-backlog/ai-assistant-tips-and-tricks.md)
- [Using Development Data](https://docs.klai.studio/cookbook-backlog/using-development-data.md)
- [Passing Data Between Pages](https://docs.klai.studio/cookbook-backlog/passing-data-between-pages.md)
- [When to use 'App' vs 'Model'](https://docs.klai.studio/cookbook-backlog/when-to-use-app-vs-model.md)
- [Using Smart Links](https://docs.klai.studio/cookbook-backlog/using-smart-links.md)
- [FM Script Architecture](https://docs.klai.studio/cookbook-backlog/fm-script-architecture.md)
- [Using JSON in FileMaker](https://docs.klai.studio/cookbook-backlog/using-json-in-filemaker.md)
- [Performance & Optimization](https://docs.klai.studio/cookbook-backlog/preformance.md)
- [Backward Compatibility for V2 to V3](https://docs.klai.studio/cookbook-backlog/backward-compatibility-v2-to-v3.md): Notes for restoring legacy behaviors when upgrading older BetterForms V2 projects to V3.

## 1.0 dont use

- [Introduction](https://docs.klai.studio/v1/readme.md)
- [Features Summary](https://docs.klai.studio/v1/introduction.md)
- [System Overview](https://docs.klai.studio/v1/getting-started/system-overview.md): BetterForms is a unique application that can interact with your FileMaker server in creative ways. Let's see how that works!
- [Integration](https://docs.klai.studio/v1/getting-started/integration.md)
- [1. Configure FileMaker Server](https://docs.klai.studio/v1/getting-started/integration/installation.md): Need to Learn JSON? https://youtu.be/iiADhChRriM
- [2. Add your Server to BetterForms](https://docs.klai.studio/v1/getting-started/integration/2.-add-a-server.md)
- [3. Introduction to Hooks](https://docs.klai.studio/v1/getting-started/integration/3.-introduction-to-hooks.md): Before we continue integrating, let's take a step back to understand the concept of Hooks in BetterForms
- [4. Create your first Site](https://docs.klai.studio/v1/getting-started/integration/4.-create-a-site.md)
- [5. Create your first Page](https://docs.klai.studio/v1/getting-started/integration/5.-create-a-form.md)
- [6. Configure your FileMaker File(s)](https://docs.klai.studio/v1/getting-started/integration/3.-copy-custom-functions-and-scripts.md): Now that BetterForms is properly configured, let's finish integrating your legacy FileMaker file(s) so that we can test the entire workflow through BetterForms.
- [7. Run your first Hook](https://docs.klai.studio/v1/getting-started/integration/6.-run-your-first-hook.md)
- [Next Steps](https://docs.klai.studio/v1/getting-started/integration/next-steps.md): You've got the basics down! Now it's time to start building out your app
- [Common Customizations](https://docs.klai.studio/v1/getting-started/common-customizations.md)
- [Introduction to Actions](https://docs.klai.studio/v1/getting-started/common-customizations/introduction-to-actions.md): Actions
- [Introduction to Buttons](https://docs.klai.studio/v1/getting-started/common-customizations/introduction-to-buttons.md)
- [Page Navigation](https://docs.klai.studio/v1/getting-started/common-customizations/page-navigation.md)
- [Displaying Data in a Table](https://docs.klai.studio/v1/getting-started/common-customizations/displaying-data-in-a-table.md)
- [Support](https://docs.klai.studio/v1/getting-started/support.md)
- [Hacking a Webpage](https://docs.klai.studio/v1/getting-started/support/hacking-a-webpage.md)
- [Learning JSON](https://docs.klai.studio/v1/getting-started/support/learning-json.md)
- [Site Settings](https://docs.klai.studio/v1/reference/site-settings.md)
- [Navigation](https://docs.klai.studio/v1/reference/site-settings/navigationoverview.md)
- [Slots / Code Injection](https://docs.klai.studio/v1/reference/site-settings/slots-code-injection.md): There are many ways to inject code throughout your site. Slots are the primary method for doing this
- [App Model](https://docs.klai.studio/v1/reference/site-settings/app-model.md): The App Model functions similar to a page's data model, except that it is accessible to every page in your site. You can also reference data in the App Model from elements that are not bound to a page
- [Site-wide Named Actions](https://docs.klai.studio/v1/reference/site-settings/site-wide-named-actions.md)
- [Page Settings](https://docs.klai.studio/v1/reference/form-settings.md)
- [Data Model](https://docs.klai.studio/v1/reference/form-settings/data-model.md)
- [Card / Window Modals](https://docs.klai.studio/v1/reference/form-settings/card-modals.md): Card modals display other pages as their content.
- [Validation](https://docs.klai.studio/v1/reference/form-settings/validationoverview.md)
- [Custom Validators](https://docs.klai.studio/v1/reference/form-settings/validationoverview/clientside.md)
- [Misc Page Settings](https://docs.klai.studio/v1/reference/form-settings/misc-page-settings.md)
- [Page Elements](https://docs.klai.studio/v1/reference/components-overview.md)
- [Common](https://docs.klai.studio/v1/reference/components-overview/common.md)
- [Button](https://docs.klai.studio/v1/reference/components-overview/common/button.md)
- [Data Table](https://docs.klai.studio/v1/reference/components-overview/common/tables2.md)
- [HTML](https://docs.klai.studio/v1/reference/components-overview/common/html.md)
- [Grouping Elements](https://docs.klai.studio/v1/reference/components-overview/grouping-elements.md)
- [Tabs](https://docs.klai.studio/v1/reference/components-overview/grouping-elements/tabs_form.md): Organize complex forms using a standard tab element
- [panel](https://docs.klai.studio/v1/reference/components-overview/grouping-elements/untitled-1.md)
- [accordion](https://docs.klai.studio/v1/reference/components-overview/grouping-elements/accordion.md)
- [listrows](https://docs.klai.studio/v1/reference/components-overview/grouping-elements/listrows.md)
- [Uploading Files](https://docs.klai.studio/v1/reference/components-overview/uploading-files.md)
- [dropzone](https://docs.klai.studio/v1/reference/components-overview/uploading-files/dropzone.md)
- [dropzone to S3](https://docs.klai.studio/v1/reference/components-overview/uploading-files/dropzone-to-s3.md): How to use the dropzone element to upload files directly to an AWS S3 bucket.
- [uploadCare](https://docs.klai.studio/v1/reference/components-overview/uploading-files/uploadcare.md)
- [Misc Elements](https://docs.klai.studio/v1/reference/components-overview/misc-elements.md)
- [Plain Text / Code Editor](https://docs.klai.studio/v1/reference/components-overview/misc-elements/aceeditor.md)
- [signature](https://docs.klai.studio/v1/reference/components-overview/misc-elements/signature.md)
- [fullCalendar](https://docs.klai.studio/v1/reference/components-overview/misc-elements/fullcalendar.md)
- [rangeSlider](https://docs.klai.studio/v1/reference/components-overview/misc-elements/rangeslider.md)
- [Payment Gateways](https://docs.klai.studio/v1/reference/components-overview/payment-gateways.md)
- [Authorize.net](https://docs.klai.studio/v1/reference/components-overview/payment-gateways/authorize.md)
- [PayPal](https://docs.klai.studio/v1/reference/components-overview/payment-gateways/paypal.md)
- [Stripe](https://docs.klai.studio/v1/reference/components-overview/payment-gateways/stripe.md)
- [Adding Custom Page Elements](https://docs.klai.studio/v1/reference/components-overview/3rd-party-elements.md)
- [Actions Processor](https://docs.klai.studio/v1/reference/actions-processor.md)
- [Named Actions](https://docs.klai.studio/v1/reference/actions-processor/actions_named.md)
- [Actions](https://docs.klai.studio/v1/reference/actions-processor/actions_overview.md)
- [runUtilityHook](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/runutilityhook.md)
- [path](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/path.md)
- [debounce](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/debounce.md): Ver +bf-0.01.4
- [throttle](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/throttle.md): Ver +bf-0.01.4
- [showAlert](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/showalert.md)
- [showModal / hideModal](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/showmodal.md): Displays a full screen modal dialogue with customizable buttons
- [function](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/function-1.md)
- [clipboard](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/clipboard.md)
- [cookie](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/cookie.md)
- [setFocus](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/setfocus.md)
- [wait](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/wait.md): pause the actions queue for an amount of time specified
- [emit](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/emit.md)
- [validate](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/validate.md)
- [channelJoinAnon](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/channeljoinanonymous.md): Adds user to anonymous channel
- [channelLeaveAnon](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/channelleaveanon.md): Removes user from anonymous channel
- [messageSend](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/messagesend.md)
- [messageSendAnonChannel](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/messagesendanonchannel.md)
- [Authentication Actions](https://docs.klai.studio/v1/reference/actions-processor/authentication-actions.md)
- [Script Hooks](https://docs.klai.studio/v1/reference/hooksoverview.md)
- [Globals Variables](https://docs.klai.studio/v1/reference/hooksoverview/filemaker-globals.md)
- [$$BF\_Model](https://docs.klai.studio/v1/reference/hooksoverview/filemaker-globals/usdusdbf_model.md)
- [$$BF\_App](https://docs.klai.studio/v1/reference/hooksoverview/filemaker-globals/usdusdbf_app.md)
- [$$BF\_State](https://docs.klai.studio/v1/reference/hooksoverview/filemaker-globals/usdusdbf_state.md): The state object holds various data related to the browser environment.
- [Keeping Keys Private](https://docs.klai.studio/v1/reference/hooksoverview/payloadobject.md)
- [Reducing Payload Size](https://docs.klai.studio/v1/reference/hooksoverview/env_vars.md)
- [API Callback Endpoint](https://docs.klai.studio/v1/reference/hooksoverview/callback.md)
- [Common Hooks](https://docs.klai.studio/v1/reference/hooksoverview/commonoverview.md)
- [Scoped Hooks](https://docs.klai.studio/v1/reference/hooksoverview/hooks.md): Scoped hooks are specific to the page on which they are initiated and contain relevant data about the page context
- [Users & Authentication](https://docs.klai.studio/v1/reference/users-and-authentication.md): This section will guide you through how authentication is built into BetterForms and how you can customize its behavior to meet the needs of your app.
- [Managing User Accounts](https://docs.klai.studio/v1/reference/users-and-authentication/managing-users.md)
- [Custom Login Pages](https://docs.klai.studio/v1/reference/users-and-authentication/custom-login-pages.md)
- [Advanced Configuration](https://docs.klai.studio/v1/reference/advanced-configuration.md)
- [Custom Domains](https://docs.klai.studio/v1/reference/advanced-configuration/custom-domains.md)
- [BF Utility Functions](https://docs.klai.studio/v1/reference/bf-utility-function-ver-0.9.20+.md): BetterForm has a collection of helper Java Script functions that are used within JavaScript to allow  easy access to common complex code.
- [BF Error Codes](https://docs.klai.studio/v1/reference/bf-error-codes.md): FM BetterForms can throw various errors due to code or configuration. Errors can appear in the Helper File, Developer Tools ( when enabled) or the browser console. For the lates list of error code see
- [Messaging](https://docs.klai.studio/v1/reference/messaging-ver-0.10.14+.md): Messaging is intended to be used for real-time features, such as notifications, chat or auto updates. Messaging also allows data to be pushed from FileMaker into your BetterForms apps.
- [Adding users to channels](https://docs.klai.studio/v1/reference/messaging-ver-0.10.14+/adding-users-to-channels.md): You can add users to channels either by calling a FileMaker script in the Helper File, or by calling a REST API endpoint of your BetterForms domain.
- [Removing users from channels](https://docs.klai.studio/v1/reference/messaging-ver-0.10.14+/removing-users-from-channels.md): Similar to adding users, you can remove users either by a REST API call, or via a FileMaker script in your helper file.
- [Sending messages](https://docs.klai.studio/v1/reference/messaging-ver-0.10.14+/sending-messages.md): Once your users are subscribed to a channel or two, you can send messages to them!
- [Get connected users](https://docs.klai.studio/v1/reference/messaging-ver-0.10.14+/get-all-users-connected.md)
- [Get active channels](https://docs.klai.studio/v1/reference/messaging-ver-0.10.14+/get-active-channels.md)
- [Troubleshooting](https://docs.klai.studio/v1/usage/troubleshooting.md)
- [Debugging](https://docs.klai.studio/v1/usage/troubleshooting/debugging.md)
- [Frozen Actions Queue](https://docs.klai.studio/v1/usage/troubleshooting/frozen-actions-queue.md)
- [JavaScript Tips](https://docs.klai.studio/v1/usage/javascript-tips.md)
- [Calling Named Actions from HTML Vue Events](https://docs.klai.studio/v1/usage/javascript-tips/calling-named-actions-from-html-vue-events.md)
- [Calculations](https://docs.klai.studio/v1/usage/javascript-tips/calculations.md)
- [System Overview](https://docs.klai.studio/v1/usage/system-overview.md)
- [Forms Processor](https://docs.klai.studio/v1/usage/formsoverview.md)
- [Form Types](https://docs.klai.studio/v1/usage/formsoverview/formtypesoverview.md)
- [HTML & VueJS](https://docs.klai.studio/v1/usage/formsoverview/working-with-html.md)
- [Styling and Design](https://docs.klai.studio/v1/usage/formsoverview/styling.md)
- [JS Caclulations and Functions](https://docs.klai.studio/v1/usage/formsoverview/js-caclulations-and-functions.md)
- [Customizing and Styling](https://docs.klai.studio/v1/usage/stylingverview.md): There are many ways to customize a BetterForms site to suit the needs of your application!
- [Custom Components](https://docs.klai.studio/v1/usage/stylingverview/custom-components-1.md): This is a preliminary spec for building and using custom components
- [Custom CSS](https://docs.klai.studio/v1/usage/stylingverview/custom-css.md): You can apply custom CSS styles on a per-site basis
- [Custom Components](https://docs.klai.studio/v1/usage/stylingverview/custom-components.md): What are they, how are they reusable and why
- [Page Pre-loaders](https://docs.klai.studio/v1/usage/stylingverview/page-pre-loaders.md): Customize the animated page loading style
- [Favicon](https://docs.klai.studio/v1/usage/stylingverview/favicon.md)
- [Design Patterns and Best Practices](https://docs.klai.studio/v1/usage/design-patterns-and-debugging.md): UX, Performance optimizations and best practices for building BetterForms apps.
- [Working with environments](https://docs.klai.studio/v1/usage/design-patterns-and-debugging/untitled.md)
- [Handling Data](https://docs.klai.studio/v1/usage/design-patterns-and-debugging/fetching-data.md)
- [Saving Data](https://docs.klai.studio/v1/usage/design-patterns-and-debugging/saving-data.md)
- [Optimization](https://docs.klai.studio/v1/usage/design-patterns-and-debugging/optimization.md)
- [Business Logic](https://docs.klai.studio/v1/usage/design-patterns-and-debugging/business-logic.md)
- [UI / UX](https://docs.klai.studio/v1/usage/design-patterns-and-debugging/ui-ux.md)
- [Authentication](https://docs.klai.studio/v1/security/authentication.md)
- [Security White Paper](https://docs.klai.studio/v1/security/white-paper.md)
- [Firewalls](https://docs.klai.studio/v1/security/security.md)
- [Technology Stack](https://docs.klai.studio/v1/security/technology-stack.md): Software and tools we use to run FM BetterForms!
- [Compatibility](https://docs.klai.studio/v1/compatibility.md): As of version 0.9.43 BetterForms is compatible with the following versions or newer. Older version may be supported but may have some limiting features as of Oct 22nd, 2020:

## Engineering Reference Docs

- [BF Streaming Proxy](https://docs.klai.studio/engineering-reference-docs/bf-streaming-proxy.md)
- [Updating the Helper File](https://docs.klai.studio/engineering-reference-docs/updating-the-helper-file.md)
- [Connection Trouble Shooting Guide](https://docs.klai.studio/engineering-reference-docs/connection-trouble-shooting-guide.md)
- [Software Testing - Overview](https://docs.klai.studio/engineering-reference-docs/software-testing-overview.md)
- [Types of Testing](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/types-of-testing.md)
- [UX/UI Checklist](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist.md)
- [Pages](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages.md)
- [Login 🔑](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/login.md)
- [Pricing 💵](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/pricing.md)
- [404 🤷‍♂️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/404.md)
- [Contact Us ☎️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/contact-us.md)
- [Sign Up 👋](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/sign-up.md)
- [FAQ ❓](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/faq.md)
- [Blog Post 🗞](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/blog-post.md)
- [Careers 💼](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/careers.md)
- [Team 👫](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/team.md)
- [Cart 🛒](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/cart.md)
- [Press 📸](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/press.md)
- [Search results 🔍](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/pages/search-results.md)
- [Elements](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements.md)
- [Avatar 😁](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/avatar.md)
- [Badge 📛](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/badge.md)
- [Button 🖲️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/button.md)
- [Card 🃏](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/card.md)
- [Table 📏](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/table.md)
- [Icon 🌠](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/icon.md)
- [Text Field ⌨️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/text-field.md)
- [Toggle 🎛️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/toggle.md)
- [Loading ⏳](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/loading.md)
- [Modal 🎉](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/modal.md)
- [Tooltip 🛠](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/tooltip.md)
- [Search 🕵️‍♀️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/search.md)
- [Navigation 🧭](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/navigation.md)
- [Radio 📻](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/radio.md)
- [Checkbox ☑️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/checkbox.md)
- [Tabs 🗂](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/tabs.md)
- [Toast 🍞](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/elements/toast.md)
- [Flows](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows.md)
- [Submitting a form 📨](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/submitting-a-form.md)
- [Making a payment 💳](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/making-a-payment.md)
- [Contacting support 🆘](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/contacting-support.md)
- [Deleting account 🗑](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/deleting-account.md)
- [Tracking progress 📈](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/tracking-progress.md)
- [Resetting password 🤫](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/resetting-password.md)
- [Showing input error 🚨](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/showing-input-error.md)
- [Entering a promo code 🏷️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/entering-a-promo-code.md)
- [Saving changes 💾](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/saving-changes.md)
- [Canceling subscription 🛑](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/flows/canceling-subscription.md)
- [Topics](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/topics.md)
- [Responsiveness 🎚](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/topics/responsiveness.md)
- [Typography 🔤](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/topics/typography.md)
- [Dark mode 🌑](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/topics/dark-mode.md)
- [Accessibility 🚹](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/topics/accessibility.md)
- [Colors 🎨](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/topics/colors.md)
- [UX Writing ✏️](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/topics/ux-writing.md)
- [Brand](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/brand.md)
- [Logo 💠](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/brand/logo.md)
- [Social Media 🔉](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/brand/social-media.md)
- [Typography 🔠](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/ux-ui-checklist/brand/typography.md)
- [FM BetterForms - Quality Assurance](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/fm-betterforms-quality-assurance.md)
- [JavaScript Libraries](https://docs.klai.studio/engineering-reference-docs/software-testing-overview/javascript-libraries.md)
- [Rollbacks and Version Control](https://docs.klai.studio/engineering-reference-docs/rollbacks-and-version-control.md)
- [BF Server Proxy](https://docs.klai.studio/engineering-reference-docs/bf-server-proxy.md)
- [Base code End of Life - 0.8.78-0.8111](https://docs.klai.studio/engineering-reference-docs/base-code-end-of-life-0.8.78-0.8111.md)
- [Setting up Auth0](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0.md)
- [Introduction](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/introduction.md)
- [Getting started](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/getting-started.md)
- [Creating a tenant](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/getting-started/creating-a-tenant.md)
- [Creating Application](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/getting-started/creating-application.md)
- [Additional customizations](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/getting-started/additional-customizations.md)
- [Allowed Callback URLs](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/getting-started/additional-customizations/allowed-callback-urls.md)
- [Creating a Database](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/creating-a-database.md)
- [Choosing different login options](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/creating-a-database/choosing-different-login-options.md)
- [Social Connections](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/creating-a-database/choosing-different-login-options/social-connections.md)
- [Username and password (Auth0)](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/creating-a-database/choosing-different-login-options/username-and-password-auth0.md)
- [Creating new BF Users](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/creating-a-database/choosing-different-login-options/creating-new-bf-users.md)
- [Using Auth0 in an iFrame](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/creating-a-database/choosing-different-login-options/using-auth0-in-an-iframe.md)
- [Configuring FM BetterForms](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/creating-a-database/choosing-different-login-options/configuring-fm-betterforms.md)
- [Additional Notes](https://docs.klai.studio/engineering-reference-docs/setting-up-auth0/creating-a-database/choosing-different-login-options/additional-notes.md)
- [Create an S3 Bucket on AWS](https://docs.klai.studio/engineering-reference-docs/create-an-s3-bucket-on-aws.md)
- [ApexCharts - Getting started](https://docs.klai.studio/engineering-reference-docs/apexcharts-getting-started.md)
- [BF Enterprise Documentation](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation.md)
- [Overview](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/overview.md)
- [Features](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/overview/features.md)
- [Overview Diagram](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/overview/overview-diagram.md)
- [Requirements](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/requirements.md)
- [Env File](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/env-file.md)
- [Setting up the Server](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/setting-up-the-server.md)
- [Installation](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/setting-up-the-server/installation.md)
- [Loading image to a local repository](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/setting-up-the-server/loading-image-to-a-local-repository.md)
- [Starting server](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/setting-up-the-server/starting-server.md)
- [Restarting Policies](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/setting-up-the-server/restarting-policies.md)
- [Scaling up](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/setting-up-the-server/scaling-up.md)
- [Hardware Recommendations](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/hardware-recommendations.md)
- [FM Credentials - Helper file](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/fm-credentials-helper-file.md)
- [How it works](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/how-it-works.md)
- [Development](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/how-it-works/development.md)
- [Downloading environment data](https://docs.klai.studio/engineering-reference-docs/bf-enterprise-documentation/how-it-works/downloading-environment-data.md)
- [BetterForms Error Pages API](https://docs.klai.studio/engineering-reference-docs/betterforms-error-pages-api.md)
- [Introduction](https://docs.klai.studio/engineering-reference-docs/betterforms-error-pages-api/introduction.md)
- [Dynamic Error Page](https://docs.klai.studio/engineering-reference-docs/betterforms-error-pages-api/dynamic-error-page.md)
- [Static Error Page](https://docs.klai.studio/engineering-reference-docs/betterforms-error-pages-api/static-error-page.md)
- [Custom error pages](https://docs.klai.studio/engineering-reference-docs/betterforms-error-pages-api/custom-error-pages.md)
- [Custom error handlers](https://docs.klai.studio/engineering-reference-docs/betterforms-error-pages-api/custom-error-handlers.md)
- [Error Code List](https://docs.klai.studio/engineering-reference-docs/betterforms-error-pages-api/error-code-list.md)
- [BF Streaming API](https://docs.klai.studio/engineering-reference-docs/bf-streaming-api.md)
- [Creating a PWA](https://docs.klai.studio/engineering-reference-docs/creating-a-pwa.md)
- [Introduction](https://docs.klai.studio/engineering-reference-docs/creating-a-pwa/introduction.md)
- [Getting Started](https://docs.klai.studio/engineering-reference-docs/creating-a-pwa/getting-started.md)
- [Making it installable](https://docs.klai.studio/engineering-reference-docs/creating-a-pwa/getting-started/making-it-installable.md)
- [Browser Support](https://docs.klai.studio/engineering-reference-docs/creating-a-pwa/getting-started/browser-support.md)
- [Sending Push Notifications](https://docs.klai.studio/engineering-reference-docs/creating-a-pwa/getting-started/sending-push-notifications.md): NOTE: This page is obsolute due to API changes, see BF Team Support
- [Sending a Push Notification from the API Endpoint](https://docs.klai.studio/engineering-reference-docs/creating-a-pwa/getting-started/sending-a-push-notification-from-the-api-endpoint.md)
- [Adding DOM Header Insertion to be Available for Offline Use](https://docs.klai.studio/engineering-reference-docs/creating-a-pwa/getting-started/adding-dom-header-insertion-to-be-available-for-offline-use.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://docs.klai.studio/readme.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
