Sachverhalt: Sachverhalt: A. Die 1950 geborene M._ meldete sich im Oktober 2004 bei der Invalidenversicherung an und beantragte eine Rente. Die IV-Stelle des Kantons St. Gallen klärte die gesundheitlichen und erwerblichen Verhältnisse ab. Mit Verfügung vom 16. Januar 2006 verneinte die Verwaltung den Anspruch auf eine Invalidenrente, was sie mit Einspracheentscheid vom 21. April 2006 bestätigte. A. Die 1950 geborene M._ meldete sich im Oktober 2004 bei der Invalidenversicherung an und beantragte eine Rente. Die IV-Stelle des Kantons St. Gallen klärte die gesundheitlichen und erwerblichen Verhältnisse ab. Mit Verfügung vom 16. Januar 2006 verneinte die Verwaltung den Anspruch auf eine Invalidenrente, was sie mit Einspracheentscheid vom 21. April 2006 bestätigte. B. Die Beschwerde der M._ hiess das Versicherungsgericht des Kantons St. Gallen mit Entscheid vom 12. April 2007 teilweise gut. Es hob den Einspracheentscheid vom 21. April 2006 auf und wies die Streitsache zur Durchführung ergänzender medizinischer Abklärungen sowie anschliessender neuer Entscheidung im Sinne der Erwägungen an die IV-Stelle zurück. B. Die Beschwerde der M._ hiess das Versicherungsgericht des Kantons St. Gallen mit Entscheid vom 12. April 2007 teilweise gut. Es hob den Einspracheentscheid vom 21. April 2006 auf und wies die Streitsache zur Durchführung ergänzender medizinischer Abklärungen sowie anschliessender neuer Entscheidung im Sinne der Erwägungen an die IV-Stelle zurück. C. Die IV-Stelle des Kantons St. Gallen führt Beschwerde in öffentlich-rechtlichen Angelegenheiten und beantragt die Aufhebung des Entscheids vom 12. April 2007. M._ lässt auf Abweisung der Beschwerde schliessen, unter Gewährung der unentgeltlichen Rechtspflege. Das Bundesamt für Sozialversicherungen verzichtet auf eine Vernehmlassung. 