App Overview #
Searchable is a 100% Salesforce native managed package built with Lightning Web Components (LWC). It allows users to create reusable, configurable searches across multiple objects with fine-grained control over fields, filters, and results.
Users can share searches with other users, permission sets, or public groups. The app can be used in:
- Utility Bars
- Home Pages
- App Pages
- Record Pages
- Screen Flows
- Tabs
Security #
Searchable respects all org security, including:
- Object-level access (CRUD)
- Field-Level Security (FLS)
- Record-level sharing
Objects, fields, or records users lack access to are automatically excluded from results.
Permission Sets #
- Searchable User – Base permissions to use the app. Includes CRUD access only to searchable__User_Preference__c, which stores user-specific settings.
- Searchable Manager – Includes all user permissions plus the ability to share and manage search configurations.
Lightning Web Components #
| Component Name | Purpose |
| searchable | Main user interface for running searches across multiple objects. |
| searchableSettings | Admin and user interface for configuring field mappings, defaults, and search behavior. |
| searchableLibrary | Central library for saving, sharing, and retrieving search configurations. |
| searchableAdmin | Administrative setup interface for global Searchable configuration. |
| fieldSelectorDualListBox | Utility LWC for selecting fields across objects. |
| dropdownUtility | Helper component for dropdown rendering and interactivity. |
| errorHelper | Logs errors and handles user-facing messages. |
| fieldSelector | Simplified version of field selection control. |
| jsonObjectUtils | Utility for JSON parsing and manipulation within LWCs. |
| objectLookup | Utility for searching and selecting Salesforce objects dynamically. |
| queryBuilder | Visual interface turning drag and drop field selections into SOQL |
| sharingSettings | UI for managing sharing visibility and group access. |
Apex Classes #
| Class | Description |
| EntityDefinitionLookupController | Retrieves object definitions and metadata dynamically. |
| FieldDefinitionController | Returns field definitions for selected objects, respecting FLS. |
| ErrorLoggerController | Centralized Apex error logging and system diagnostic handling. |
| SearchableController | Core business logic for executing dynamic searches. |
| SearchableSettingsController | Handles saving, loading, and parsing of configuration metadata. |
| SearchableAdminController | Admin-level methods for global configuration and defaults. |
| SharingGroupController | Provides sharing options (users, groups, roles, permission sets). |
| All *Test Classes | Unit tests for above classes ensuring test coverage and validation. |
Custom Metadata #
The following custom metadata settings can be managed from the Searchable Admin Setup page or under Setup → Custom Metadata Types → Searchable Global Setting
- Allow base user to create searches
- Allow user to change Search Mode
- Auto-search Active
- Auto-search Delay (Milliseconds)
- Minimum Characters To Search
- Open Dropdowns On Hover
- Output Flow Id Variable Name
- Output Flow Name
- Restricted Objects
- Search Mode Default
Global Config
When in a deployed status, these searches will show in the Library. If building in a sandbox, these can be deployed to production.
Setup → Custom Metadata Types → Searchable Global Config
These searchable__Searchable_Global_Config__mdt records are installed with the managed package to get you started. These templates can be deleted or hidden by updating the Status or Active fields.
- Default Search
- Phone Number
- Sales Team
- Service Team
- Activities
Custom Objects #
| Object | Description |
| searchable__User_Preference__c | Stores each users searches and default search mode |
| searchable__Error_Log__c | Logs system and runtime errors for administrator review. No need to give users access to this object. |
| searchable__Shared_Search__c | Stores searches shared between users or with public groups/permission sets |
Custom Labels #
Configurable text labels for UI components (supporting translation via Translation Workbench):
Get_Button_Label
Library_Heading
Preview_Button_Label
Open_Library_Label
Search_Field_Description
Search_Button_Text
Search_Field_Description
Save_To_Library_Button_Label
Searchable_Heading
Settings_Title
Sharing_Configuration_Label
Filter_Results_Header
Placeholder_Text_Label
Tabs and Pages #
| Tab / Page | Purpose |
| Search | Full tab version of the main app component |
| Searchable_Admin_Setup | Administrative setup page for configuring defaults. |
| User_Preference__c | Tab for user preferences management. |
Permission Sets and Custom Permissions #
| Type | Name | Description |
| Permission Set | Searchable_User | Grants access to use the Searchable app. |
| Permission Set | Searchable_Manager | Grants sharing and advanced configuration permissions. |
| Custom Permission | Searchable_User | The app checks for the presence of this custom permission, which is included in the permission set of the same name. |
| Custom Permission | Searchable_Manager | To simplify management, you can add this custom permission to any existing permission set assigned to your users. |
Custom Metadata and Configuration Highlights #
- Global Settings – Define org-wide defaults (auto-search, min chars, restricted objects).
- Global Configurations – Pre-built search templates for departments or teams.
- User Preferences – Store individual user search defaults and mode selections.
- Error Logs – Track and troubleshoot runtime errors from Apex or LWC.
Summary #
Searchable by AppableCRM is a metadata-driven, admin-friendly search framework designed for Salesforce Sales, Service, and Financial Services Clouds. It enables teams to build and reuse powerful searches anywhere in Salesforce—home pages, record pages, or flows—while maintaining full compliance with your org’s security and governance standards.