Sachverhalt:
A.
Die IV-Stelle des Kantons St. Gallen sprach der 1965 geborenen A._ eine Viertelsrente ab 1. Januar resp. eine halbe Invalidenrente ab 1. April 2004 zu (Verfügungen vom 9. Februar 2006). Mit Mitteilung vom 1. September 2008 bestätigte sie einen unveränderten Rentenanspruch. Im August 2013 leitete die IV-Stelle ein weiteres Revisionsverfahren ein. Nach Abklärungen und Durchführung des Vorbescheidverfahrens ermittelte sie einen Invaliditätsgrad von 20 %. Daher hob sie mit Verfügung vom 9. Oktober 2014 die bisherige Rente auf Ende November 2014 auf.
Das Versicherungsgericht des Kantons St. Gallen hob die Verfügung vom 9. Oktober 2014 auf und wies die Sache zu neuer Verfügung an die Verwaltung zurück (Entscheid vom 16. November 2015). Nach weiteren Abklärungen und erneuter Durchführung des Vorbescheidverfahrens bestätigte die IV-Stelle mit Verfügung vom 15. November 2016 die Rentenaufhebung auf Ende November 2014.
B.
Die dagegen erhobene Beschwerde hiess das Versicherungsgericht des Kantons St. Gallen mit Entscheid vom 22. Oktober 2018 insofern teilweise gut, als es die Rente erst auf Ende Dezember 2016 aufhob.
C.
Die IV-Stelle beantragt mit Beschwerde in öffentlich-rechtlichen Angelegenheiten, der Entscheid vom 22. Oktober 2018 sei aufzuheben und die Verfügung vom 15. November 2016 sei zu bestätigen. Ausserdem sei der Beschwerde die aufschiebende Wirkung zu erteilen.
A._ lässt auf Abweisung der Beschwerde schliessen. Das Bundesamt für Sozialversicherungen verzichtet auf eine Vernehmlassung.
Erwägungen:
1.
Das kantonale Gericht ist davon ausgegangen, dass beim Erlass sowohl der Verfügung vom 9. Oktober 2014 als auch jener vom 15. November 2016 der Invaliditätsgrad der Versicherten höchstens 32 % betrug, und die weiteren Voraussetzungen für eine Rentenaufhebung (vgl. Art. 17 Abs. 1 ATSG; vgl. auch lit. a Abs. 1 der Schlussbestimmungen der Änderung des IVG vom 18. März 2011 [6. IV-Revision, erstes Massnahmenpaket]) erfüllt waren. Folglich hat es die Rentenaufhebung im Grundsatz bestätigt. Es ist indessen der Auffassung, mit dem Rückweisungsentscheid vom 16. November 2015 sei auch der ursprüngliche Wirkungszeitpunkt der Aufhebung dahingefallen, und die Rente habe nach Art. 88bis Abs. 2 lit. a IVV (SR 831.201) nur für die Zukunft, d.h. auf Ende Dezember 2016, aufgehoben werden dürfen.
2.
2.1. Streitig und zu prüfen ist einzig der Zeitpunkt der Rentenaufhebung.
2.2. In der Invalidenversicherung erfolgt die Aufhebung einer Rente in der Regel auf das Ende des der Zustellung der Verfügung folgenden Monats (Art. 88bis Abs. 2 lit. a IVV). Massgeblich ist jene Verwaltungsverfügung, mit welcher die Herabsetzung oder Aufhebung erstmals verfügt wurde. Muss infolge eines Rückweisungsentscheides eine neue Verfügung erlassen werden, kann damit die ursprüngliche Rentenaufhebung (samt Wirkungszeitpunkt) rückwirkend bestätigt werden (BGE 129 V 370; 106 V 18; SVR 2011 IV Nr. 33 S. 96, 8C_451/2010 E. 3 und 4.4; Urteil 9C_567/2017 vom 21. November 2017 E. 2.2.3). Die vorinstanzliche Auffassung steht im Widerspruch zu dieser von der IV-Stelle angerufenen Rechtsprechung. Weder das kantonale Gericht noch die Beschwerdegegnerin befasst sich damit, und ein Grund für eine Praxisänderung (vgl. dazu BGE 141 II 297 E. 5.5.1; 140 V 538 E. 4.5 S. 541; je mit Hinweisen) ist nicht ersichtlich.
Die Beschwerde ist offensichtlich begründet, weshalb sie im vereinfachten Verfahren nach Art. 109 Abs. 2 lit. b BGG gutgeheissen wird.
3.
Mit dem Entscheid in der Sache wird das Gesuch um aufschiebende Wirkung der Beschwerde gegenstandslos.
4.
Dem Ausgang des Verfahrens entsprechend hat die Beschwerdegegnerin die Kosten zu tragen (Art. 66 Abs. 1 BGG).
Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird gutgeheissen. Der Entscheid des Versicherungsgerichts des Kantons St. Gallen vom 22. Oktober 2018 wird aufgehoben und die Verfügung der IV-Stelle des Kantons St. Gallen vom 15. November 2016 bestätigt.
2.
Die Gerichtskosten von Fr. 800.- werden der Beschwerdegegnerin auferlegt.
3.
Die Sache wird zur Neuverlegung der Kosten des vorangegangenen Verfahrens an das Versicherungsgericht des Kantons St. Gallen zurückgewiesen.
4.
Dieses Urteil wird den Parteien, dem Versicherungsgericht des Kantons St. Gallen und dem Bundesamt für Sozialversicherungen schriftlich mitgeteilt.
Luzern, 25. Januar 2019
Im Namen der II. sozialrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Die Präsidentin: Pfiffner
Die Gerichtsschreiberin: Dormann