Problem Description
DaizyLogik and Grounded Solutions Network were working on making the HomeKeeper app managed package Lightning compatible. The primary custom object in HomeKeeper has nearly 300 fields on its package page layout, a common design in Salesforce Classic for complex objects that allows users to view related fields of a record on one page via formula fields.
One limitation when using Lightning experience is that a maximum of 254 fields can be displayed on a page layout or Lightning page. For an object with more than 254 fields, not all fields can be added to a Lightning layout to be displayed all at once, which means an administrator needs to be selective as to which fields will be shown. Currently, the available workarounds are:
- Use Salesforce Classic
- Remove fields from the layout so fewer than 254 fields are displayed at one time
- Find a Lightning component on the AppExchange that can display fields from an object and ‘break up’ the page in multiple parts. This particular workaround would not work in our case, because of the need to package such a component with the HomeKeeper App, which is not possible.
Paths Explored
During the Lightning readiness development process, DaizyLogik and Grounded Solutions Network evaluated numerous solutions that sought to address this issue :
- Remove some formula fields and most lookup fields from the layout. This still was not enough for the complex formulas on the layout of this custom object to load in Lightning.
- Drastically reduce the number of fields on the most commonly used layout for this custom object. This option was rejected because in order to retain the use of the valuable formula fields, we had to remove over 90 fields, drastically reducing the user experience. This solution also would have reduced HomeKeeper user’s ability to add their own custom fields to the layout.
- Display formula fields as text on a page layout, instead of completing calculations on the page itself. This made little difference when loading the page in Lightning.
- Display only certain stages of fields on one layout, depending on record type. This was too extreme as it would have required completely changing the data model for the sake of Lightning’s current functionality.
- Use the Record Detail component more than once on a Lightning Record page, to display conditionally. We learned that a limitation of the Record Detail component is that the layout cannot be chosen for each an individual component, so the Record Detail could only repeat, which was not useful.
- Create Visualforce pages to display specific formula fields (by putting the Visualforce page in a component on the custom object’s Record Page). This option was rejected because users would not be able to control which formula fields to display, so it put new limitations on the object.
- Create quick actions to place on the layout that hold the most important formula and related fields for specific actions for that custom object. This seemed to work, but with the valuable formula fields remaining on the layout, it was found that the compact layout/record header “timed out” after using the quick action to view or update the fields. Then, the record name and other key fields were not visible until the user refreshed the page. This produced a poor user experience.
- Utilize an existing field set component from the AppExchange within the managed package to show specific Field Sets in a component section. This was not technically possible due to packaging restrictions, but this approach provided us with the idea for our final solution.
Our Solution
DaizyLogik created a Lightning component that displays field values (including formula fields) from a fieldset in a card-like container that can be placed on a Lightning page. The component shows up in the Custom Lightning components tree and can be added to the page.
The component is configurable and it allows administrators to modify both the title that shows up at the top of the card as well as the fieldset containing the fields to be shown. Multiple cards can be added to the Lightning page and each container can display fields from a different fieldset. The component displays the field label, the field value, and the help text for each field. It supports rollup fields, formula fields, numbers, text, and dates displayed in read-only format.
This solution allows users to display more than 300 fields on a single page by breaking up the fields on different such containers. This works particularly well for objects with many formula fields and roll ups. By grouping fields together on different Fieldset Containers, users can better take advantage of the Lightning page real estate by positioning them in the side panel. Developing a new component allowed for it to be packaged with the Homekeeper App and offer a better user experience to end users.
Some of the challenges faced in developing this component were:
- Salesforce provides the Lightning recordViewForm wrapper component for displaying fields in a Lightning component, but unfortunately it does not display formula fields and rollups, which means the team had to implement the functionality from scratch.
- Since the help text functionality is not supported out of the box and had to be implemented in code, the team had to make sure the fields’ help text don’t include special characters or emojis.
Want to learn more? Contact DaizyLogik to learn more about how we can support you with specialized consulting and custom development and help you get the most out of Salesforce.