diff --git a/README.md b/README.md
index f282ca1f8..cb1ed59f6 100644
--- a/README.md
+++ b/README.md
@@ -20,333 +20,7 @@ We continue to publish the following packages to npm:
### Feature matrix
-This section is auto generated. Please update `feature-matrix.json` and then run `npm run feature-matrix` from the repository's root to update it.
-
-
-
-
-
-
-
- ##### Question types (basic functionality)
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜⬜ 91\%
-
-
-
-
-| Feature
| Progress |
-| ---------------------------------------------------------- | :------: |
-| text | ✅ |
-| integer | ✅ |
-| decimal | ✅ |
-| note | ✅ |
-| select_one | ✅ |
-| select_multiple | ✅ |
-| select\_\*\_from_file | ✅ |
-| repeat | ✅ |
-| group | ✅ |
-| geopoint | ✅ |
-| geotrace | ✅ |
-| geoshape | ✅ |
-| start-geopoint | ✅ |
-| range | ✅ |
-| image | ✅ |
-| barcode | |
-| audio | ✅ |
-| background-audio | |
-| video | ✅ |
-| [file](https://github.com/getodk/web-forms/issues/370) | ✅ |
-| [date](https://github.com/getodk/web-forms/issues/311) | ✅ |
-| [time](https://github.com/getodk/web-forms/issues/590) | ✅ |
-| [datetime](https://github.com/getodk/web-forms/issues/697) | ✅ |
-| rank | ✅ |
-| csv-external | ✅ |
-| acknowledge | ✅ |
-| start | ✅ |
-| end | ✅ |
-| today | ✅ |
-| deviceid | ✅ |
-| username | ✅ |
-| phonenumber | ✅ |
-| email | ✅ |
-| audit | |
-
-
-
-
-
-
-
- ##### Appearances
🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜⬜⬜ 47\%
-
-
-
-
-| Feature
| Progress |
-| --------------------------------------------------------------- | :------: |
-| numbers | ✅ |
-| multiline | ✅ |
-| url | |
-| ex: | |
-| thousands-sep | ✅ |
-| bearing | |
-| [vertical](https://github.com/getodk/web-forms/issues/271) | |
-| [no-ticks](https://github.com/getodk/web-forms/issues/271) | |
-| picker | |
-| [rating](https://github.com/getodk/web-forms/issues/711) | ✅ |
-| new | |
-| new-front | |
-| draw | |
-| [annotate](https://github.com/getodk/web-forms/issues/15) | |
-| signature | |
-| [no-calendar](https://github.com/getodk/web-forms/issues/781) | |
-| [month-year](https://github.com/getodk/web-forms/issues/782) | ✅ |
-| [year](https://github.com/getodk/web-forms/issues/782) | ✅ |
-| [ethiopian](https://github.com/getodk/web-forms/issues/315) | |
-| [coptic](https://github.com/getodk/web-forms/issues/315) | |
-| [islamic](https://github.com/getodk/web-forms/issues/315) | |
-| [bikram-sambat](https://github.com/getodk/web-forms/issues/315) | |
-| [myanmar](https://github.com/getodk/web-forms/issues/315) | |
-| [persian](https://github.com/getodk/web-forms/issues/315) | |
-| placement-map | ✅ |
-| maps | ✅ |
-| hide-input | |
-| minimal | ✅ |
-| search / autocomplete | ✅ |
-| [quick](https://github.com/getodk/web-forms/issues/515) | |
-| columns-pack | ✅ |
-| columns | ✅ |
-| columns-n | ✅ |
-| no-buttons | ✅ |
-| image-map | |
-| likert | ✅ |
-| map | ✅ |
-| field-list | ✅ |
-| label | ✅ |
-| list-nolabel | ✅ |
-| list | ✅ |
-| table-list | ✅ |
-| counter | |
-| hidden-answer | |
-| printer | |
-| masked | ✅ |
-
-
-
-
-
-
-
- ##### Parameters
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜ 66\%
-
-
-
-
-| Feature
| Progress |
-| ---------------------------------------------------------------------------------------------------------------------------------- | :------: |
-| randomize | ✅ |
-| seed | ✅ |
-| value | ✅ |
-| label | ✅ |
-| rows | ✅ |
-| geopoint capture-accuracy,
warning-accuracy, allow-mock-accuracy | ✅ |
-| range start, end, step | ✅ |
-| [image max-pixels](https://github.com/getodk/web-forms/issues/397) | ✅ |
-| audio quality | |
-| Audit: location-priority,
location-min-interval, location-max-age,
track-changes, track-changes-reasons,
identify-user | |
-| [geotrace/shape incremental=true](https://github.com/getodk/web-forms/issues/562) | |
-| range labels, placeholder | |
-
-
-
-
-
-
-
- ##### Form logic
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 100\%
-
-
-
-
-| Feature
| Progress |
-| ----------------------------------------------- | :------: |
-| calculate | ✅ |
-| relevant | ✅ |
-| required | ✅ |
-| required message | ✅ |
-| custom constraint | ✅ |
-| constraint message | ✅ |
-| read only | ✅ |
-| dynamic defaults (including trigger
column) | ✅ |
-| choice filter | ✅ |
-| default | ✅ |
-| repeat_count | ✅ |
-| create or update Entities | ✅ |
-
-
-
-
-
-
-
- ##### Descriptions and annotations
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜⬜ 75\%
-
-
-
-
-| Feature
| Progress |
-| -------------------------------------------------------------- | :------: |
-| label | ✅ |
-| hint | ✅ |
-| [guidance hint](https://github.com/getodk/web-forms/issues/53) | |
-| form translations | ✅ |
-| form translations with ref to other
field | ✅ |
-| Markdown | ✅ |
-| Inline HTML | ✅ |
-| [image](https://github.com/getodk/web-forms/issues/30) | ✅ |
-| big-image | |
-| [audio](https://github.com/getodk/web-forms/issues/30) | ✅ |
-| [video](https://github.com/getodk/web-forms/issues/30) | ✅ |
-| autoplay | |
-
-
-
-
-
-
-
- ##### Theme and layouts
🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 30\%
-
-
-
-
-| Feature
| Progress |
-| -------------------------------------------------------------------------- | :------: |
-| [grid](https://github.com/getodk/web-forms/issues/16) | |
-| [pages](https://github.com/getodk/web-forms/issues/254) | |
-| [logo](https://github.com/getodk/web-forms/issues/353) | |
-| [application translations](https://github.com/getodk/web-forms/issues/332) | |
-| [theme color](https://github.com/getodk/web-forms/issues/43) | |
-| preview form | ✅ |
-| send instance | ✅ |
-| view instance | |
-| edit instance | ✅ |
-| table of contents | |
-
-
-
-
-
-
-
- ##### XPath
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩⬜ 98\%
-
-
-
-
-| Feature
| Progress |
-| ------------------------------------------------------------------------------------------------------------- | :------: |
-| operators | ✅ |
-| predicates | ✅ |
-| axes | ✅ |
-| string(\* arg) | ✅ |
-| concat(string arg*\|node-set arg*) | ✅ |
-| join(string separator, node-set nodes\*) | ✅ |
-| substr(string value, number start,
number end?) | ✅ |
-| substring-before(string, string) | ✅ |
-| substring-after(string, string) | ✅ |
-| translate(string, string, string) | ✅ |
-| string-length(string arg) | ✅ |
-| normalize-space(string arg?) | ✅ |
-| contains(string haystack, string needle) | ✅ |
-| starts-with(string haystack, string
needle) | ✅ |
-| ends-with(string haystack, string
needle) | ✅ |
-| uuid(number?) | ✅ |
-| digest(string src, string algorithm,
string encoding?) | ✅ |
-| pulldata(string instance_id, string
desired_element, string query_element,
string query) | ✅ |
-| if(boolean condition, _ then, _ else) | ✅ |
-| coalesce(string arg1, string arg2) | ✅ |
-| once(string calc) | ✅ |
-| true() | ✅ |
-| false() | ✅ |
-| boolean(\* arg) | ✅ |
-| boolean-from-string(string arg) | ✅ |
-| not(boolean arg) | ✅ |
-| regex(string value, string expression) | ✅ |
-| checklist(number min, number max, string
v\*) | ✅ |
-| weighted-checklist(number min, number
max, [string v, string w]\*) | ✅ |
-| number(\* arg) | ✅ |
-| random() | ✅ |
-| int(number arg) | ✅ |
-| sum(node-set arg) | ✅ |
-| max(node-set arg\*) | ✅ |
-| min(node-set arg\*) | ✅ |
-| round(number arg, number decimals?) | ✅ |
-| pow(number value, number power) | ✅ |
-| log(number arg) | ✅ |
-| log10(number arg) | ✅ |
-| abs(number arg) | ✅ |
-| sin(number arg) | ✅ |
-| cos(number arg) | ✅ |
-| tan(number arg) | ✅ |
-| asin(number arg) | ✅ |
-| acos(number arg) | ✅ |
-| atan(number arg) | ✅ |
-| atan2(number arg, number arg) | ✅ |
-| sqrt(number arg) | ✅ |
-| exp(number arg) | ✅ |
-| exp10(number arg) | ✅ |
-| pi() | ✅ |
-| count(node-set arg) | ✅ |
-| count-non-empty(node-set arg) | ✅ |
-| position(node arg?) | ✅ |
-| instance(string id) | ✅ |
-| current() | ✅ |
-| randomize(node-set arg, number seed) | ✅ |
-| today() | ✅ |
-| now() | ✅ |
-| format-date(date value, string format) | ✅ |
-| format-date-time(dateTime value, string
format) | ✅ |
-| date(\* value) | ✅ |
-| decimal-date-time(dateTime value) | ✅ |
-| decimal-time(time value) | ✅ |
-| selected(string list, string value) | ✅ |
-| selected-at(string list, number index) | ✅ |
-| count-selected(node node) | ✅ |
-| jr:choice-name(node node, string value) | ✅ |
-| jr:itext(string id) | ✅ |
-| indexed-repeat(node-set arg, node-set
repeat1, number index1, [node-set
repeatN, number indexN]{0,2}) | ✅ |
-| area(node-set ns\|geoshape gs) | ✅ |
-| distance(node-set ns\|geoshape
gs\|geotrace gt\|(geopoint\|string)
arg\*) | ✅ |
-| geofence(geopoint p, geoshape gs) | ✅ |
-| base64-decode(base64Binary input) | ✅ |
-| [intersects(geoshape gs\|geotrace gt)](https://github.com/getodk/web-forms/issues/572) | |
-
-
-
-
-
-
-
- ##### Misc
⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0\%
-
-
-
-
-| Feature
| Progress |
-| -------------------------------------------------------------------------------- | :------: |
-| [last saved instance](https://github.com/getodk/web-forms/issues/306) | |
-| [defaults from query parameters](https://github.com/getodk/web-forms/issues/464) | |
-| multi-form app-like experience | |
-| [prevent multiple submissions](https://github.com/getodk/web-forms/issues/461) | |
-| configure end of form experience | |
-| save as draft | |
-| offline entities | |
-| MBtiles / offline map layers | |
-| [submission encryption](https://github.com/getodk/web-forms/issues/448) | |
-
-
-
-
+The Feature Matrix has moved. View the updated version [here](https://github.com/getodk/central-frontend/tree/master/packages/web-forms#feature-matrix).
## Q&A