New Facebook app - FBML or iFrame?

Viewed 27327

We're starting a new facebook app (incidentally in Rails), and are faced with the decision to use FBML or to use IFrames. It seems like in the past the consensus generally was that FBML was the better way to go, as it made things more inherently Facebook looking, however it seems now like things on the iFrame side are starting to improve, with one of their main engineers saying we should use iframes

So I'm wondering what have people found to work best. What benefits and drawbacks have you seen with either the iFrame approach, or the FBML approach.

Or, are people using a mix of both. I see there's a way you can override the setting in specific places.


UPDATE:
For new readers, Facebook has stopped allowing new FBML applications. All new Apps should use IFrames.

12 Answers

I have been developing a facebook app for the past several months, and recently switched our canvas page from FBML to an IFrame. The main reason for doing so has to do with these posts and features:

Lead Facebook Engineer Recommends Developers Use IFrames for Speed, Convenience

XFBML - Facebook Developer Wiki

Basically, you can now embed FBML into an IFrame canvas using the XFBML features that were implemented to support Facebook Connect. IFrames may have performance improvements (although those are probably trashed by the client-side requests required by XFBML, which are a little tedious to set up at first), but the main advantages for me are:

1) The ability to use jQuery or any other stuff I want.

2) Useful, relevant ads from adsense, since I no longer have to embed the adsense javascript in its own IFrame.

Once I made this switch, I realized that I was able to get all the facebook data I needed through the API, and take advantage of memcached to improve performance. So, now my canvas is just plain old HTML, without any XFBML.

Hope this helps.

I find FBML easier if you want to make your app look just like Facebook with less effort in duplicating their styling.

Iframes of course give you more control.

So which do you prefer - quicker development or more precise control over the results?

Well, I'll have to agree with the poster above me and say that FBML makes it much easier to create a facebook-ish style to your application without having to rip off CSS pages ;}

Its also quite great working with the fb tags instead of creating makeshift solutions at times.

Both ways are good, but FBML tends to contribute to more effective and efficient development for Facebook. So, in the general case, I would probably go ahead and use FBML, unless you have some specific need for IFrame fine tuning.

To sum up: FBML makes better and more integrated applications. IFrame is easier to use and gives you more freedom with development (If your application is already sort of completed and you just want to add a "facebook leg" to it - it's very easy.

IFrames seem to work better if you have a client side using Flash or Silverlight. I couldn't get FBML working with a Silverlight client but when I switched to IFrames it worked fine.

I've developed about 30 Facebook apps over the past few years, almost all FBML based. I've also done some Facebook Connect implementations, which is really what you are doing with an iframe app.

By creating an iframe based app, it's not too much extra work to implement Facebook Connect for the main website, if there is one. Your content also isn't sanitized, so you can used standard html, css, and javascript without worries.

On the flip side, you can still only use FMBL/FBJS for the tab content for any application. FBML apps also have the added advantage of being able to do server side processing on initial page load. With an iframe, you need to gather the information client side, then pass it to the server. For example, Preload FQL is a bit more complicated with iframe apps than with FBML apps.

Facebook has announced that they will discontinue the support for FBML sometime soon. So, if you're thinking about developing a long a term project I would definitely start with iFrame. You don't want to go through a change from FBML to iFrames later, it's just a pain.

However, I personally think that iFrames are a lot more buggier than FBML currently, so I'd assume it'd be a while before facbeook stops supporting FBML.

In theory, iFrames is better, because you don't technically lose anything. In addition you can do a lot more things in iFrames that you can't do in FBML. But in practice, like I said, iFrames still contains a lot of bugs.

Using FBML gives you much deeper integration with Facebook as a whole.

Related