Migrations allow developers to opt-in to breaking changes before those breaking changes become permanent. This allows you to test and see if any of the upcoming breaking changes announced on the Developer Blog and tracked on the Developer Roadmap will affect your app. Per our breaking change policy, these breaking changes will only go into effect on the first of each month. Soon after a breaking change has been announced, if possible, we will add a migration to the "Advanced" tab of your app's settings and mention on the blog that it is now available.
You can change a migration to "Enabled" to see what effect that month's changes will have on your app and until the scheduled date of the change, you can "Disable" the migration as well. When the date of the change arrives, the migration will disappear and the change will now be permanent (as if the migration were "Enabled"). For minimal disruption, we encourage you to make any changes needed to ensure that enabling the migration does not break your app as soon as possible. If you have already enabled the migration on your own time, you can rest assured your app will continue working after the date of the change arrives.
Please be aware that for apps that are created after the date the migration is made available (at least 90 days before the change goes into effect), we will often have the migration be "Enabled" by default so new apps will be built with the change in place from the start. Also, currently, there are migrations for individual changes but we are working to group all migrations into monthly bundles (e.g. "November 2012 Breaking Changes") to make things simpler going forwards.