Sachverhalt:
A.
A._ (geb. 1955) arbeitete während langer Jahre als selbstständiger Autospengler. Im März 2014 meldete er sich unter Hinweis auf Müdigkeit, Rückenschmerzen und Bewegungseinschränkungen (Einschlafen der Füsse) bei der Invalidenversicherung zum Leistungsbezug an. Eine erste abweisende Verfügung der IV-Stelle des Kantons St. Gallen vom 2. Oktober 2014 hob das kantonale Gericht am 19. Mai 2015 auf und wies die Sache zur weiteren Abklärung an die Verwaltung zurück. Diese holte bei der Aerztlichen Begutachtungsinstitut GmbH, Basel (ABI), eine polydisziplinäre Expertise ein (Gutachten vom 29. Februar 2016). Gestützt darauf verneinte die IV-Stelle einen Leistungsanspruch nach Durchführung des Vorbescheidverfahrens mit Verfügung vom 20. April 2016erneut (Invaliditätsgrad: 39 %).
B.
Die dagegen erhobene Beschwerde hiess das Versicherungsgericht des Kantons St. Gallen gut, hob die angefochtene Verfügung auf und sprach dem Versicherten ab 1. September 2014 eine halbe Invalidenrente zu (Invaliditätsgrad: 51 %). Zur Festsetzung des Rentenbetrages wies das kantonale Gericht die Sache an die Verwaltung zurück.
C.
Die IV-Stelle führt Beschwerde in öffentlich-rechtlichen Angelegenheiten mit dem Rechtsbegehren, der angefochtene Entscheid sei aufzuheben und die Verfügung vom 20. April 2016 zu bestätigen. Ferner ersucht sie um aufschiebende Wirkung der Beschwerde.
A._ und da s kantonale Gerich t schliessen auf Abweisung der Beschwerde. Das Bundesamt für Sozialversicherungen verzichtet auf eine Vernehmlassung.

Erwägungen:
1.
Das kantonale Gericht hat die Verfügung vom 20. April 2016aufgehoben und die Sache in masslicher Hinsicht an die IV- Stelle zurückgewiesen. Formell handelt es sich demnach um einen Rückweisungsentscheid. Die Rückweisung dient hier jedoch lediglich der rechnerischen Umsetzung des oberinstanzlich Angeordneten, sodass der Verwaltung kein Entscheidungsspielraum mehr verbleibt. Damit ist der angefochtene Entscheid praxisgemäss nicht als Zwischenentscheid, der bloss unter den Voraussetzungen der Art. 92 f. BGG beim Bundesgericht anfechtbar wäre, sondern als ein das Verfahren prozessual abschliessender Endentscheid (<ref-law>) zu qualifizieren (vgl. SVR 2008 IV Nr. 39 S. 131, 9C_684/2007 E. 1.1). Auf die Beschwerde ist daher einzutreten.
2.
Das Valideneinkommen von selbstständig Erwerbenden kann grundsätzlich auf der Basis der Einträge im individuellen Konto (nachfolgend: IK) bestimmt werden. Weist das bis Eintritt der Invalidität erzielte Einkommen starke und verhältnismässig kurzfristig in Erscheinung getretene Schwankungen auf, ist auf den während einer längeren Zeitspanne erzielten Durchschnittsverdienst abzustellen. Dass auch bei Erwerbstätigen unter Umständen nicht auf das zuletzt erzielte Einkommen abgestellt wird, ist indessen nicht ausgeschlossen. Dies trifft namentlich bei selbstständig Erwerbenden zu, wenn aufgrund der Umstände mit überwiegender Wahrscheinlichkeit anzunehmen ist, dass die versicherte Person im Gesundheitsfall ihre nicht einträgliche selbstständige Tätigkeit aufgegeben und eine besser entlöhnte andere Tätigkeit angenommen hätte (statt vieler: Urteile 8C_450/2016 vom 6. Oktober 2016 E. 3.2.2 und 8C_567/2013 vom 30. Dezember 2013 E. 2.2.2).
3.
3.1. Das kantonale Gericht hat das Valideneinkommen anhand des Lohnrechners des Schweizerischen Gewerkschaftsbundes (SGB) (www.lohnrechner.ch) auf Fr. 86'880.- (12 x Fr. 7'240.-) festgelegt. Es hat erwogen, auf den (Durchschnitts-) Verdienst des Versicherten aus seiner selbstständigen Erwerbstätigkeit als Autospengler könne nicht abgestellt werden, weil diesfalls - aufgrund des tiefen Valideneinkommens - ein negativer Invaliditätsgrad resultiere, was eine Absurdität darstelle. Dies gelte umso mehr, als die ausgewiesenen IK-Einträge stark schwankten. Überdies werde damit nicht ausgesagt, welchen Lohn der Versicherte als Gesunder im Zeitpunkt eines allfälligen Rentenbeginns als selbstständiger Autospengler effektiv hätte verdienen können.
3.2. Die IV-Stelle macht einzig geltend, das Valideneinkommen sei gestützt auf das in den letzten zehn Jahren vor Eintritt des Gesundheitsschadens (im April 2013) durchschnittlich erzielte Einkommen des Versicherten zu bestimmen.
4.
4.1. Dem ist beizupflichten: Es steht fest, dass die vom Versicherten als selbstständiger Autospengler zwischen 2003 und 2012 erwirtschafteten Einkommen erheblich schwankten (2003: Fr. 20'600.-; 2004: Fr. 33'200.-; 2005: Fr. 29'500.-; 2006: Fr. 26'800.-; 2007: Fr. 72'500.-; 2008: Fr. 31'400.-; 2009: Fr. 38'600.-; 2010: Fr. 54'400.-; 2011: Fr. 12'900.-; 2012: Fr. 26'300.-). Die Vorinstanz übersieht, dass für die Bemessung des Valideneinkommens massgebend ist, was die versicherte Person im Gesundheitsfall konkret verdienen würde, und nicht, was sie bestenfalls verdienen könnte (statt vieler: <ref-ruling> E. 5 S. 294; Urteil 9C_644/2015 vom 3. Mai 2016 E. 4.6.1). Der Versicherte erklärte im Rahmen der erwerblichen Abklärungen explizit, er habe bis vor kurzem noch gehofft, seine Arbeit als Autospengler wieder aufnehmen zu können. Mittlerweile habe er aber einsehen müssen, dass dies (aus gesundheitlichen Gründen) nicht mehr gehe (vgl. Assessmentprotokoll vom 14. April 2014, S. 3). Daraus kann ohne weiteres geschlossen werden, dass der Versicherte seine selbstständige Erwerbstätigkeit ohne Eintritt des Gesundheitsschadens mit überwiegender Wahrscheinlichkeit weiterführen würde, was die Auffassung der IV-Stelle stützt (vgl. E. 2 e contrario). Dass ein Abstellen auf den im Durchschnitt erzielten Verdienst als Autospengler in concreto zu einer "negativen Invalidität" führt (vgl. vorinstanzliche Erwägung 3.2), ändert nichts: Dies rührt vielmehr daher, dass sich der Versicherte als Gesunder aus freien Stücken jahrelang mit bescheidenen Erwerbseinkommen begnügte. Indessen ist dieser freiwillig nicht verwertete Teil der Erwerbsfähigkeit - entgegen der Ansicht des kantonalen Gerichts - klarerweise nicht versichert, was im Übrigen auch eine Einkommensparallelisierung ausschliesst (statt vieler: <ref-ruling> mit Hinweis auf <ref-ruling> E. 4.1 S. 325). Für eine Praxisänderung besteht keine Veranlassung (zu den Voraussetzungen: <ref-ruling> E. 5.5.1 S. 303; <ref-ruling> E. 2.2.2 S. 422).
4.2. Nach dem Gesagten ergibt sich aus der Gegenüberstellung des (durchschnittlichen) Valideneinkommens von Fr. 34'620.- (Summe der IK-Einträge von 2003 bis 2012 = Fr. 346'200.- : 10) mit dem (unbestritten gebliebenen) Invalideneinkommen von Fr. 42'167.- eindeutig kein Rentenanspruch. Nähere Ausführungen zur Invaliditätsbemessung erübrigen sich. Der vorinstanzliche Entscheid verletzt Bundesrecht (<ref-law>).
5.
Da die Beschwerde offensichtlich begründet ist, wird sie im Verfahren nach <ref-law> mit summarischer Begründung (<ref-law>) erledigt.
6.
Mit dem Entscheid in der Sache wird das Gesuch um aufschiebende Wirkung der Beschwerde gegenstandslos.
7.
Dem Verfahrensausgang entsprechend sind die Gerichtskosten dem unterliegenden Beschwerdegegner aufzuerlegen (<ref-law>).

Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird gutgeheissen. Der Entscheid des Versicherungsgerichts des Kantons St. Gallen vom 9. August 2017 wird aufgehoben und die Verfügung der IV-Stelle des Kantons St. Gallen vom 20. April 2016 bestätigt.
2.
Die Gerichtskosten von Fr. 800.- werden dem Beschwerdegegner auferlegt.
3.
Die Sache wird zur Neuverlegung der Kosten und der Parteientschädigung 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, 4. Dezember 2017
Im Namen der II. sozialrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Die Präsidentin: Pfiffner
Der Gerichtsschreiber: Grünenfelder