ESP8266 stops working when I use 2x static const char(PROGMEM)
See Guide to PROGMEM on ESP8266 and Arduino IDE. 

Since you put your char array into PROGMEM, special functions must be used to load it from flash into RAM; so to load it into a String object, the FlashHelper class must be used. You can simply use the macro FPSTR(progmem_ptr). 

#include &lt;Arduino.h&gt;

void setup() {
    Serial.begin(115200);
    Serial.println("\nStart firmware");

    static const char HTML1[] PROGMEM = R"=====(
    &lt;!DOCTYPE HTML&gt;&lt;html&gt;&lt;head&gt;
    &lt;meta charset='utf-8' name='viewport' content='width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0'&gt;
    )=====";

    static const char HTML2[] PROGMEM = R"=====(
    &lt;button type='button' onclick='sendData(2)'&gt;Test2&lt;/button&gt;
    )=====";

    String html_return = HTML1;
    html_return += "&lt;button type='button' onclick='sendData(1)'&gt;Test&lt;/button&gt;";
    Serial.println("Before Second Const Char");
    //html_return += HTML2; //crashes
    html_return += FPSTR(HTML2); //works
    Serial.println("Result");
    Serial.println(html_return);
}

void loop() {

}


Outputs

Start firmware
Before Second Const Char
Result

        &lt;!DOCTYPE HTML&gt;&lt;html&gt;&lt;head&gt;
        &lt;meta charset='utf-8' name='viewport' content='width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0'&gt;
        &lt;button type='button' onclick='sendData(1)'&gt;Test&lt;/button&gt;
        &lt;button type='button' onclick='sendData(2)'&gt;Test2&lt;/button&gt;