These previously-announced changes have been completed. For a list of upcoming changes, check out the Roadmap.
The following changes can be enabled/disabled using the "April 2013 Breaking Changes" migration until April 3rd when they will go into effect permanently for everyone:
Removing ability to POST to USER_ID/questions
As it's no longer possible for users to create questions, we will remove this functionality from the Graph API.POSTs toUSER_ID/questionswill fail.
The following changes can be enabled/disabled using the "March 2013 Breaking Changes" migration until March 6th when they will go into effect permanently for everyone:
No more accessing mailbox FQL tables without a user session
It will not longer be possible to access the message, thread, or mailbox_folder FQL tables without a user session.Removing apps from /me/accounts/ and page_admin FQL table
We will no longer show apps under/me/accounts/in the Graph API or in thepage_adminFQL table. You can access the list of apps a user is a developer on by hitting/me/applications/developer/or using theapp_roleFQL table.Removing redirect to docs when hitting graph.facebook.com
We will no longer return a redirect to the Graph API docs when hitting the URLhttp(s)://graph.facebook.comwith no path.
The following change will go into effect on February 6th, 2013:
End of custom actions for content consumption
We will no longer show Custom Open Graph actions that were published simply by a user consuming content. If you own one of these actions and it was previously approved, you will have received an email from us. Developers should stop publishing these actions as doing so will return an error starting February 6th. The only actions that can be published upon a user simply consuming content are built-in actions. For more info, see this blog post.
The following changes can be enabled/disabled using the "February 2013 Breaking Changes" migration until February 6th when it will go into effect permanently for everyone:
Authenticated referrals going away
We will remove the Authenticated Referrals feature. You should instead use the Login Dialog.Create_event permission required to remove attendees from event
We will require thecreate_eventpermission in order to remove attendees from an event a user admins.Minor change to admin.getAppProperties call
When making anadmin.getAppPropertiescall, we will now return an empty Android Key Hash field as[]instead of[""].Canonical URLs used when fetching Open Graph objects
We will start using canonical URLs (e.g. the URL set in anog:urltag, 301/302 redirects, etc.) when fetching objects (e.g.http://graph.facebook.com?ids=http://developers.facebook.com).Offset no longer allowed when searching posts
We will no longer allow theoffsetparameter to be used when searching stream posts (e.g.https://graph.facebook.com/search?q=watermelon&type=post). Please usesinceanduntilto do paging instead. For more info, check out this blog post.Curly bracket syntax for mentioning users in notifications going away
We will no longer allow the curly bracket syntax ({USER_ID}) for mentioning users in notifications. Developers should instead use the new syntax (@[USER_ID]).Removing ability to post to friends walls via Graph API
We will remove the ability to post to a user's friends' walls via the Graph API. Specifically, posts against [user_id]/feed where [user_id] is different from the session user, or stream.publish calls where thetarget_iduser is different from the session user, will fail. If you want to allow people to post to their friends' timelines, invoke the feed dialog. Stories that include friends via user mentions tagging or action tagging will show up on the friend’s timeline (assuming the friend approves the tag). For more info, see this blog post.
The following change can be enabled/disabled using the "Picture as Dictionary" migration until February 6th when it will go into effect permanently for everyone:
Picture connection/field may return a dictionary
We will start returning a dictionary containing the fieldsurl,height,width, andis_silhouettewhen accessing the/pictureconnection for an object and specifying acallbackproperty, aredirect=falseparameter, or getting thepicturefield as part of a larger JSON response.
The following change will go into effect on January 9th, 2013. Please note that January 9th is the second Wednesday of the month, not the first Wednesday of the month as is normally the case per our Breaking Change Policy. This is due to the fact that January 2nd is a company holiday so our standard Tuesday push will be delayed.
Removing unused splash_screen_url and gamebar_image_url properties
We will remove thesplash_screen_urlandgamebar_image_urlapp properties as these are no longer used anywhere so setting them will have no effect.
The following changes can all be enabled/disabled using the "January 2013 Breaking Changes" migration until January 9th when they will go into effect permanently for everyone:
Removing Dashboard REST API methods
We will remove all of the dashboard.* REST API methods. This was originally scheduled for June 2012 as announced in December 2011. To manage counts for your app, see the Requests documentation or this blog post.Using canonical URLs when fetching data using link_stat table
When getting stats about a URL (e.g. number of likes) from the link_stat FQL table or by passing a URL to theidsparameter in a Graph API call, we will now use the canonicalized URL to fetch those stats. This fixes a few issues. For example, getting stats fordevelopers.facebook.comanddevelopers.facebook.com?foo=barcurrently could return different values forshares. This change will ensure they return the same values since they in fact point to the same page.
The following change will go into effect on December 5th, 2012:
Removing the Static FBML Page tab app
We removed FBML in July of this year so any FBML code that was being used in the Static FBML Page app would have stopped working at that time. However, the Static FBML Page app is still able to render plain HTML. On December 5th, we will remove the Static FBML Page app and any Static FBML tabs you had installed on your Page will disappear. To replace any Static FBML tabs you may be using, we recommend you either host your own content and create your own Page tab or search the web for "Static HTML Facebook Page Tab" to find a replacement.New policies for desktop web games off of Facebook.com
The following policies will go into effect:13a. Desktop web games off of Facebook.com may only use Facebook Login (Authentication, excluding user connections such as friend list), Social Plugins and publishing (e.g., Feed Dialog, Stream Publish, or Open Graph). When authenticating, these games may not request additional permissions other than age, email, and our Publishing Permissions.
13b. Games on Facebook.com and mobile must not share the same app ID with desktop web games off of Facebook.com. You must not use Canvas apps to promote or link to game sites off of Facebook, and must not use emails obtained from us to promote or link to desktop web games off of Facebook.com.
For more information, check out the Platform Policies.
The following change can be enabled/disabled using the "Remove offline_access permission" migration until December 5th when it will go into effect permanently for everyone:
offline_access permission removal
Theoffline_accesspermission is deprecated and will be removed December 5th, 2012 (originally scheduled for July 5th). Please see the Removal of offline_access Permission doc for more details.
The following changes can all be enabled/disabled using the "December 2012 Breaking Changes" migration until December 5th when they will go into effect permanently for everyone:
New security restrictions for OAuth authorization codes
We will only allow authorization codes to be exchanged for access tokens once and will require that they be exchanged for an access token within 10 minutes of their creation. This is in line with the OAuth 2.0 Spec which from the start has stated that "authorization codes MUST be short lived and single use". For more information, check out our Authentication documentation.Graph API will return full Custom Open Graph objects
We will begin returning full Custom Open Graph objects (including custom-defined fields) via the Graph API when requesting them using theidparameter (e.g.https://graph.facebook.com/?id=YOUR_URL). Currently we only return theidandsharesfields for these objects.Stripping HTML from Page description field
As some Page descriptions contain HTML, we will begin stripping HTML tags from thedescriptioncolumn/field of the Page FQL table and the Page Graph API object so as to not require you to parse/render HTML when using a Page description. We will add adescription_htmlcolumn/field that will contain the description including the HTML tags (asdescriptionused to contain). Thedescription_htmlGraph API field will not be returned by default. It will have to be explicitly requested by including a?fields=description_htmlparameter in your Graph APIGETrequest.
The following change will go into effect on November 7th, 2012:
No more payments reporting emails
We will stop sending payments reporting emails. You can download daily reports of transaction data using our Payments Reporting API.
The following changes can all be enabled/disabled using the "November 2012 Breaking Changes" migration until November 7th when they will go into effect permanently for everyone:
Notifications table no longer returns pid/aid for photos/albums
Theobject_idfield on thenotificationFQL table will return photo ids and album ids (calledobject_idandalbum_object_idrespectively in thephotoFQL table) instead ofpidandaid.New permission required to read Page mailboxes
In order to read a Page's mailbox (PAGE_ID/conversationsin the Graph API orunified_*FQL tables), you will need theread_page_mailboxespermission. Theread_mailboxpermission will now only give you access to a user's mailbox.
The following change can be enabled/disabled using the "External Page Migration" migration until November 7th when it will go into effect permanently for everyone:
External Page migration
You will no longer be able to publish content to the News Feeds of users who have liked your Open Graph object. This feature will only be available for Facebook Pages. Please see the Like Button Migration doc for more details.
The following changes will go into effect on October 3rd, 2012:
Built-in like/follow action required
We will stop allowing the use of Custom Open Graph "like" and "follow" actions now that there are built-in "like" and built-in "follow" actions. Please convert any custom "like" or "follow" actions you may have created to instead use the built-in "like" or "follow" actions.Removing Bookmark URL - Originally scheduled for December 1, 2011
As mentioned on the blog, this optional field was originally created to help developers track user referrals from app bookmarks. We now pass arefparameter to let you know that the user is coming from a bookmark (i.e.ref=bookmarks). As such, we will remove the "Bookmark URL" field from the apps settings.
The following changes can all be enabled/disabled using the "October 2012 Breaking Changes" migration until October 3rd when they will go into effect permanently for everyone:
Removing Live Stream plugin
The Live Stream plugin has been deprecated and will render the Comments Box plugin in its place. While it offers similar functionality, there are a few functional differences. Please see the Live Stream plugin documentation for more info.Summary field being replaced by description field
Because the two fields were somewhat redundant, we will be removing the "Summary" field (found in the "Login Dialog" section of an app's settings) and instead using the "Description" field (found in the "Advanced" section of an app's settings) in places where "Summary" was previously used.Removing position field for photos
Thepositionfield in both thephotoFQL table as well as thePhotoGraph API object will start returning0for all photos. Thephotosconnection on anAlbumobject in the Graph API will continue to return photos in the order they appear in the album. FQL queries on thephototable that have aWHEREclause containing theaidoralbum_object_idcolumns will return in the correct order as well without needing anORDER BY positionclause./picture connection will return a dictionary when a callback is specified
We will start returning a dictionary containing the fieldsurl,height,width, andis_silhouettewhen accessing the /picture connection for an object and specifying acallbackproperty. Currently we just return the picture URL as a string.
The following changes will go into effect on September 5th, 2012:
Deleting FB.Canvas.setAutoResize - Originally scheduled for January 1, 2011
We have renamed FB.Canvas.setAutoResize to FB.Canvas.setAutoGrow so that the method more accurately represents its function. FB.Canvas.setAutoResize will stop working on August 1st. We will completely delete the function on September 5th (if you call it you will get an "undefined function" error).Built-in actions required for watching and reading
Custom actions for reading articles and watching videos must use built-in actions. Built-in watch and read actions can only be published after someone engages with the content for 10 or more seconds.
The following changes can all be enabled/disabled using the "September 2012 Breaking Changes" migration until September 5th when they will go into effect permanently for everyone:
Renaming 'likes' property of Comments and 'votes' property of QuestionOptions
We will be renaming thelikesproperty of the Comment object tolike_countand thevotesproperty of the QuestionOption tovote_count.Minor change to admin.getAppProperties call
When making anadmin.getAppPropertiescall, we will now return an empty iOS Bundle ID as[]instead of[""].Returning actual size in photo_src table
We will start returning the actualsize,height, andwidthof photos in thephoto_srcFQL table instead of the dimensions of the bounding box.
Disabling FB.Canvas.setAutoResize - Originally scheduled for January 1, 2011
We have renamed FB.Canvas.setAutoResize to FB.Canvas.setAutoGrow so that the method more accurately represents its function. FB.Canvas.setAutoResize will stop working on August 1st. We will completely delete the function on September 5th.Page Post GETs from Graph API/FQL Will Require an Access Token
All calls toGETPage posts from the Graph API or FQL will now require an access token to be used.Removing prompt_permissions.php and prompt_feed.php
We will be removing a very old version of the feed dialog (/connect/prompt_feed.php) as well as a very old version of the Login Dialog (/connect/prompt_permissions(s).php). If you are one of the very few developers still using these legacy endpoints, you should upgrade to the current Feed Dialog and/or Login Dialog.Removing Add To Timeline Plugin
We will be removing the Add to Timeline plugin. If you are embedding the Add to Timeline plugin, we will render the Login Button in its place with thepublish_actionspermission automatically added to thescopeparameter.
Event GETs from Graph API/FQL Will Require an Access Token
All calls to get events from the Graph API or FQL will now require an access token to be used.Removal of FBML
FBML apps will no longer work on Platform. All FBML endpoints will be removed and the "FBML Removal" migration added June 6th will be removed.Updating Page Hours Property
Thehoursproperty of Pages will return times in the format HH:MM (e.g. "14:23") rather than the old format (a Unix time).Batch API Exception Format
Errors from the Batch API will return errors in a new format. Previously, errors would take the format:
{"error_code": "", "error_description": ""}
With this change, they will now be formatted in-line like the rest of the Graph API:
{"error": {"message": "", "type": ""}}
Removing Timezone From Event Times
We have had a migration titled "Timezone-less Events" out for a while now which removes timezones from event start and end times. This migration was originally created because in the past, events have been intended to be created with start and end times that are specific to the location of the event so including a timezone in the API simply led to confusion. Until now, this migration never had a date set for when it would go into full effect. That date is now July 5th. This change can be enabled/disabled using the "Timezone-less Events" migration.Since this migration was originally created, we have added a
timezonefield to events which indicates the name of the timezone (as defined here) where the event is expected to happen. FYI, developers reading time in ISO 8601 should be supporting the full standard when reading event times. Most events return local times (no GMT offset), but in the future events likely will return other formats (namelydate-onlyandprecise).Removing display=wap Dialogs
Thewapdialog display mode will be removed.Removing Some Event FQL Object Fields
We will be removing the following legacy fields from the event FQL object.
show_in_searchshow_wallshow_photosshow_videosshow_postsnidtaglineevent_typeevent_subtype
Coordinate-less Tags
Tags previously could only exist on photos and always included x,y coordinates. On Facebook it is now possible to tag people in photos and statuses with no coordinates (example). These people show up as being "with" the actor. The potential breaking change is that it will be possible for thetagsparameter of any photo object to return objects with noxoryparameters.Removing Bookmark.Add and Profile.AddTab Dialogs
We will be removing thebookmark.addandprofile.addtabdialogs from the Javascript SDK. These dialogs already don't do anything as the concepts of manually adding bookmarks and profile tabs have already been removed.Moving Type Property Into Metadata Array
When querying the Graph API with ametadata=1parameter, we append ametadataarray and atypeproperty to the response. We will be moving thetypeproperty into themetadataarray.
Removal of FBML
FBML apps will no longer work on Platform. The "FBML Removal" migration will appear and will be enabled for all apps. It will be possible to disable the migration, thereby re-enabling FBML, until July 5, 2012 when the migration and all FBML endpoints will be removed completely.XMPP Connections must be done over TLS
Apps connecting to Facebook's XMPP service will be required to use STARTTLS for all connections. We will start rejecting unencrypted connections.
Removal of group_type and group_subtype columns from group FQL table
We will remove thegroup_typeandgroup_subtypecolumns of thegroupFQL table. Please ensure that your apps are not utilizing these columns.Removing support to claim Domains using Page ID - Originally scheduled for April 1st, 2012
We will remove the ability to claim domains with a Page ID. The recommended option for claiming domains is with an App ID or User ID and existing domains that have been claimed will continue to work fine. After claiming domains, owners are able to view insights or run Domain Sponsored Stories. See the Insights documentation for more on the updated domain claiming flow.
Making deprecated SDK repositories private
We will make the Python and C# SDK repositories on GitHub private. These repositories are deprecated and may not work as expected due to changes in our auth system.Removing canvas_name field from application object - Originally scheduled for February 1st, 2012
We will be removing thecanvas_namefield in favor ofnamespacefield on the application object.
Pages Insights Metrics Deprecations
We are in the process of deprecating some old Page Insights. We announced this in a number of forums, but failed to outline this change in our Platform Roadmap per our breaking change policy. Our apologies. You can find a full list of the Insights to be deprecated from the Insights documentation. These Insights will be completely removed from API on Feb 15th 2012. Please make all necessary updates as soon as possible so that you can transition smoothly.
Removing App Profile Pages
We will be deleting all App Profile Pages and redirecting all traffic directly to the App. For more information, please refer to the blog post.Removing REST Support for Ads API
We will be removing REST support for the Ads API. All Ads API developers now use the Graph API.
Removing the FB.Data.* JS SDK APIs
These will be no longer available.Deprecating FBML
FBML will no longer be supported as of January 1, 2012. Aside from security and privacy related bugs, we will not fix any bugs related to FBML after January 1, 2012. On June 1, 2012 FBML endpoints will be removed from Platform.All apps will be opted into "Upgrade to Requests 2.0" and "Requests 2.0 Efficient" Migrations
Existing apps will be opted into “Requests 2.0 Efficient” and "Upgrade to Requests 2.0" migrations and all developers must ensure that they are using the correctrequest_idformat and deleting requests appropriately. Details here.Enforcing Credits Policy
We have added a new policy to the Facebook Credits Terms that prohibits routing Credits from one application to another application without our prior authorization.2.14 You may not accept Credits in one application and deliver or transfer the purchase to the user in another application without our prior authorization. For example, an application solely designed to facilitate transactions is not permitted.
Applications that are not compliant by January 1, 2012 run the risk of having their Credits disabled shortly after.
OAuth Spec Migration
In order to be compliant with the OAuth spec we have made changes to our auth APIs. As part of this update, we will be deprecatingcode_and_tokenand need developers to usecode%20token. Everything is identical, just replace_and_with encoded <space> (%20).Deprecating Dashboard APIs
These APIs (that start with "dashboard.") are no longer supported and will not be available past this date. This does not include the Dashboard count APIs which will deprecate on the FBML and Request 1.0 schedule (no support past Jan 1st 2012, and removed June 1st 2012.Apps on Facebook: FB.Canvas.getPageInfo must be called with callback
The FB.Canvas.getPageInfo method will have to be called with a callback function. This was previously not required. See this blog post for more information.
manage_notifications Permissions Migration
To read or manipulate a user’s notifications, we will require you to get themanage_notificationspermission.
OAuth 2.0 Migration
As we announced in May, all apps must migrate to OAuth 2.0 for authentication and expect an encrypted access token. The old SDKs, including the old JS SDK and old iOS SDK will no longer work.Apps on Facebook Authentication and Security Migration (HTTPS)
All Canvas and Page tab apps must convert to processsigned_request(fb_sigwill be removed) and obtain an SSL certificate for use in "Secure Canvas URL" and "Secure Page Tab URL" (unless you are in Sandbox mode). You must provide an SSL certificate in the Dev App settings to avoid having your app disabled.auth.promotesession Deprecation
This method is deprecated and will be removed.manage_pages Permission Required to Access User Accounts (/me/accounts)
We are modifying access to the FQLpage_admintable and thegraph.facebook.com/me/accountsendpoint. Previously, with basic permissions granted, an app could go to this endpoint or the FQL table to access the list of a user’s apps and Pages. We are going to require that apps have themanage_pagespermission in order to obtain access to this information.
New Developer app
We are building a new version of the Developer app for managing your application's settings and will be adding features such as the ability to easily create and manage test users, manage large numbers of apps, manage users with special privileges (admin, developer, tester, insights), and more.
Requiring Access Token for Feed Connection
We will require an access token toGETfromPROFILE_ID/feed.
Removing "year" and "status" properties of "affiliations" column in "user" FQL table
These properties will be removed from the "affiliations" column. You should use the "education" property of the User object in the Graph API or the "education_history" column of the user FQL table instead.
Canvas Apps and Page Tabs: No new FBML apps
We will stop allowing new FBML apps, but will continue to support existing FBML tabs and apps. Instead, we recommend using iframes.