[JedIDE] Plugin for handy Force.com development with JetBrains IDEs

Compatible with: IntelliJ IDEA PhpStorm WebStorm PyCharm RubyMine AppCode CLion Gogland Rider Android Studio
57 709
JedIDE is a SalesForce Apex IDE and plugin for IntelliJ platform. JedIDE simplifies development and deployment of Apex, VisualForce and other Force.com metadata types. JedIDE is available in two versions:
  • as a IntelliJ IDEA plugin
  • standalone IDE based on IDEA Community Edition


The following features are available:
  • Offline validation (robust parser, type inference, detects unresolved references)
  • Incremental deploy/retrieve, smart check deploy conflicts
  • Code insight (Inspections, Intentions, Quick Fixes, Refactorings, Live Templates, Safe delete)
  • Rename refactorings
  • Code completion (postfix, statements, punctuation, type inference based)
  • Powerful navigation (Find In Path, Find Usages, Go To, Show Hierarchy)
  • Execute anonymous
  • Test framework
  • Log viewer
  • Code generation utils
  • Code coverage
  • Foldings
  • Structure view
  • Code formatting

Download plugin

Recent change notes


  • Lightning:
    • 'View' value provider support inside Lightning application
  • Visualforce:
    • Provide resolve/compleion/validaion for local variable from apex:pageBlockTable@var
  • QuickFixes
    • Attribute created via 'Create attribute..' quickfix places on-the-top of class (like fields in class)
  • Completion:
    • Camel-case completion for tags and attribute names in Lightning and Visualforce
    • Improve completion support for global variables in Apex (Page, Label, Component etc.)
    • Completion popup suggests upper-cased visualforce function names
    • Completion item for lightning attribute contains info about attribute type and required/non-required marker
    • CSS classes completion works for lightning tag attributes
    • Complete CSS classes from .css lightning bundle part
  • Inspections:
    • IDE now knows which attribute names in Lightning are case sensitive and highlights the errors
    • Suppress 'Expression statement is not assignment or call' inspection in lightning js Controller and Helper files
  • Live Templates:
    • 'prefix__ManagedObject__c.selall' live template generate query with fields with manage package prefix
  • Bugfix:
    • Red code: 'Element label is not allowed here' in fresh Account.object just after retrieve
    • 'Chose destination directory' is shown several times when more that one aura folders selected and context menu is called
    • Ged-rid from unexpectedly resolved entities in lightning/visualforce expressions
    • fix false positive errors in "SOQL For loops" that use a list as an for-each param
    • Throwable "PsiElement should be as ApexPsiTypedElement" appears in event log during editing for loop statement
    • Wrong indication of an error in APEX code for Database.DuplicateError class
    • Plugin don't see custom fields of objects and custom settings
    • Project creation UI is not resized vertically on dialog resize
    • When 'extends=' typed in component, error occurs 'Empty PSI elements should not be passed to createDescriptor'
    • 'aura:handler' can not be a top-level element
    • '*.page-meta' should not be suggested in completion popup
    • Error 'Invalid range specified: (1,0)' while entering path to static resource in lightning component
    • Resolve attributes from standard super components
    • IDE should not retrieve built-in sobjects and managed classes if they are not selected in related checkboxes from 'Retrieve Components' tree.
    • False positive 'Class 'Id' cannot be found' in aura:attribute@type
    • Opening JS library should not fail with error: "Unable to find an existing parent for: /http_ajax.googleapis.com_ajax_libs_angularjs_1.6.4_angular.js"
    • Strange empty lookup element in completion popup inside lightning expression
    • Expressions inside local var tag attributes should not consider own variable name
    • Update custom set of managed packages according to actual packages list
    • 'v.recordId' should be resolved if we extends 'force:hasRecordId'
    • Lightning interface or component shouldn't be resolved without namespace
    • Filter unavailable global variables in resolve inside apex context