Skip to content

Commit 4291636

Browse files
authored
Use next-runtime-env for dynamic envs (#515)
Disabling ASO had some issues with app navigation clashing with query parameter updates from all our nuqs usage. Switching to `next-runtime-env` and also changing the preset environment variables to `NEXT_PUBLIC_HDX_LOCAL_DEFAULT_CONNECTIONS` and `NEXT_PUBLIC_HDX_LOCAL_DEFAULT_SOURCES`, which is required for the package, but also makes it nice and clear that these are going to be publicly exposed environment variables.
1 parent dd67434 commit 4291636

19 files changed

+39
-41
lines changed

packages/app/.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44

55
# Sentry
66
next.config.original.js
7+
8+
public/__ENV.js

packages/app/next.config.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
const { configureRuntimeEnv } = require('next-runtime-env/build/configure');
12
const { version } = require('./package.json');
23

4+
configureRuntimeEnv();
5+
36
const withNextra = require('nextra')({
47
theme: 'nextra-theme-docs',
58
themeConfig: './src/nextra.config.tsx',
@@ -23,8 +26,6 @@ module.exports = withNextra({
2326
swcMinify: false,
2427
publicRuntimeConfig: {
2528
version,
26-
hdxLocalDefaultConnections: process.env.HDX_LOCAL_DEFAULT_CONNECTIONS,
27-
hdxLocalDefaultSources: process.env.HDX_LOCAL_DEFAULT_SOURCES,
2829
},
2930
productionBrowserSourceMaps: false,
3031
...(process.env.NEXT_OUTPUT_STANDALONE === 'true'

packages/app/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
"lodash": "^4.17.21",
5959
"next": "13",
6060
"next-query-params": "^4.1.0",
61+
"next-runtime-env": "1",
6162
"next-seo": "^4.28.1",
6263
"nextra": "2.0.1",
6364
"nextra-theme-docs": "^2.0.2",

packages/app/pages/_document.tsx

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { Head, Html, Main, NextScript } from 'next/document';
2+
3+
export default function Document() {
4+
return (
5+
<Html lang="en">
6+
<Head>
7+
<script src="/__ENV.js" />
8+
</Head>
9+
<body>
10+
<Main />
11+
<NextScript />
12+
</body>
13+
</Html>
14+
);
15+
}

packages/app/pages/benchmark.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
import BenchmarkPage from '@/BenchmarkPage';
22

33
export default BenchmarkPage;
4-
5-
export { getServerSideProps } from '@/emptyGetServerSideProps';

packages/app/pages/chart.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
import ChartPage from '@/DBChartPage';
22

33
export default ChartPage;
4-
5-
export { getServerSideProps } from '@/emptyGetServerSideProps';
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
import DashboardPage from '@/DBDashboardPage';
22

3-
export { getServerSideProps } from '@/emptyGetServerSideProps';
4-
53
export default DashboardPage;
-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
import DBDashboardPage from '@/DBDashboardPage';
22
export default DBDashboardPage;
3-
4-
export { getServerSideProps } from '@/emptyGetServerSideProps';

packages/app/pages/index.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
import LandingPage from '@/LandingPage';
22
export default LandingPage;
3-
4-
export { getServerSideProps } from '@/emptyGetServerSideProps';

packages/app/pages/join-team.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
import JoinTeamPage from '@/JoinTeamPage';
22

33
export default JoinTeamPage;
4-
5-
export { getServerSideProps } from '@/emptyGetServerSideProps';

packages/app/pages/login/index.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import AuthPage from '@/AuthPage';
22

3-
export { getServerSideProps } from '@/emptyGetServerSideProps';
4-
53
export default function Login() {
64
return (
75
<div>

packages/app/pages/register.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,3 @@ export default function Register() {
66
</div>
77
);
88
}
9-
10-
export { getServerSideProps } from '@/emptyGetServerSideProps';
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
import SearchPage from '@/DBSearchPage';
22

33
export default SearchPage;
4-
5-
export { getServerSideProps } from '@/emptyGetServerSideProps';

packages/app/pages/search/index.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
import SearchPage from '@/DBSearchPage';
22

33
export default SearchPage;
4-
5-
export { getServerSideProps } from '@/emptyGetServerSideProps';

packages/app/pages/services.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
import ServicesDashboardPage from '@/ServicesDashboardPage';
22
export default ServicesDashboardPage;
3-
4-
export { getServerSideProps } from '@/emptyGetServerSideProps';

packages/app/pages/team/index.tsx

-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
import TeamPage from '@/TeamPage';
22
export default TeamPage;
3-
4-
export { getServerSideProps } from '@/emptyGetServerSideProps';

packages/app/src/config.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import getConfig from 'next/config';
2-
3-
const { serverRuntimeConfig, publicRuntimeConfig } = getConfig();
1+
import { env } from 'next-runtime-env';
42

53
export const SERVER_URL =
64
process.env.NEXT_PUBLIC_SERVER_URL ?? 'http://localhost:8000'; // NEXT_PUBLIC_SERVER_URL can be empty string
@@ -10,11 +8,13 @@ export const CLICKHOUSE_HOST =
108
process.env.NEXT_PUBLIC_CLICKHOUSE_HOST ?? `${SERVER_URL}/clickhouse-proxy`;
119

1210
// ONLY USED IN LOCAL MODE
13-
// ex: HDX_LOCAL_DEFAULT_CONNECTIONS='[{"id":"local","name":"Demo","host":"https://demo-ch.hyperdx.io","username":"demo","password":"demo"}]' HDX_LOCAL_DEFAULT_SOURCES='[{"id":"l701179602","kind":"trace","name":"Demo Traces","connection":"local","from":{"databaseName":"default","tableName":"otel_traces"},"timestampValueExpression":"Timestamp","defaultTableSelectExpression":"Timestamp, ServiceName, StatusCode, round(Duration / 1e6), SpanName","serviceNameExpression":"ServiceName","eventAttributesExpression":"SpanAttributes","resourceAttributesExpression":"ResourceAttributes","traceIdExpression":"TraceId","spanIdExpression":"SpanId","implicitColumnExpression":"SpanName","durationExpression":"Duration","durationPrecision":9,"parentSpanIdExpression":"ParentSpanId","spanKindExpression":"SpanKind","spanNameExpression":"SpanName","logSourceId":"l-758211293","statusCodeExpression":"StatusCode","statusMessageExpression":"StatusMessage"},{"id":"l-758211293","kind":"log","name":"Demo Logs","connection":"local","from":{"databaseName":"default","tableName":"otel_logs"},"timestampValueExpression":"TimestampTime","defaultTableSelectExpression":"Timestamp, ServiceName, SeverityText, Body","serviceNameExpression":"ServiceName","severityTextExpression":"SeverityText","eventAttributesExpression":"LogAttributes","resourceAttributesExpression":"ResourceAttributes","traceIdExpression":"TraceId","spanIdExpression":"SpanId","implicitColumnExpression":"Body","traceSourceId":"l701179602"}]' yarn dev:local
14-
export const HDX_LOCAL_DEFAULT_CONNECTIONS =
15-
publicRuntimeConfig.hdxLocalDefaultConnections;
16-
export const HDX_LOCAL_DEFAULT_SOURCES =
17-
publicRuntimeConfig.hdxLocalDefaultSources;
11+
// ex: NEXT_PUBLIC_HDX_LOCAL_DEFAULT_CONNECTIONS='[{"id":"local","name":"Demo","host":"https://demo-ch.hyperdx.io","username":"demo","password":"demo"}]' NEXT_PUBLIC_HDX_LOCAL_DEFAULT_SOURCES='[{"id":"l701179602","kind":"trace","name":"Demo Traces","connection":"local","from":{"databaseName":"default","tableName":"otel_traces"},"timestampValueExpression":"Timestamp","defaultTableSelectExpression":"Timestamp, ServiceName, StatusCode, round(Duration / 1e6), SpanName","serviceNameExpression":"ServiceName","eventAttributesExpression":"SpanAttributes","resourceAttributesExpression":"ResourceAttributes","traceIdExpression":"TraceId","spanIdExpression":"SpanId","implicitColumnExpression":"SpanName","durationExpression":"Duration","durationPrecision":9,"parentSpanIdExpression":"ParentSpanId","spanKindExpression":"SpanKind","spanNameExpression":"SpanName","logSourceId":"l-758211293","statusCodeExpression":"StatusCode","statusMessageExpression":"StatusMessage"},{"id":"l-758211293","kind":"log","name":"Demo Logs","connection":"local","from":{"databaseName":"default","tableName":"otel_logs"},"timestampValueExpression":"TimestampTime","defaultTableSelectExpression":"Timestamp, ServiceName, SeverityText, Body","serviceNameExpression":"ServiceName","severityTextExpression":"SeverityText","eventAttributesExpression":"LogAttributes","resourceAttributesExpression":"ResourceAttributes","traceIdExpression":"TraceId","spanIdExpression":"SpanId","implicitColumnExpression":"Body","traceSourceId":"l701179602"}]' yarn dev:local
12+
export const HDX_LOCAL_DEFAULT_CONNECTIONS = env(
13+
'NEXT_PUBLIC_HDX_LOCAL_DEFAULT_CONNECTIONS',
14+
);
15+
export const HDX_LOCAL_DEFAULT_SOURCES = env(
16+
'NEXT_PUBLIC_HDX_LOCAL_DEFAULT_SOURCES',
17+
);
1818

1919
export const HDX_API_KEY = process.env.HYPERDX_API_KEY as string; // for nextjs server
2020
export const HDX_SERVICE_NAME =

packages/app/src/emptyGetServerSideProps.tsx

-7
This file was deleted.

yarn.lock

+10
Original file line numberDiff line numberDiff line change
@@ -4166,6 +4166,7 @@ __metadata:
41664166
msw-storybook-addon: "npm:^2.0.2"
41674167
next: "npm:13"
41684168
next-query-params: "npm:^4.1.0"
4169+
next-runtime-env: "npm:1"
41694170
next-seo: "npm:^4.28.1"
41704171
nextra: "npm:2.0.1"
41714172
nextra-theme-docs: "npm:^2.0.2"
@@ -20698,6 +20699,15 @@ __metadata:
2069820699
languageName: node
2069920700
linkType: hard
2070020701

20702+
"next-runtime-env@npm:1":
20703+
version: 1.7.4
20704+
resolution: "next-runtime-env@npm:1.7.4"
20705+
dependencies:
20706+
chalk: "npm:^4.1.2"
20707+
checksum: 10c0/fc169fd4c77cf610fe4e82a170638023a836f3e406efc62735bd9db5b8d63ba5a797037285d6608a9814375643c95ce97b8272f71911c7d7cd29e5b977350c79
20708+
languageName: node
20709+
linkType: hard
20710+
2070120711
"next-seo@npm:^4.28.1":
2070220712
version: 4.29.0
2070320713
resolution: "next-seo@npm:4.29.0"

0 commit comments

Comments
 (0)