When an author pushes new commits, Assert shows what changed since your last
review. It tracks the code you’ve already read, even across rebases and
force-pushes.
Mark code reviewed with R as you read. This saves your progress and enables
comparison with your last review when new commits arrive.Choose Since your last review in the review header to see only the changes
since your last pass. Mark the updated code reviewed as you go.Turn the comparison off to see the full diff again.
Use the comparison menu beside Since your last review to compare against an
earlier version. This is useful when you join a review in progress or want to see
how the code changed over several rounds.
Submit your review to post your feedback
and verdict to GitHub. Your reading progress is saved between passes.If the base branch has also moved, check the merge candidate
to see the PR merged with it.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Assert Docs","colors":{"primary":"#D6C96A","light":"#F5F1D1","dark":"#D6C96A"},"logo":{"light":"https://mintcdn.com/assertlabs/b_DqMAWhUdx9gw7L/logo/light.svg?fit=max\u0026auto=format\u0026n=b_DqMAWhUdx9gw7L\u0026q=85\u0026s=c2b9548e5a185c34f62eb02fc49d832c","dark":"https://mintcdn.com/assertlabs/b_DqMAWhUdx9gw7L/logo/dark.svg?fit=max\u0026auto=format\u0026n=b_DqMAWhUdx9gw7L\u0026q=85\u0026s=950858be2ba7048b52a06ffdf0d1aecb"},"favicon":"https://mintcdn.com/assertlabs/b_DqMAWhUdx9gw7L/favicon.svg?fit=max\u0026auto=format\u0026n=b_DqMAWhUdx9gw7L\u0026q=85\u0026s=5044de9326047442b45df1aa581b052c","navbar":{"links":[{"href":"mailto:support@assert.dev","label":"Support"}],"primary":{"type":"button","label":"Sign in","href":"https://app.assert.dev"}},"footer":{"socials":{"github":"https://github.com/Assert-Labs","x":"https://x.com/assert_labs","website":"https://assert.dev"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"assertlabs","hasAudioNarration":false,"actualSubdomain":"assertlabs","customDomains":["docs.assert.dev"],"gitSource":{"type":"github","owner":"assert-labs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ac939f247ff6d1db7a5b1a7","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Reviewing code","count":8},{"language":"default","tag":"Integrations","count":5},{"language":"default","tag":"Getting started","count":3},{"language":"default","tag":"Reference","count":1}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"reviewing/re-review","slug":"/reviewing/re-review","pageMetadata":{"title":"Re-review","description":"See what changed since your last review","href":"/reviewing/re-review"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"See what changed since your last review\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`When an author pushes new commits, Assert shows what changed since your last\nreview. It tracks the code you’ve already read, even across rebases and\nforce-pushes.`}),`\n`,_jsx(Heading,{level:`2`,id:`changes-since-your-last-review`,children:`Changes since your last review`}),`\n`,_jsxs(_components.p,{children:[`Mark code reviewed with `,_jsx(_components.strong,{children:`R`}),` as you read. This saves your progress and enables\ncomparison with your last review when new commits arrive.`]}),`\n`,_jsxs(_components.p,{children:[`Choose `,_jsx(_components.strong,{children:`Since your last review`}),` in the review header to see only the changes\nsince your last pass. Mark the updated code reviewed as you go.`]}),`\n`,_jsx(_components.p,{children:`Turn the comparison off to see the full diff again.`}),`\n`,_jsx(Heading,{level:`2`,id:`comparing-earlier-versions`,children:`Comparing earlier versions`}),`\n`,_jsxs(_components.p,{children:[`Use the comparison menu beside `,_jsx(_components.strong,{children:`Since your last review`}),` to compare against an\nearlier version. This is useful when you join a review in progress or want to see\nhow the code changed over several rounds.`]}),`\n`,_jsx(Heading,{level:`2`,id:`submitting`,children:`Submitting`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/reviewing/comments#finish-your-review`,children:`Submit your review`}),` to post your feedback\nand verdict to GitHub. Your reading progress is saved between passes.`]}),`\n`,_jsxs(_components.p,{children:[`If the base branch has also moved, check the `,_jsx(_components.a,{href:`/reviewing/merge-candidates`,children:`merge candidate`}),`\nto see the PR merged with it.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Re-review","description":"See what changed since your last review","href":"/reviewing/re-review"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Changes since your last review","slug":"changes-since-your-last-review","depth":2,"children":[]},{"title":"Comparing earlier versions","slug":"comparing-earlier-versions","depth":2,"children":[]},{"title":"Submitting","slug":"submitting","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"assertlabs","siteName":"Assert Docs","title":"Re-review - Assert Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-09T19:01:09.908Z","originalFileLocation":"reviewing/re-review.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"See what changed since your last review\">\u003cmeta data-mint-head name=\"application-name\" content=\"Assert Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Re-review - Assert Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"See what changed since your last review\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Assert Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.assert.dev/reviewing/re-review\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://assertlabs.mintlify.site/_mintlify/api/og/v2?division=Reviewing+code\u0026amp;title=Re-review\u0026amp;description=See+what+changed+since+your+last+review\u0026amp;theme=28f9e55f5c33ac7c20726ddb\u0026amp;signature=f7983174cbdfe881288a8fd6a38587f1b870da3e09fd55bd22e1da2a534bc4c5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Re-review - Assert Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"See what changed since your last review\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://assertlabs.mintlify.site/_mintlify/api/og/v2?division=Reviewing+code\u0026amp;title=Re-review\u0026amp;description=See+what+changed+since+your+last+review\u0026amp;theme=28f9e55f5c33ac7c20726ddb\u0026amp;signature=f7983174cbdfe881288a8fd6a38587f1b870da3e09fd55bd22e1da2a534bc4c5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/assertlabs/Cnvrn8UxdetOhFZ0/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Assert Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#D6C96A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.assert.dev/reviewing/re-review\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/reviewing/re-review.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.assert.dev/#organization\",\"name\":\"Assert Docs\",\"url\":\"https://docs.assert.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/assertlabs/b_DqMAWhUdx9gw7L/logo/light.svg?fit=max\u0026auto=format\u0026n=b_DqMAWhUdx9gw7L\u0026q=85\u0026s=c2b9548e5a185c34f62eb02fc49d832c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.assert.dev#website\",\"name\":\"Assert Docs\",\"url\":\"https://docs.assert.dev\",\"publisher\":{\"@id\":\"https://docs.assert.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.assert.dev/reviewing/re-review#webpage\",\"url\":\"https://docs.assert.dev/reviewing/re-review\",\"name\":\"Re-review\",\"description\":\"See what changed since your last review\",\"dateModified\":\"2026-10-09T19:01:09.908Z\",\"isPartOf\":{\"@id\":\"https://docs.assert.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.assert.dev/reviewing/re-review#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.assert.dev/reviewing/re-review#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Reviewing code\",\"item\":\"https://docs.assert.dev/reviewing/clusters\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Re-review\",\"item\":\"https://docs.assert.dev/reviewing/re-review\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.assert.dev/reviewing/re-review#article\",\"headline\":\"Re-review\",\"name\":\"Re-review\",\"description\":\"See what changed since your last review\",\"url\":\"https://docs.assert.dev/reviewing/re-review\",\"mainEntityOfPage\":{\"@id\":\"https://docs.assert.dev/reviewing/re-review#webpage\"},\"dateModified\":\"2026-10-09T19:01:09.908Z\",\"publisher\":{\"@id\":\"https://docs.assert.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.assert.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Assert Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Assert Docs","nav":{"global":null,"groups":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/index"},{"title":"Sign Up","href":"/signup"},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Reviewing code","pages":[{"title":"Reviewable Units","href":"/reviewing/clusters"},{"title":"Cluster Customization","href":"/reviewing/cluster-customization"},{"title":"UI Previews","href":"/reviewing/previews"},{"title":"Merge Candidates","description":"Review a pull request merged with the latest base branch","href":"/reviewing/merge-candidates"},{"title":"Re-review","href":"/reviewing/re-review"},{"title":"Comments","description":"Leave comments and suggestions, and submit reviews","href":"/reviewing/comments"},{"title":"Chat About a Pull Request","href":"/reviewing/chat"},{"title":"Navigation","href":"/reviewing/navigation"}]},{"group":"Integrations","pages":[{"title":"GitHub","icon":"github","href":"/integrations/github"},{"title":"Review Locally","icon":"terminal","href":"/integrations/local-review"},{"title":"Cloud Agents","icon":"robot","href":"/integrations/agents"},{"title":"MCP","icon":"plug","href":"/integrations/mcp"},{"title":"Personal Access Tokens","icon":"key","href":"/integrations/personal-access-token"}]},{"group":"Reference","pages":[{"title":"Keyboard Shortcuts","href":"/reference/keyboard-shortcuts"}]}]},"basePath":"","title":"Re-review - Assert Docs","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}