Our experts give you the FileMaker best practices that you should follow to get a great FileMaker experience.
FileMaker Development Best Practices
The FileMaker software is used to create custom solutions for several companies. There are some best practices for FileMaker development that one must consider and implement in order to create accessible and robust solutions with FileMaker. Here they are, divided into sections for easy reference.
1. Designing Layouts: Sketch Your Layouts
FileMaker recommends you sketch your layouts on paper or onscreen before creating them in FileMaker Pro. Sketches can help resolve design problems, communicate ideas, and save time.
Identify the Devices That Will Access Your Layout
Here are some points to keep in mind while identifying devices:
- Devices vary by hardware, screen size, and resolution. If you identify which devices will access the layout, you can better design the layout to work with those devices. For example, a layout designed for a desktop computer may not work well on an iOS device.
- To provide an optimal solution for users, design your layout to adapt to each device. Design each layout for a range of device sizes, and configure the auto-resize options for layout objects based on the layout’s height and width. This ensures that the layout expands to fill the entire screen for each device.
- You can direct users to the appropriate layouts with the On Layout Enter script trigger, the Get ( System Platform ) function, and the Go to Layout script step.
Use the Screen Stencils and Positioning Tools
Use a Theme that Suits the Purpose of Your Layout
Optimizing Layout Performance
To improve the overall performance of your layout, remember the following practices:
- In List View and Portals, minimize the number of layout objects displayed simultaneously.
- Minimize the number of portals and tabs in layout.
- Minimize the size and number of shadows.
- Minimize the use of unstored calculations and script triggers.
- Create several layouts with fewer objects rather than one layout with many objects.
- Create custom themes and custom styles rather than overriding existing themes and styles.
2. Creating Tables and Fields
Table Naming
Tables are named using a single word in Title case.
Field Naming
There are two kinds of field names:
- Pascal case ( ex: Contact First Name)
- Underscore case (ex: Contact_First_Name)
Global Fields / Global Variables
All GLOBAL fields are UPPERCASE and one single word.
Summary Fields
Summary fields should have the prefix “Summ”.
Calculation Fields
Differentiate stored and unstored calculation in field name.
Layout Name
Prefix the layout name with Module / Base Table.
Layout Object
Layout objects are prefixed by their corresponding reserved name (Ex: Field.Customer Name)
Default Auto-Enter Fields
These are the Auto-Enter fields already present by default:
- Primary keys with the prefix of “PK”
- Foreign keys with the prefix of “FK”
- Creation Date
- Creation Time
- Creation Account Name
- Creation Timestamp
- Creation User
- Modification Date
- Modification Time
- Modification Account Name
- Modification Timestamp
- modification User
- Creation Host Timestamp (Optional)
- Modification Host Timestamp (Optional)
3. Scripts
While developing scripts, make sure you do the following:
- Add comments on what a script does and add comments for each functionality.
- Specify the Server side script as different in script name and add numbering.
a. Single Comment Steps Within Scripts
b. Script Commenting
# ==================================================
# Purpose: Describe the purpose of the script [short version]
# Parameters: one ; two ; three —————————
# $one = (enum) load, unload
# $two = (string) second parameter
# $three = (num) expected
# —————————
# Called From: (script) any
# Author: Suresh kumar
# Notes: Additional information [long version]
# Revision: Last change: 10/10/18 by Suresh Kumar :: A single comment step with multiple lines
# ==================================================
c. Custom Function Commenting
/* =====================================================
* CustomFunction ( parameter1 ; parameter2 ) * * PARAMETERS: * @parameter1 (text) Input string * @parameter2 (num) Numerical value * RETURNS: * (bool) True or False based on proper * evaluation * DEPENDENCIES: * none * PURPOSE: * Use this function in order to accomplish * most wonderful things possible! * NOTES: * none * REVISIONS: * 10/23/18 - Initial release * 10/27/18 - Modified to fix issue * 10/31/18 - No returning Boolean result * ===================================================== */
Best FileMaker Services from FMDBSolutions
Those were the best practices for FileMaker development. We hope they helped. Feel free to save / bookmark this list for future reference. Also check out our previous post, 2 Ways to Execute SQL in FileMaker, if you want.
FMDBSolutions is a team of custom FileMaker app experts. We offer FileMaker services for many versions of Go, Pro, and Server. Call or email us now for more high-quality advice and FileMaker Consulting. Click below for a free FileMaker consultation.



David Sederquist
Developing my questions and will have in a few days.
David Sederquist
I started using FM in 1990 and have 7412 “Contacts”. When a trade to a destination I’d like to know all the Contacts within selectable distances radially and by car if possible. I actually did this YEARS ago. What I’d like in addition is all the contacts within selectable distances when driving!