17

Within the last view days I found that a lot of basic functionality available in Visualforce is not available in Lightning Components right now. At some features I was surprised a bit, because I considered them as the heart-and-soul of the force.com platform. But since Lightning Components are evolving and still in BETA, it's fine.

Now to save time for digging and testing each single feature individually, it would be very helpful to have a feature-matrix what we have (or have not) in Visualforce and Lightning right now and what is on the roadmap with a target date - and on the other side what is not on the roadmap and maybe why.

I know, I ask for a lot, but this is very important for developers to pick the right framework for a set of given requirements today.

Also to make reasonable decisions if a developer should start to build a feature on his or her own. Imagine you need to automatically populated picklist-values from metadata-definition: is it really not available?? should you start to implement it or not? If it comes within the next 6 months as a native feature, you might wait or continue with Visualforce. If it's not on the roadmap at all, you might start to implement it immediately today...

Other features might be obsolete or there are best practices with entirely different approaches.

Is there any feature-matrix available? Should we start something right now? Maybe here as answers? I could contribute some points I found out. Unfortunately no tables are supported here at SFSE, otherwise I had had started already...

Uwe Heim
  • 28,350
  • 18
  • 115
  • 283

2 Answers2

15

Please feel free to edit this answer! Caveat Emptor: I'm doing my best to update it as precisely as possible, but can't promise everything is correct and stays correct.

To get things rolling, here is a collection of topics which belong to the feature-matrix I have in mind. Since most them have no final answer, I think this format might be a good start. I've added the intermediate (maybe wrong) results in square brackets at the end.

Legend

  • VF = Visualforce
  • LC = LightningComponents
  • + = available
  • ~ = partly available
  • - = missing
  • ? = unknown, not tested

Bugs or necessary workarounds I would count as missing.

Any suggestion on how to create a matrix or table here is welcome. Feel free to extent.

Forms and Inputs

Embedding

  • Use Lightning Components in Visualforce [VF+]
  • Use Visualforce in Lightning Components [LC~]

Navigation

JS Frameworks and Libraries

  • General Usability [VF+ LC~]
    • LC: you need to be careful since Aura in LC itself is a JS-Framework and might clash with additional frameworks. At dreamforce'15 they encouraged us to use additional frameworks as rarely as possible.
    • LC: See W 16 release notes on JS usage: only use the set of supported JS methods in the "Slimmed Down JavaScript API Doc". SF is not guaranteeing support for code that uses unsupported methods.
    • VF: almost all frameworks will work nicely
  • Use CDNs [VF+ LC-]
    • LC: CDNs blocked by CSP, need to use Static Resources
  • Caching Prevention for updated Static Resources [VF+ LC?]
    • having an premier+ case open, yet

Development

Media Output

  • PDF Generation [VF+ LC-]

Your feedback is very welcome, especially if I got something wrong, please let me know!

Uwe Heim
  • 28,350
  • 18
  • 115
  • 283
  • @crmprogdev thanks for adding your points to this article, I really appreciate the teamwork and you are the only one who provided anything so far. But I have a question on them: are they really features we can compare as VF- and LC+ ? For me they are more kind of important things you should be aware of but not features in a narrow sense. So I would suggest to collect all of them under a new bulletpoint toplevel node, e.g. Lightning Details. Would this make sense? – Uwe Heim Nov 02 '15 at 07:51
  • @crmprogdev it is about $A.getCallback(), My Domain, Slimmed Down JavaScript API Doc – Uwe Heim Nov 02 '15 at 07:54
  • however you'd like to handle them is fine by me. Was preparing W16 presentation when I came across some of them. As FYI, slimmed down JS API is distinct from deprecated $A.run(). Std JS isn't safe for use in components if not in slim API. Can only run in underlying framework, so be careful of what you call. Is huge limitation in my view of what one can do. – crmprogdev Nov 02 '15 at 16:17
  • This should be a community wiki. 2. You have several features where your description indicates LC~ but your header reads LC-.
  • – Adrian Larson Feb 16 '16 at 17:33