# 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)
