{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":135074940,"defaultBranch":"canary","name":"next.js","ownerLogin":"ijjk","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2018-05-27T19:20:30.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/22380829?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1726696233.0","currentOid":""},"activityList":{"items":[{"before":"6e74a6543d04c689ac2b626dacfaf50fd35df955","after":null,"ref":"refs/heads/ijjk/add-provided-paths","pushedAt":"2024-09-18T21:50:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"6e74a6543d04c689ac2b626dacfaf50fd35df955","ref":"refs/heads/ijjk/add-provided-paths","pushedAt":"2024-09-18T21:28:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Re-add internal env for providing page paths","shortMessageHtmlLink":"Re-add internal env for providing page paths"}},{"before":"d2a17d945cad1417ac0d0757a30912317d0d3543","after":"77d0f51c71716b7ef9b2dec0e2e7522d73246cf8","ref":"refs/heads/canary","pushedAt":"2024-09-17T21:47:07.000Z","pushType":"push","commitsCount":15,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Fix: (third-parties) sendGTMEvent not queueing events before GTM init (#68683)\n\n\r\n\r\n### What?\r\n\r\nsendGTMEvent pushes items to window.datalayer. THe GoogleTagManger (GTM)\r\nclient uses this to know what events to the GTM server.\r\n\r\ncurrently if GTM is not ready, instead of adding events to the\r\ndataLayer, it writes a warning to the console saying GTM is not ready.\r\n\r\nThe PR fixes that by defining the dataLayer if it is undefined so it can\r\nstart to queue up events before GTM is ready\r\n\r\n\r\nhttps://developers.google.com/tag-platform/tag-manager/datalayer#how_data_layer_information_is_processed\r\n\r\n### Why?\r\n\r\nIf GTM init is slow we don't want to loose any events that we want to\r\nsend before GTM init has happened we want to queue them up in the\r\ndataLayer\r\n\r\nAnother use case for this behaviour, is that you can optionally\r\ninitialise GoogleTagManager based on environment so you don't pollute\r\nGTM data when developing or running playright tests, but you can still\r\nevaluate what exists on the dataLayer to test if the correct events\r\nwould be sent to GTM after testing interactions with the app.\r\n\r\n### How?\r\n\r\nThe PR fixes that by defining the dataLayer if it is undefined so it can\r\nstart to queue up events before GTM is ready\r\n\r\nFixes #\r\n\r\nfixes #66865 (discussion)\r\nfixes #68678 (issue)\r\n\r\n---------\r\n\r\nCo-authored-by: JJ Kasper ","shortMessageHtmlLink":"Fix: (third-parties) sendGTMEvent not queueing events before GTM init ("}},{"before":"b820e3745e67f9382039a17b9e2d60285b32c652","after":null,"ref":"refs/heads/ijjk/batch-revalidate-tag","pushedAt":"2024-09-17T16:46:00.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":"0ca36f4be97a00096b926e54cb6a2829b2ce09c7","after":"b820e3745e67f9382039a17b9e2d60285b32c652","ref":"refs/heads/ijjk/batch-revalidate-tag","pushedAt":"2024-09-17T15:54:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"lint","shortMessageHtmlLink":"lint"}},{"before":"6e693c9bf48c63d44632b22af8bda1d63a90f1c3","after":"0ca36f4be97a00096b926e54cb6a2829b2ce09c7","ref":"refs/heads/ijjk/batch-revalidate-tag","pushedAt":"2024-09-17T15:49:03.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Merge branch 'ijjk/batch-revalidate-tag' of github.com:ijjk/next.js into ijjk/batch-revalidate-tag","shortMessageHtmlLink":"Merge branch 'ijjk/batch-revalidate-tag' of github.com:ijjk/next.js i…"}},{"before":"e8e631fa8c3a776eed07a44e49f01e7be823160d","after":"6e693c9bf48c63d44632b22af8bda1d63a90f1c3","ref":"refs/heads/ijjk/batch-revalidate-tag","pushedAt":"2024-09-17T15:48:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Apply suggestions from code review\n\nCo-authored-by: Kelly Davis ","shortMessageHtmlLink":"Apply suggestions from code review"}},{"before":null,"after":"e8e631fa8c3a776eed07a44e49f01e7be823160d","ref":"refs/heads/ijjk/batch-revalidate-tag","pushedAt":"2024-09-17T15:31:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Ensure we chunk revalidate tag requests","shortMessageHtmlLink":"Ensure we chunk revalidate tag requests"}},{"before":"6a69c358ecfc6f293676b2110a88fe3004166ea8","after":"d2a17d945cad1417ac0d0757a30912317d0d3543","ref":"refs/heads/canary","pushedAt":"2024-09-16T21:19:42.000Z","pushType":"push","commitsCount":22,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Fix startTime error on Android 9 with Chrome 74 (#67391)\n\n### What?\r\n\r\nFixes the error `Cannot read property 'startTime' of null` on Chrome 74\r\nfor Android 9 by ensuring the `beforeHydrationMeasure` and\r\n`hydrationMeasure` are not falsy values before accessing their\r\nproperties.\r\n\r\n\"Screenshot\r\n\r\n### Why?\r\n\r\nThe application crashes on Chrome 74 for Android 9 due to `null` or\r\nother falsy values being returned in certain situations. This fix\r\nensures that the `startTime` property is only accessed if it is not a\r\nfalsy value, thereby preventing the crash.\r\n\r\n### How?\r\n\r\nAdded a falsy check before accessing the `startTime` property in the\r\nperformance measurement logic. Specifically, modified the code at [this\r\nlocation](https://github.com/vercel/next.js/blob/b9bd23baec14508400c502b3651f4cf2497e883b/packages/next/src/client/index.tsx#L498)\r\n\r\nCo-authored-by: JJ Kasper ","shortMessageHtmlLink":"Fix startTime error on Android 9 with Chrome 74 (vercel#67391)"}},{"before":"013e09f7bbaab894bb1b71c4050218a2570eff35","after":"6a69c358ecfc6f293676b2110a88fe3004166ea8","ref":"refs/heads/canary","pushedAt":"2024-09-16T18:20:35.000Z","pushType":"push","commitsCount":63,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Fix eslint root dirs test on Windows (#70160)\n\nThe root dirs tests have been failing on Windows since\r\nhttps://github.com/vercel/next.js/pull/68773 so this fixes to ensure we\r\nnormalize the slashes passed to `fast-glob` so it looks up as expected.\r\n\r\nx-ref:\r\nhttps://dev.azure.com/nextjs/next.js/_build/results?buildId=98629&view=logs&j=8af7cf9c-43a1-584d-6f5c-57bad8880974&t=7ae70e63-3625-50f4-6764-5b3e72b4bd7a","shortMessageHtmlLink":"Fix eslint root dirs test on Windows (vercel#70160)"}},{"before":"f5a61802bbbc438d716e955eefc6563a3bef7aaa","after":null,"ref":"refs/heads/ijjk/fix-eslint-windows","pushedAt":"2024-09-16T18:12:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"f5a61802bbbc438d716e955eefc6563a3bef7aaa","ref":"refs/heads/ijjk/fix-eslint-windows","pushedAt":"2024-09-16T17:57:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Fix eslint root dirs test on Windows","shortMessageHtmlLink":"Fix eslint root dirs test on Windows"}},{"before":"e2839fd12c9e4010def6a321ae25162690c384c6","after":null,"ref":"refs/heads/ijjk/empty-ts-config","pushedAt":"2024-09-13T22:24:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"e2839fd12c9e4010def6a321ae25162690c384c6","ref":"refs/heads/ijjk/empty-ts-config","pushedAt":"2024-09-13T20:38:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Merge branch 'canary' into k-taro56/canary","shortMessageHtmlLink":"Merge branch 'canary' into k-taro56/canary"}},{"before":"33afc0be5674cdb1bd5973d8fb73d5fae1119857","after":null,"ref":"refs/heads/ijjk/update-test-case","pushedAt":"2024-09-13T16:05:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"33afc0be5674cdb1bd5973d8fb73d5fae1119857","ref":"refs/heads/ijjk/update-test-case","pushedAt":"2024-09-13T16:04:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Fix failing test case","shortMessageHtmlLink":"Fix failing test case"}},{"before":"f31c5740fd28cac7444de3db253742156fed2c9f","after":null,"ref":"refs/heads/ijjk/add-incremental-meta","pushedAt":"2024-09-13T15:18:02.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"f31c5740fd28cac7444de3db253742156fed2c9f","ref":"refs/heads/ijjk/add-incremental-meta","pushedAt":"2024-09-12T19:08:11.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Update experimental trace tracking","shortMessageHtmlLink":"Update experimental trace tracking"}},{"before":"864e6a5b5eae6fa7010ba26892baa4a47067228a","after":"013e09f7bbaab894bb1b71c4050218a2570eff35","ref":"refs/heads/canary","pushedAt":"2024-09-12T17:02:20.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Update font data (#70003)\n\nThis auto-generated PR updates font data with latest available\r\n\r\nCo-authored-by: vercel-release-bot ","shortMessageHtmlLink":"Update font data (vercel#70003)"}},{"before":"29454f03657821e52958b5e09435caf5bbf82408","after":"864e6a5b5eae6fa7010ba26892baa4a47067228a","ref":"refs/heads/canary","pushedAt":"2024-09-11T21:49:43.000Z","pushType":"push","commitsCount":49,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Remove invalid fallback revalidate value (#69990)\n\nThis removes our invalid revalidate default fallback when a revalidate\r\nvalue isn't returned from render as render should always return a valid\r\nvalue. We also already have an invariant when an invalid revalidate\r\nvalue is returned we just need to ensure that case could be hit\r\nproperly. This also fixes some invalid test cases which were sending\r\ninvalid headers.\r\n\r\nx-ref: [slack\r\nthread](https://vercel.slack.com/archives/C0676QZBWKS/p1726061828198529?thread_ts=1720714625.621179&cid=C0676QZBWKS)","shortMessageHtmlLink":"Remove invalid fallback revalidate value (vercel#69990)"}},{"before":"9435b7b9602136aeac77f5ff55bb553dcaa2b01a","after":"29454f03657821e52958b5e09435caf5bbf82408","ref":"refs/heads/canary","pushedAt":"2024-09-09T18:29:50.000Z","pushType":"push","commitsCount":91,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"fix: remove unnecessary console in `isDynamicPostpone` (#69457)\n\n### What?\r\n\r\nRemove `console.log(err)` in `isDynamicPostpone`, I think this should be\r\na debug console that was accidentally left behind.\r\n\r\n### Why?\r\n\r\nThis will cause meaningless logs to appear in the console when we use\r\nthe `unstable_rethrow` API.\r\n\r\nCo-authored-by: JJ Kasper ","shortMessageHtmlLink":"fix: remove unnecessary console in isDynamicPostpone (vercel#69457)"}},{"before":"afb7d8c1f95f3a863a7a0964a19c85ab3fe8ef4f","after":null,"ref":"refs/heads/ijjk/cache-control-modifying","pushedAt":"2024-09-09T18:09:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"afb7d8c1f95f3a863a7a0964a19c85ab3fe8ef4f","ref":"refs/heads/ijjk/cache-control-modifying","pushedAt":"2024-09-09T18:08:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"update test","shortMessageHtmlLink":"update test"}},{"before":"c29447a00a9b3685759c58267b647e1a42db3c71","after":null,"ref":"refs/heads/ijjk/fix-middleware-fallback-false","pushedAt":"2024-09-06T20:30:30.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"c29447a00a9b3685759c58267b647e1a42db3c71","ref":"refs/heads/ijjk/fix-middleware-fallback-false","pushedAt":"2024-09-06T19:50:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Fix middleware fallback: false case","shortMessageHtmlLink":"Fix middleware fallback: false case"}},{"before":"03d250157b54101142c0c48b61c887d50af61d41","after":null,"ref":"refs/heads/ijjk/update-preview-binaries","pushedAt":"2024-09-04T20:00:49.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"03d250157b54101142c0c48b61c887d50af61d41","ref":"refs/heads/ijjk/update-preview-binaries","pushedAt":"2024-09-04T19:56:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Update the preview tarball binaries","shortMessageHtmlLink":"Update the preview tarball binaries"}},{"before":"485497d943f8e8a55ec3fff74bb313a4bab5053e","after":"9435b7b9602136aeac77f5ff55bb553dcaa2b01a","ref":"refs/heads/canary","pushedAt":"2024-09-03T21:26:49.000Z","pushType":"push","commitsCount":314,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Allow external image urls with _next/image pathname to be rendered via Image component (#69586)\n\n### What?\r\nFixes #69456 which describes an issue with `next/image` component, where\r\nan external image containing `_next/image` in the URL fails with the\r\nerror `\"url\" parameter cannot be recursive`.\r\n\r\n### Why?\r\nThe `next/image` component should be able to render images from\r\nconfigured hostnames without doing the recursive check.\r\n\r\n### How?\r\nBefore checking for the existence of `_next/image` substring in the\r\nimage's path, we can simply check if the image is an external URL that\r\ncomes from a preconfigured host in the `next.config.js` file.\r\n\r\nExample:\r\n\"image\"\r\nsrc=\"https://github.com/user-attachments/assets/8d5c99cf-f050-40a9-b5a4-ba961b83f037\"\r\n\r\n---------\r\n\r\nCo-authored-by: Steven ","shortMessageHtmlLink":"Allow external image urls with _next/image pathname to be rendered vi…"}},{"before":"d8d037b440884ebe4e772d57c9da9b80fe252362","after":null,"ref":"refs/heads/ijjk/update-devlow-forks","pushedAt":"2024-09-03T19:28:51.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"}},{"before":null,"after":"d8d037b440884ebe4e772d57c9da9b80fe252362","ref":"refs/heads/ijjk/update-devlow-forks","pushedAt":"2024-09-03T19:03:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ijjk","name":"JJ Kasper","path":"/ijjk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/22380829?s=80&v=4"},"commit":{"message":"Skip devlow benchmark step for forks","shortMessageHtmlLink":"Skip devlow benchmark step for forks"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOFQyMTo1MDozMy4wMDAwMDBazwAAAAS6MYJV","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xOFQyMTo1MDozMy4wMDAwMDBazwAAAAS6MYJV","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wM1QxOTowMzozOC4wMDAwMDBazwAAAASr7qeQ"}},"title":"Activity · ijjk/next.js"}