What Glade runs locally
Capabilities
Use this page to see what Glade runs locally, what runs with named limits, and what still requires Salesforce or a plugin.
- Start with the status legend.
- Check what requires Salesforce before an adoption review.
- Use the checked Apex/runtime reports for method-level detail.
Start here when deciding whether Glade can run a project, a test class, or a local Salesforce API flow. Checked Apex/runtime reports carry the method-level detail. The LWC summary below links to the local shell guide and support table when you need route and module detail.
Stable download: Glade v0.2.14. The generated standard-library counts and searchable rows describe the checked source ledger in this repository state. The download version does not certify these rows or inherit the historical runtime/parity evidence below.
Before you adopt Glade
- Your local loop uses supported Apex parse, check, test, SOQL, DML, trigger, and SObject paths.
- Your test suite can mock callouts and live side effects.
- Your project can tolerate explicit unsupported diagnostics for Salesforce-hosted services.
- You will keep a Salesforce validation gate for features Glade does not model.
- You will use first-party plugins for capability reports and advisory scans instead of expecting those scanners in base
glade --help.
Checked Apex source versions are 65.0, 66.0, and 67.0. Well-formed historical source versions are preserved without checked correctness/parity credit. Execute Anonymous remains limited to the checked source window; each LWC bundle declares an exact supported version. Local HTTP endpoints separately support 60.0, 65.0, 66.0, and 67.0 (default 65.0). Do not change project metadata merely to avoid a version error. See the quickstart version box.
Status key
“Runs locally with limits” is the user-facing capability state. Generated evidence catalogs may use narrower row-level classifications; their counts apply only to the named catalog.
GLADERUNTIME001 marks a body that the Apex parser accepts but the local VM cannot lower. That body is compile-ready for glade check, but it receives no runtime-support credit and local test execution reports UnsupportedFeature.
Generated standard-library catalog
Search checked API rows
- Runs locally
- 269
- Runs locally with limits
- 0
- Requires Salesforce
- 19
288 checked rows match. Showing the first 50.
AccessLevel.withPermissionSetId(String)Runs locallyCreates a local permission-set-scoped user-mode token used by supported SOQL and DML permission checks.
Answers.findSimilar(Question)Runs locallyLocal execution returns a deterministic empty List<Id>; this harness does not implement the hosted similarity-search service.
ApexPages.MessageRuns locallyConstructor, getters, add/get/has message state, and Visualforce action reset behavior are modeled.
ApexPages.addMessageRuns locallyStores page messages on the VM instance.
ApexPages.addMessage(ApexPages.Message)Runs locallyStores page messages on the VM instance.
ApexPages.addMessages(Exception)Runs locallyConverts supported exception values into VM-local page messages.
ApexPages.addMessages(Object)Runs locallyConverts supported exception and message values into VM-local page messages.
ApexPages.currentPageRuns locallyReturns a deterministic local PageReference.
ApexPages.currentPage()Runs locallyReturns the VM-local PageReference.
ApexPages.getMessagesRuns locallyReturns VM-local page messages.
ApexPages.getMessages()Runs locallyReturns VM-local page messages.
ApexPages.hasMessagesRuns locallyChecks VM-local page messages.
ApexPages.hasMessages()Runs locallyChecks VM-local page messages.
ApexPages.hasMessages(ApexPages.Severity)Runs locallyChecks VM-local page messages by severity.
Visualforce full rendering lifecycleRequires SalesforceFull Visualforce rendering lifecycle requires the hosted renderer and is fenced by PageReference rendering diagnostics locally.
Approval.process hosted approval engine routingRequires SalesforceHosted criteria evaluation, queue/group approver routing, and live approval service routing require Salesforce approval services.
Approval.process(Approval.ProcessRequest)Runs locallyRuns a seeded local ProcessDefinition, ProcessNode, ProcessInstance, and ProcessInstanceWorkitem engine for submit, approve, and reject request shapes.
Approval.process(Approval.ProcessRequest, Boolean)Runs locallyRuns the seeded local approval engine with allOrNone error shaping for submit, approve, and reject request shapes.
Approval.process(List<Approval.ProcessRequest>)Runs locallyRuns ordered local submit and workitem request lists and rolls back earlier successful local approval records when the default allOrNone path fails later in the list.
Approval.process(List<Approval.ProcessRequest>, Boolean)Runs locallyRuns ordered local submit and workitem request lists, returning per-request errors when allOrNone is false and rolling back the local list transaction when allOrNone is true.
Assert.areEqualRuns locallyRoutes through local assertion failures with optional message text.
Assert.areNotEqualRuns locallyRoutes through local assertion failures with optional message text.
Assert.failRuns locallyRaises local System.AssertException with optional message text.
Assert.isFalseRuns locallyRoutes through local assertion failures with optional message text.
Assert.isNotNullRuns locallyRoutes through local assertion failures with optional message text.
Assert.isNullRuns locallyRoutes through local assertion failures with optional message text.
Assert.isTrueRuns locallyRoutes through local assertion failures with optional message text.
Boolean.valueOf(Object)Runs locallyConverts supported local field/object values into Boolean values.
Boolean.valueOf(String)Runs locallyConverts strings to Boolean using Apex-shaped true/false parsing.
BusinessHours malformed local holiday metadataRequires SalesforceMalformed seeded holiday metadata raises a stable UnsupportedFeature diagnostic naming the unsupported local field shape.
BusinessHours.add(Id, Datetime, Long)Runs locallyRuns deterministic local week-schedule math from seeded BusinessHours, Holiday, OperatingHours, and OperatingHoursHoliday records with timezone handling, all-day closures, partial-day closures, recurring holidays, and linked holidays.
BusinessHours.addGmt(Id, Datetime, Long)Runs locallyRuns deterministic local calendar math from seeded BusinessHours, Holiday, OperatingHours, and OperatingHoursHoliday records with GMT Datetime output.
BusinessHours.diff(String, Datetime, Datetime)Runs locallyCounts deterministic local business milliseconds across seeded week schedules, timezones, all-day closures, partial-day closures, recurring holidays, and linked holidays.
BusinessHours.isWithin(String, Datetime)Runs locallyChecks seeded local week schedules, timezones, Holiday closures, OperatingHoursHoliday links, partial-day closures, and recurring holidays.
BusinessHours.nextStartDate(Id, Datetime)Runs locallyFinds the next deterministic local start from seeded week schedules, timezones, Holiday closures, OperatingHoursHoliday links, partial-day closures, and recurring holidays.
Crypto.decryptWithManagedIVRuns locallyManaged-IV AES-GCM decryption, including additional authenticated data, is executable in the local runtime; ciphertext values remain unstable.
Crypto.encryptWithManagedIVRuns locallyManaged-IV AES-GCM encryption, including additional authenticated data, is executable in the local runtime; ciphertext values remain unstable.
Crypto.generateDigestRuns locallyMD5, SHA-1/SHA1, SHA-256/SHA256, SHA-384/SHA384, SHA-512/SHA512, and SHA3-256/384/512 digests are fixture-pinned, with Salesforce-shaped SecurityException diagnostics for unknown names.
Database.UnitOfWorkRuns locallyQueues local DML operations and applies them on commitWork; discardWork drops pending local work.
Database.convertLeadRuns locallyLocal lead conversion creates Account, Contact, and optional Opportunity records and updates Lead conversion fields.
Database.countQueryRuns locallyDynamic SOQL count execution against the local org with local AccessLevel parsing.
Database.countQueryWithBindsRuns locallyBind-map dynamic SOQL count execution with local AccessLevel parsing.
Database.deleteRuns locallyDML pipeline with result/error shapes and local AccessLevel parsing for supported SObjects.
Database.deleteAsyncRuns locallyLocal async delete alias runs through the DML pipeline and returns DeleteResult shape.
Database.deleteImmediateRuns locallyLocal immediate delete alias runs through the DML pipeline and returns DeleteResult shape.
Database.emptyRecycleBinRuns locallyLocal hard-delete result shape with allOrNone rollback for supported SObjects.
Database.executeBatchRuns locallyQueues local Batchable jobs and drains start/execute chunks/finish during Test.stopTest.
Database.getAsyncDeleteResultRuns locallyReturns materialized local DeleteResult values and rejects unknown async locator strings instead of fabricating pending results.
Database.getAsyncLocatorRuns locallyReturns deterministic VM-local locator strings for local result and locator objects.
Database.getAsyncSaveResultRuns locallyReturns materialized local SaveResult values and rejects unknown async locator strings instead of fabricating pending results.
Counts and rows come from docs/STDLIB_COVERAGE.md. Use the complete checked ledgers below for evidence and regression-test links.
Release evidence and scope
| Release / source | Evidence | Denominator and boundary | Receipt |
|---|---|---|---|
v0.2.14 — b974901a3e0ad48d6c517cff894601fa5e242000 | Current stable distribution; exact Required CI and Salesforce correctness authority for the product/Tools pair | Per-archive checksums, 128–129-component SBOMs, and attestations; not blanket parity or a new corpus result | Release assets |
v0.2.13 — 04c55539045d782ce56e2e5d92d4fb637ba03741 | Published distribution | Per-archive checksums and attestations; not a new corpus/parity result | Release assets |
v0.2.12 — 3a454dee3cb35c604cb1bf25e6a8972b63dd7c81 | Tagged local/corpus and Salesforce checks | 12,315 and 782 private tests; 86 public projects; 475 Salesforce checks, with their distinct accounting | Tagged validation |
| v0.2.11 | Frozen surface snapshot | 184 required surfaces; overlapping compile/test/runtime/non-parity sets described below | Bound source pair and receipts |
No blanket runtime/parity certification is implied by this table. The linked receipts carry exact product/Tools inputs where applicable; never combine results from different candidates. For the v0.2.12 release-note link that omitted docs/, use the tagged-validation link above. Historical receipts remain unchanged.
Published v0.2.11 surface snapshot
The following counts are the published v0.2.11 surface snapshot from a frozen two-repository private corpus. Public artifacts identify the repositories only as private-corpus-001 and private-corpus-002.
- 321 observed usage keys reconciled with zero unknown usage.
- 184 required surfaces were derived from sealed authoritative inputs.
- 178 compile-ready and test-ready surfaces have required local proof.
- 54 runtime-parity-ready surfaces have fresh Salesforce proof.
- 107 explicit zero-credit non-parity outcomes remain visible.
- Six hosted-deferred surfaces remain outside compile, test, and runtime-parity readiness in this snapshot.
These outcomes overlap and are not a claim of blanket Salesforce parity. Open the self-contained assurance explorer to filter by namespace, repository, disposition, evidence, exclusion, or text. The exact candidate, receipt hashes, replay result, and interpretation rules are recorded in the release assurance note.
Tagged v0.2.12 product validation
The tagged v0.2.12 product commit 3a454dee3cb35c604cb1bf25e6a8972b63dd7c81 (binary SHA-256 9bd1d8efbeb53af707ec5df649103f3f462fc800410922ce54f3b89a67c5bf83) was checked separately from the published v0.2.11 surface snapshot.
private-corpus-001: check exit 0/0 diagnostics; tests 12,315/12,315 with 0 failed/compile/runtime/unsupported.private-corpus-002: check exit 0/0 diagnostics; tests 782/782 with 0 failed/compile/runtime/unsupported.- Public corpus: 86 projects, 40 expected/40 observed diagnostics, zero missing/unexpected/unclassified, and an exact identity multiset match. Public diagnostics are the known baseline, not passes.
- Salesforce tagged-release validation: 475/475 pass, zero fail/inconclusive, and cleanup PASS.
This final tagged validation is bounded to its exact receipts and does not claim blanket Salesforce parity.
Runs locally
These areas are the main local development contract.
| Area | What to expect |
|---|---|
| Apex parsing and project indexing | Large Salesforce DX projects, nested types, namespace tokens, stable parse diagnostics, and case-insensitive rejection of all 121 Salesforce reserved words in non-method source identifier contexts. See Apex language compatibility. |
| Project configuration and package contracts | glade.yml and Salesforce DX discovery cover package dirs, default namespace, namespace remaps, source-backed managed package dependencies, captured package artifacts, package shims, org features, storage, and local limits. |
| Semantic checks | Checked annotation, declaration, type, inheritance, trigger, statement, SOQL/SOSL, API-version, local, assignment, overload, and return-path rules, with token ranges for the supported VM subset. |
| Local Apex tests | @isTest, @TestSetup, isolated org state, static reset, governor windows, async drain, stack frames, JSON, and JUnit output. |
| SOQL, DML, triggers, and SObjects | Static and dynamic SOQL, DML statements, Database.* result objects, trigger context, schema-backed SObjects, and local SQLite-backed storage. |
| Local API server | Salesforce-style REST discovery, SObject CRUD, query/queryAll, limits and record counts, userinfo stubs, Tooling executeAnonymous, local Tooling source/schema metadata queries, Composite sObject insert, Composite Batch, Tree, and Graph local requests, Bulk API v2 simple query jobs, layout/default-value metadata, metadata job status, reset endpoints, and optional SQLite persistence. |
| Editor and debug tools | LSP diagnostics, symbols, hover, completion, rename, semantic tokens, DAP stepping, watch mode, and trace/profile reports. |
Runs locally with limits
These areas cover useful local test paths. They are not exact Salesforce service behavior.
| Area | Current limit |
|---|---|
| Core standard library | Common System, String, date/time, math, assertions, labels, URLs, user info, and collection paths are covered. Method-level details live in the standard-library report. |
| Schema and describe APIs | Local describe supports checked object, field, record type, child relationship, data category metadata, and generated standard-object metadata. Hosted full-org metadata services remain outside the local model. |
| JSON, regex, encoding, and crypto | Serialization, parsing, regex, base64, hex, URL encoding, and digest rows are supported for the checked local contract. |
| HTTP, SOAP, and callout mocks | Request and response mock paths work for tests. Glade does not perform live outbound service calls. |
| Messaging | Local message and result objects, template rendering, attachment retrieval, send options, and invocation counts are covered. Glade does not deliver email, push, or other live messages. |
| Visualforce controller and page rendering | Preview feature. PageReference, messages, current page, controller helpers, local /apex/<PageName> routes, common standard components, page lifecycle paths, signed view state with CSRF checks, transient field omission, static resources, uploads, remoting envelopes, Lightning Out/LWC dependency diagnostics, AJAX refresh paths, and local PDF fallback output are modeled for local development. Salesforce chrome, every component edge, exact lifecycle timing, Apex PageReference.getContent* output, and byte-for-byte PDF output remain outside the local contract. |
| Local LWC workbench and routes | Preview feature. / and /lwc open the Workbench Console with Component Lab and Page Workbench, /lwc/builder opens the page composer, and preview routes cover components, record/app/home pages, tabs, actions, utility bars, Flow screens/actions, configured community pages, and direct community components. |
| Local LWC data and services | Preview feature with local-data limits. Apex wire, selected LDS/UI API shims, local record mutations, schema/label/resource/user/community modules, bounded managed-content reads, navigation, LMS, toast/resource loading, lightning/refresh, Flow events, console and utility local models, practical base-component shims, and packaged SLDS 2 and classic SLDS assets run through local models. Experience Builder mutations and learning-platform APIs reject explicitly and remain hosted-only. See Local LWC Shell and docs/LWC_SUPPORT.md. |
| Visualforce Lightning Out for LWCs | Preview feature with limits. Visualforce-backed tab redirects and /apex/<PageName> Lightning Out hosts use the shared local LWC runtime. Hosted Lightning Out lifecycle timing and exact Salesforce chrome remain Salesforce checks. |
| Search and SOSL helpers | Local deterministic Search and SOSL rows are supported. Hosted ranking, analyzers, synonyms, and external indexes are not modeled. |
| Test helpers | Tracked Test.* local helper rows are supported. Hosted service accounting, packaged-resource expansion, and live External Service execution remain explicit gaps. |
| Local test harness and request context | Request/UIRequest context, install/uninstall hooks, sandbox post-copy helpers, scheduled Apex, QuickAction DTOs, BusinessHours calendars and holidays, seeded approval routing, and TrailblazerIdentity helper calls have deterministic local models. Live hosted engines are not contacted. |
Requires Salesforce
Check this list before relying on Glade for a project.
| Area | Why it is outside the current local contract |
|---|---|
| Live Salesforce auth and sessions | The local server exposes local stubs. It does not implement real Salesforce OAuth, session validation, or org identity services. |
| Live service APIs | Answers zone search, password reset output, live identity/admin mutation, and hosted process/service engines require Salesforce-hosted data or execution. |
| Exact hosted Visualforce behavior | Glade serves local Visualforce pages for development. It does not promise Salesforce-hosted chrome, every component edge, exact lifecycle timing, Apex PageReference.getContent* output, every remoting/browser behavior, or byte-for-byte PDF output. |
| Exact hosted Lightning Experience behavior | The local LWC shell does not promise Salesforce-hosted app chrome, hosted permission assignment, full UI API and GraphQL semantics, every lightning-* base component edge, exact SLDS fidelity, Flow Builder behavior, live EMP streaming, hosted utility chrome, or every Lightning Out edge. Console workspace APIs and utility-bar APIs have local models for development; exact hosted console behavior remains a Salesforce check. The package-exposed base-component module surface resolves locally with practical shims, including common button/card/layout/formatted-number contracts, with a small source-backed allowlist for simple base components. |
| REST and Tooling APIs outside the local baseline | The local API server covers the checked local baseline, including Composite Batch, Tree, and Composite Graph local requests over supported subrequests, Bulk API v2 simple query jobs, layout/default-value metadata, metadata job status, and local Tooling responses. Bulk API locator paging, Streaming/PubSub, GraphQL, live metadata deploy/retrieve, live auth, and live org-only Tooling APIs remain outside the local contract. |
| Live outbound side effects | Real callouts, delivered email, push notifications, and external service mutations are not performed. Tests should use local mocks and result objects. |
| Exact Salesforce governor accounting | Glade tracks deterministic local limits. Salesforce's full production accounting and every platform-specific counter are not complete. |
Example diagnostic:
UnsupportedFeature: unsupported call "Search.unavailable local search/SOSL surface"Area details
| Area | Status | Notes |
|---|---|---|
| Apex front end | Runs locally | Parser, project loader, symbols, semantic checks, LSP, and diagnostics form the starting point. The checked compiler contract contains 400 language-rule rows. |
| Runtime and tests | Runs locally | VM execution, local tests, SObjects, SOQL, DML, triggers, async drain, and local storage are the core contract. |
| Local Salesforce API | Runs locally | Useful for local REST, SObject CRUD/query, record count, Tooling executeAnonymous, and local source/schema metadata flows. It is not a hosted-org replacement. |
| Standard library | Runs locally with limits | The checked standard-library report has 267 supported rows, 19 unsupported rows, and 0 partial rows. |
| Platform service APIs | Runs locally | Deterministic DTO and harness rows are modeled when the capability report says supported. Hosted service execution stays explicitly unsupported. |
Standard library families
Counts come from the checked standard library capability report in this repository state.
| Family | Status | Rows |
|---|---|---|
Database | Runs locally | 37 supported / 37 tracked |
| Date, Datetime, Time, TimeZone | Runs locally | 26 supported / 26 tracked |
| String, Decimal, Boolean, Math | Supported local rows, Decimal division gap | 31 supported, 1 unsupported / 32 tracked |
| System, Assert, Limits | Supported local rows, hosted gaps | 17 supported, 3 unsupported / 20 tracked |
| Schema and SObject | Supported local rows, hosted gaps | 7 supported, 1 unsupported / 8 tracked |
| Test helpers | Supported local rows, hosted gaps | 28 supported, 3 unsupported / 31 tracked |
| JSON, Pattern, EncodingUtil, Crypto | Runs locally | 17 supported / 17 tracked |
| ApexPages and PageReference | Supported controller rows, hosted rendering gaps | 15 supported, 2 unsupported / 17 tracked |
| HTTP and WebServiceCallout | Supported mock rows, live transport gaps | 6 supported, 2 unsupported / 8 tracked |
| Messaging | Supported local rows, hosted delivery gaps | 6 supported, 2 unsupported / 8 tracked |
| Search and SOSL helpers | Supported local rows, hosted ranking gap | 11 supported, 1 unsupported / 12 tracked |
| UserInfo, URL, Label, and TrailblazerIdentity | Broad local capability | 24 supported / 24 tracked |
| Type, FeatureManagement, and Exception | Supported local rows, hosted package gap | 8 supported, 1 unsupported / 9 tracked |
| Local test harness and request context | Supported local rows, hosted and malformed-input gaps | 32 supported, 2 unsupported / 34 tracked |
| Hosted-service and platform boundary rows | Requires Salesforce, plus stable diagnostics | 2 supported, 1 unsupported / 3 tracked |
The local test harness and request-context group includes Approval list processing, BusinessHours, QuickAction, Request, UIRequest, Sandbox, Schedulable, and AccessLevel rows. The hosted-service boundary group includes the deterministic local Answers stub, the ResetPasswordResult row, and the stable UnsupportedFeature diagnostic row.
Capability claims
The checked capability status and standard-library report now show no partial rows. Every remaining hosted-only behavior is split into an explicit unsupported row.
| Measure | Rows |
|---|---|
Capability features marked supported | 31 |
Capability features marked partial | 0 |
Capability features marked unsupported | 2 |
Standard-library rows marked supported | 269 |
Standard-library rows marked partial | 0 |
Standard-library rows marked unsupported | 19 |
Drill down
Use this page first, then open the method-level report when you need the checked row.
- Method-level standard-library rows:
docs/STDLIB_COVERAGE.md - Compatibility dashboard:
docs/COMPATIBILITY_DASHBOARD.md - Known gaps:
docs/KNOWN_GAPS.md - Standard-object coverage:
docs/STANDARD_OBJECT_COVERAGE.md - Standard-object schema:
docs/STANDARD_OBJECT_SCHEMA.md - Local LWC shell guide: Local LWC Shell
- Release and plugin boundaries: Security & trust
One rule keeps the marks honest. Do not call an API supported until the row has implementation and compatibility evidence.