New Forms Are Now Live in Quickbase Mobile!
We’re excited to share that as of April 21, the new forms experience in Quickbase is now generally available on mobile! This launch marks a significant milestone in our mission to provide a seamless, consistent, and powerful experience to users—no matter where they work or what device they use. Why This Matters Historically, building for mobile in Quickbase presented a number of challenges. App Admins often had to create and manage separate legacy mobile forms to provide a usable experience on smaller screens. For end users, the experience was often inconsistent. Legacy mobile forms came with limited layout options, lacking the flexibility to organize content using columns, or tabs. Form rules and workflows sometimes behaved differently than expected, and key functionality—like viewing embedded reports directly on the form—wasn’t available on mobile at all. As a result, mobile usage often required workarounds, compromises, or shifting tasks to desktop, slowing down teams who needed to work when they were away from the desk— until now. One Form, Multiple Devices The new forms experience is now fully responsive. Builders can design a single form that automatically adapts to desktop, tablet, or mobile, with no extra configuration required. Whether users are approving invoices, pulling up customer contacts, submitting support cases, or updating project details, the experience is consistent and intuitive across the board. What’s New for Mobile Here are a few key enhancements you’ll notice right away: 🔹 Fully Responsive Form Canvas The layout automatically adjusts to the screen size and orientation, while maintaining the structure and design you built on desktop. Forms are organized with pages, sections, columns, tabs, and steps, and Quickbase automatically adapts the layout to fit the device's screen. For instance, on mobile devices, columns stack vertically to ensure optimal readability and usability. On tablets—especially in landscape mode—forms can display multiple columns side by side, taking full advantage of the larger screen and offering a more spacious, desktop-like layout. Additionally, tabs and steps help break down longer forms into manageable sections, making it easier for mobile users to navigate complex forms without feeling overwhelmed. Users can quickly swipe through form steps or tap between tabs, maintaining focus while completing tasks efficiently. 🔹 Optimized Field Interactions We’ve reimagined how field components work on mobile. From dropdowns to date pickers, every interaction is optimized to feel natural on a smaller screen, while retaining the power of the desktop version. For example, multiple-choice fields are presented in modals, allowing users to search and select options efficiently. 🔹 Dynamic Form Rules & Workflows Form rules and formulas now behave just as they do on desktop. We’ve been on a mission to eliminate the need for mobile-specific workarounds, and this update is a step forward. Dynamic form rules now apply across devices, so the logic you’ve built for desktop users works just as smoothly for those on the go. 🔹 Embedded Reports on Mobile For the first time, embedded reports are displayed directly on mobile forms, giving users real-time access to the related data they need to make decisions and take action on the go. While some functionalities like grid edit and exporting to CSV are not supported on mobile, users can view reports, search, add new records, edit or view individual records, and delete records, depending on their permissions. 🔹 Support for Custom Workflows New forms on mobile now support more advanced and flexible workflows. App admins can confidently use table-level settings like “Auto save when redirected away”, the custom CSS class SaveBeforeNavigating, and URL parameters such as ifv=1 and hs=1 to hide native Save and Cancel buttons. These tools enable customized navigation, smoother inline saves, and fully tailored form experiences—all while maintaining mobile compatibility. Assigning Forms for Mobile App admins can assign the latest, mobile-friendly version of forms to specific user roles using the "View/Edit/Add Form (Mobile)" column from Forms Settings, ensuring that users see the appropriate form on their mobile device. In some cases, assigning a simplified, mobile-specific form may be beneficial. It allows you to reduce friction, minimize cognitive load, and create a faster, more focused experience for users – especially for those who only need to complete a subset of fields or perform quick tasks on the go. Alternatively, if admins prefer to use the same forms across desktop and mobile, they can select “Use full site forms”. A Better Experience for Builders and End Users With this release, builders no longer need to build two versions of a form, and end users don’t have to adapt to a stripped-down mobile layout. The result? Faster time to value and more efficient teams. Ready to Get Started? If you’re already using new forms on desktop and you have selected the option “Use full site forms” for mobile, you don’t have to lift a finger—your mobile experience is ready to go. Just open your app in the Quickbase mobile app (version 1.68 and above) or browser and experience it for yourself. If you’re not using new forms on desktop yet, now is the perfect time to start. By switching to new forms, you’ll not only unlock a modern, flexible form-building experience on desktop—you’ll also ensure your app is mobile-ready. 💡 Want to learn more? Check out the full documentation: Assign forms for mobile Understand the form canvas and layout on mobile Form field types and components on mobile What’s Next The launch of new forms on mobile is a big milestone—but we’re not done yet. In the coming months, we’ll be rolling out additional capabilities including: QR/Barcode scanning Next/Previous record navigation, making it easier to move between records Timezone helper, and more!113Views1like0CommentsDuplicate Record Checker
Hello, I have a form with two fields named "Year" and "Quarter". The Quarter field is a dropdown with options such as "Q1", "Q2", etc. The Year field is a numeric field where users enter a year (i.e., 2025). What I need help with is displaying a error message when users have duplicate Quarters for a single given year. Example: If a user has a record with "Q1" for the Quarter and "2025" for the Year, they cannot enter another record for 2025 with Q1. They may only select "Q2", "Q3" or so on for 2025. Hopefully I explained this well enoguh for someone to understand. If I can elaborate more, please let me know.Solved56Views0likes5CommentsCreate multiple records on one form
We have tables Company, Contact, Team Member, Opportunity, and Activity. An Activity is something that a Team Member does (for example a phone call or a meal) with a Contact from a Company. It may or may not relate to an Opportunity that is in work with (the same) Company. Right now we have a regular QuickBase form to add an Activity when needed. There are conditional dropdown fields on it so that once you pick a Company, it only shows the relevant Contacts and Opportunities. If you need to add a new Company and/or a new Contact in order to complete entering your Activity, you can. But sometimes, when an Activity is an event like a big dinner with multiple Contacts (maybe from multiple Companies) then the users have to go through the process multiple times. What they want is a single form where they enter the date and type of Activity, then add multiple Contacts (maybe from multiple Companies) and when they press enter - voila, multiple Activities are created - one for each Contact. I can't see how to do this in native QuickBase. Is it possible with legacy or new forms? Or is this a custom code thing?27Views0likes1CommentCan I have 1500 or more fields in one form in one table, spread across multiple pages?
I will be creating a new app. In one table, is it possible to have a form with around 50 pages, and each page would have anywhere from approx 10 to 50 fields (probably only a few pages would have 30-50 fields, most pages would have 10-20). Therefore, the total number of fields in the form would be anywhere from approx 1,000 to 2,500. Of that total, around 200 fields would be derived fields (formulas). I would also like to have form rules that hide certain pages based on a field selection. NOTE: for each record, only about 60-100 fields would be populated. Are there limits that would prevent me from adding that many fields? Or could so many fields cause performance or other issues, like problems with form rules functioning properly? While it is possible for us to pull out most fields into other tables and connect to the main table using relationships, for our users ease of use and ease of reporting, we are hoping to contain all fields in one form in one table.Solved33Views0likes4CommentsHow to create form rule to hide pages based on value selected in dropdown fields
I have a form with multiple pages. The first page has the main fields, and remaining pages have additional fields. Is it possible to hide or show certain pages based on the value selected in a field on page 1? What I would like to happen: If Service field has value "A" then hide Page 3, Page 4 and Page 5. If Service field has value "B" then hide Page 2, Page 4 and Page 5. If Service Field has value "C" then hide Page 2, Page 3 and Page 5. Etc. or If Service field has value "A" then show only Page 1 and Page 2. If Service field has value "B" then show only Page 1 and Page 3. Etc.18Views0likes2CommentsRequired Fields Not Validating on Edit Form with Custom Save Button
I have required fields in one of my forms. I'm using a custom button to save the form. When I click the "Save" button, it checks for the required fields in the Add Form, but it doesn't perform the validation in the Edit Form. How can I ensure that required field validation works on the Edit Form as well when using the custom save button? This is the custom button formula: // Define the container style var text container = "display: flex;" & // Use flexbox layout for arranging children "justify-content: center;" & // Center all child elements horizontally "gap: 17px;"; // Add space between child elements // Define the subcontainer style var text subcontainer = "display: flex;" & // Use flexbox layout for subcontainer "justify-content: center;"; // Center all child elements horizontally // Define the button container style var text buttonContainer = "width: 130px;" & // Set fixed width for the button container "display: flex;" & // Use flexbox layout "flex-direction: column;" & // Stack buttons vertically "gap: 10px;" & // Add space between buttons "padding: 5px 3px;" & // Add inner spacing (5px top/bottom, 3px left/right) "border-radius: 8px;"; // Round the container's corners // Define the orange button style var text orangebutton = "border-radius: 40px;" & // Fully round the button's edges "color: #ffffff;" & // Set the button's text color to white "background-color: #f8761f;" & // Set the button's background to orange "font-family: Roboto, sans-serif;" & // Use Roboto font with sans-serif fallback "font-weight: 700;" & // Make the text bold "font-size: 12px;" & // Set the text size "padding: 12px 40px;" & // Add spacing inside the button (12px vertical, 40px horizontal) "display: inline-block;" & // Ensure the button behaves like an inline-block element "line-height: 20px;" & // Set the line height for text "text-decoration: none;" & // Remove underline from the button text "text-align: center;"; // Center the text inside the button // Define the black button style var text blackbutton = "border-radius: 40px;" & // Fully round the button's edges "color: #ffffff;" & // Set the button's text color to white "background-color: #252525;" & // Set the button's background to black "font-family: Roboto, sans-serif;" & // Use Roboto font with sans-serif fallback "font-weight: 700;" & // Make the text bold "font-size: 12px;" & // Set the text size "padding: 12px 40px;" & // Add spacing inside the button (12px vertical, 40px horizontal) "display: inline-block;" & // Ensure the button behaves like an inline-block element "line-height: 20px;" & // Set the line height for text "text-decoration: none;" & // Remove underline from the button text "text-align: center;"; // Center the text inside the button // Define the Record ID or placeholder if not available var text rid = If([Record ID#] > 0, // Check if a Record ID exists ToText([Record ID#]), // Use the existing Record ID "%%rid%%" // Placeholder for new records ); // Define the close window URL var text closewindow = URLRoot() & "db/" & AppID() & "?a=dbpage&pageid=11"; // URL to redirect to page 11 after an action, which closes the popup page // Construct the Submit URL var text Submit = URLRoot() & "db/" & Dbid() & // App root and database ID "?a=API_EditRecord&rid=" & $rid & // API call to edit a record using Record ID "&_fid_23=" & URLEncode("Pending FP&A Approval") & // Update status field with "Pending FP&A Approval" "&_fid_25=2" & // Update field 25 with value 2 "&_fid_26=1" & // Update field 26 with value 1 "&rdr=" & URLEncode($closewindow); // Redirect to the close window URL after editing // Construct the HTML structure "<div style='" & $container & "'>" & // Outer container with flexbox layout "<div style='" & $subcontainer & "'>" & // Subcontainer centered within the outer container "<div style='" & $buttonContainer & "'>" & // Button container for Cancel button "<a style='" & $blackbutton & "' href='" & $closewindow & "'>Cancel</a>" & // Cancel button styled as black "</div>" & If([Payment Request Status] = "New", // Conditional logic for Submit or Save button "<div style='" & $buttonContainer & "'>" & // Button container for Submit button "<a class='SaveBeforeNavigating' data-replaceRid=true style='" & $Orangebutton & "' href='" & $Submit & "'>Submit</a>" & "</div>", "<div style='" & $buttonContainer & "'>" & // Button container for Save button "<a class='SaveBeforeNavigating' data-replaceRid=true style='" & $Orangebutton & "' href='" & $closewindow & "'>Save</a>" & "</div>" ) & "</div>" & "</div>" This is the code page content: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <script> window.close(); </script> <body> </body> </html> Any help would be greatly appreciated!55Views0likes4CommentsHow can I avoid saving a form if I need the user to create another record in a related table first?
Hi I need support with the following issue, I have created a form. This form contains a button to add more product requests. But many times users do not add products to the request and the request remains open and empty, unattended and incomplete. Until the user comes to upload products and in the form selects that no more products need to be added, Quickbase executes rules and notifications to complete this multiple or single product order as completed and processes the request. The problem is that I don't know of a way to prevent them from creating and saving the empty product order. Is there any way to achieve that result?51Views0likes4CommentsHelp with Lookup Fields from Multiple Parent Tables in Quickbase Form
Hello, I have a Quickbase app where a single child table is connected to three separate parent tables. Each parent table represents a different employee group, and the child table is set up to pull employee information from all three. In the form for the child table, I want to be able to look up and select employees from any of the three parent tables. However, I can only select from the first parent table I connected—its lookup field is active. The lookup fields for the other two parent tables appear grayed out and are not selectable, even though they are all connected in the same way, using the employee name as a lookup field. As shown in the screenshot, only the first table’s name field is selectable, while the others are disabled. What might be causing this behavior, and how can I make all three lookup fields usable in the form? Thank you!Solved31Views0likes3CommentsScript a button to print current record to DYMO
I'm finally moving a product pricing process from EXCEL into QB. The last step is giving a user(s) the ability to print product labels from QB to a local DYMO printer. What I had envisioned was a button on the record form that would take a half dozen or so values in the record and push them as values for the label. Has anyone here done this already? If so, are you willing to share any of your scripting? My JavaScript experience is extremely limited. This link is an example of printing to a DYMO via a JavaScript library, but I don't really understand how to set the values of QB fields as the values to send to the printer. http://developers.dymo.com/2010/06/02/dymo-label-framework-javascript-library-samples-print-a-label/ Any help would be greatly appreciated.28Views0likes6CommentsEmployee list
Hello, I have a multi-select text field with employee name choices that is going to be archived and no longer used. In that fields place I will be adding fields that relate back to a connected employee roster table for the user to locate and pull the info from, however, I'm wondering if there is a way to have the new field populate based off the names that are currently already in the multi-select field?21Views0likes2Comments