diff --git a/frontend/build/webpack.config.js b/frontend/build/webpack.config.js
index 9201a5e76..dc2a575a8 100644
--- a/frontend/build/webpack.config.js
+++ b/frontend/build/webpack.config.js
@@ -36,7 +36,7 @@ module.exports = (env) => {
},
entry: {
- index: 'index.js'
+ index: 'index.ts'
},
resolve: {
@@ -67,17 +67,13 @@ module.exports = (env) => {
output: {
path: distFolder,
publicPath: '/',
- filename: '[name].js',
- sourceMapFilename: '[file].map'
+ filename: '[name].[contenthash].js',
+ sourceMapFilename: '[file]-[contenthash].map'
},
optimization: {
moduleIds: 'deterministic',
- chunkIds: 'named',
- splitChunks: {
- chunks: 'initial',
- name: 'vendors'
- }
+ chunkIds: 'named'
},
performance: {
@@ -101,7 +97,8 @@ module.exports = (env) => {
new HtmlWebpackPlugin({
template: 'frontend/src/index.ejs',
filename: 'index.html',
- publicPath: '/'
+ publicPath: '/',
+ inject: false
}),
new FileManagerPlugin({
diff --git a/frontend/src/bootstrap.tsx b/frontend/src/bootstrap.tsx
new file mode 100644
index 000000000..a729cb3c5
--- /dev/null
+++ b/frontend/src/bootstrap.tsx
@@ -0,0 +1,23 @@
+import { createBrowserHistory } from 'history';
+import React from 'react';
+import { render } from 'react-dom';
+import createAppStore from 'Store/createAppStore';
+import { fetchTranslations } from 'Utilities/String/translate';
+import App from './App/App';
+
+import 'Diag/ConsoleApi';
+
+export async function bootstrap() {
+ const history = createBrowserHistory();
+ const store = createAppStore(history);
+ const hasTranslationsError = !(await fetchTranslations());
+
+ render(
+